Si vous utilisez les fonctionnalités de validation des données d’Excel, vous pouvez limiter ce qui entre dans une cellule, en fonction du contenu d’une autre cellule. Par exemple, vous pouvez facilement limiter ce qui entre dans la cellule A2 en fonction d’une date qui se trouve dans la cellule A1. Suivez ces étapes:

  1. Sélectionnez la cellule A2.

  2. Choisissez Validation dans le menu Données. Excel affiche la boîte de dialogue Validation des données.

  3. Assurez-vous que l’onglet Paramètres est affiché. (Voir la figure 1.)

  4. À l’aide de la liste déroulante Autoriser, choisissez Date.

  5. À l’aide de la liste déroulante Données, choisissez Supérieur ou égal à.

  6. Dans la zone Date de début, entrez = A1. Cela indique à Excel que la date doit être supérieure ou égale à la date de la cellule A1.

  7. Cliquez sur OK.

Désormais, chaque fois que vous essayez d’entrer une date dans la cellule A2 qui est antérieure à la date de la cellule A1, Excel affiche un message d’erreur et n’autorise pas la date à entrer.

Que se passe-t-il cependant lorsque vous souhaitez limiter les dates qui peuvent être saisies dans la cellule A1? Par exemple, si vous mettez la date 4/1/04 dans la cellule A1 et que vous voulez vous assurer que la prochaine date saisie dans A1 n’est pas antérieure au 4/1/04. Si vous mettez une date telle que 15/04/04 dans la cellule A1, ce serait OK, mais la prochaine fois que vous entrez une date dans la cellule A1, vous ne voulez pas qu’elle soit antérieure au 15/04/04. En d’autres termes, vous voulez vous assurer que la cellule A1 peut uniquement accepter des dates postérieures à la date actuellement dans A1.

C’est un peu plus collant. Si vous suivez les étapes ci-dessus mais sélectionnez la cellule A1 à l’étape 1, la validation des données ne fonctionnera pas. Pourquoi? Étant donné que la date que vous entrez dans la cellule A1 sera toujours supérieure ou égale à la date que vous entrez dans A1, Excel ne se compare pas à la date précédente dans A1 lors de la validation des données.

La seule façon de résoudre ce problème consiste à utiliser deux macros. Tout d’abord, placez la macro suivante dans un module normal:

Sub Date_Validation()

Dim dteDate As Date     Dim strDate As String

With Range("A1")

'   Memo original date         dteDate = CDate(.Text)

'   Create date string         strDate = Format(dteDate, "m\/d\/yy")

With .Validation         '   Delete old settings             .Delete         '   Set new data validation             .Add _               Type:=xlValidateDate, _               AlertStyle:=xlValidAlertStop, _               Operator:=xlGreaterEqual, _               Formula1:=strDate

.IgnoreBlank = False             .InCellDropdown = True             .InputTitle = ""

.ErrorTitle = "Invalid Date Entry"

.InputMessage = ""

.ErrorMessage = _               "Date is older than the previous date (" & _               dteDate & ")."

.ShowInput = True             .ShowError = True         End With     End With End Sub

Cette macro doit être appelée par une autre macro, celle-ci placée dans la fenêtre de code de la feuille de calcul, afin qu’elle soit déclenchée à chaque fois qu’il y a un changement dans la feuille de calcul:

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next     If Target = Range("A1") Then Date_Validation End Sub

Le fonctionnement de ces macros est vraiment très intéressant. Étant donné que vous placez ce dernier dans la fenêtre de code de la feuille de calcul, il se déclenche chaque fois qu’il y a une modification dans la feuille de calcul. Si la cellule modifiée est A1, la macro Date_Validation est exécutée.

La macro Date_Validation saisit la date de la cellule A1 et construit une règle de validation des données pour la cellule. C’est tout ce qu’il fait: définit une règle de validation des données qui ne permet pas de saisir une date dans la cellule qui est antérieure à la date actuellement dans la cellule.

La beauté de la macro est qu’une fois que la règle de validation de données est en vigueur, la prochaine fois que la cellule A1 est modifiée, la règle de validation de données est déclenchée avant le déclenchement de l’événement Worksheet_Change. Ainsi, la règle de validation des données garantit que seule une date supérieure à la date actuelle peut être saisie. Une fois la validation des données effacée, la macro se charge de réinitialiser la règle de validation des données, afin qu’elle se compare à la date nouvellement entrée.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (2960) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

link: / excelribbon-Limiting_Entry_of_Prior_Dates [Limitation de l’entrée des dates antérieures].