Limitation de la saisie par heure de la journée (Microsoft Excel)
Steven doit s’assurer que personne n’entre dans une feuille de travail entre 16 h 00 et 18 h 30 chaque jour. Il se demande s’il est possible d’utiliser la validation des données pour empêcher un utilisateur de saisir des informations dans une feuille de calcul à une heure particulière de la journée.
Il existe deux façons générales de procéder. Une approche consiste à utiliser la validation des données pour vérifier l’heure et autoriser ou interdire la saisie de données.
-
Sélectionnez toutes les cellules de la feuille de calcul.
-
Affichez l’onglet Données du ruban.
-
Cliquez sur l’outil de validation des données dans le groupe Outils de données. Excel affiche la boîte de dialogue Validation des données. (Voir la figure 1.)
-
À l’aide de la liste déroulante Autoriser, choisissez Personnalisé.
-
Entrez ce qui suit dans la case Formule:
-
Apportez les modifications souhaitées dans l’onglet Alerte d’erreur.
-
Cliquez sur OK.
Le problème avec cette approche se situe dans la toute première étape: vous devez sélectionner toutes les cellules de la feuille de calcul afin d’empêcher la saisie de données dans l’une d’entre elles. De plus, si vous utilisez déjà la validation des données dans l’une des cellules, cette approche écrasera ces paramètres.
Pour ces raisons, il peut être préférable d’utiliser une approche macro-basée. Toutes ces approches peuvent utiliser des gestionnaires d’événements pour vérifier les modifications. Ce qui suit s’appuie sur l’événement Worksheet_Change, ce qui signifie qu’il est déclenché uniquement lorsque Excel détecte une modification dans la feuille de calcul.
Private Sub Worksheet_Change(ByVal Target As Range) Dim sMsg As String sMsg = "No entries allowed between 4:00 pm and 6:30 pm!" If Time >= "4:00:00 PM" And Time <= "6:30:00 PM" Then MsgBox sMsg, vbCritical With Application .EnableEvents = False .Undo ' This undoes the change the person made .EnableEvents = True End With End If End Sub
Essentiellement, chaque fois qu’il y a un changement dans la feuille de calcul, le gestionnaire vérifie s’il est entre 16h00 et 18h30. Si tel est le cas, une boîte de message s’affiche pour indiquer l’erreur, puis la méthode .Undo est utilisée pour annuler toute modification qui a été tentée.
Si vous préférez, vous pouvez adopter une approche différente et protéger la feuille de calcul si elle est dans le délai interdit:
Private Sub Worksheet_Activate() If Time >= "4:00:00 PM" And Time <= "6:30:00 PM" Then ActiveSheet.Protect MsgBox "Worksheet is protected." Else ActiveSheet.Unprotect MsgBox "You are free to edit now." End If End Sub
Le gestionnaire d’événements Worksheet_Activate est appelé chaque fois que la feuille de calcul est activée (sélectionnée). Si la feuille de calcul est activée à tout moment en dehors de la période interdite, elle n’est pas protégée. Bien sûr, l’utilisateur peut toujours déprotéger manuellement la feuille de calcul même pendant la période d’interdiction, c’est donc une bonne idée d’utiliser cette approche en conjonction avec une approche qui est déclenchée chaque fois qu’une modification est tentée, comme indiqué précédemment.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (13503) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.