Automatiser les règles de validation des données, Excel VBA
Pour automatiser les règles de validation des données dans Excel à l’aide de VBA, vous pouvez créer des macros qui appliquent des règles spécifiques à certaines cellules ou plages de cellules. Voici un exemple détaillé qui explique comment automatiser les règles de validation des données avec VBA, y compris des règles simples comme la validation des nombres, des dates, et des listes déroulantes.
Objectifs du code VBA :
1. Appliquer une validation de données pour autoriser uniquement les nombres dans une cellule.
2. Appliquer une validation de données pour autoriser uniquement les dates dans une plage de cellules.
3. Créer une liste déroulante avec des options prédéfinies.
4. Ajouter des messages d’erreur personnalisés lorsque les règles de validation ne sont pas respectées.
Étape par étape :
1. Validation de données pour autoriser uniquement les nombres
Nous allons créer une validation de données dans une cellule (par exemple, A1) pour n’accepter que des nombres.
Sub ValidationNombres() ' Sélectionner la cellule A1 With Range("A1").Validation ' Supprimer toute validation existante .Delete ' Appliquer la validation de nombre entier .Add Type:=xlValidateWholeNumber, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, _ Formula1:="1", Formula2:="100" ' Message d'erreur personnalisé .ErrorMessage = "Veuillez entrer un nombre entre 1 et 100." .ShowError = True End With End Sub
Explication :
• Nous utilisons Range(« A1 »).Validation pour appliquer la validation sur la cellule A1.
• Type:=xlValidateWholeNumber spécifie que seuls des nombres entiers sont autorisés.
• Formula1:= »1″, Formula2:= »100″ définit que les nombres doivent être compris entre 1 et 100.
• .ErrorMessage définit un message d’erreur personnalisé.
• .ShowError = True affiche l’erreur si la donnée entrée ne respecte pas la règle.
2. Validation de données pour autoriser uniquement les dates
Nous appliquons une validation pour une plage de cellules (par exemple, B1:B10) afin que seules les dates soient autorisées.
Sub ValidationDates() ' Appliquer la validation sur la plage B1:B10 With Range("B1:B10").Validation ' Supprimer toute validation existante .Delete ' Appliquer la validation de date .Add Type:=xlValidateDate, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, _ Formula1:="01/01/2020", Formula2:="31/12/2025" ' Message d'erreur personnalisé .ErrorMessage = "Veuillez entrer une date entre le 01/01/2020 et le 31/12/2025." .ShowError = True End With End Sub
Explication :
• xlValidateDate définit la validation pour n’accepter que des dates.
• Formula1:= »01/01/2020″, Formula2:= »31/12/2025″ délimite la plage des dates valides.
• Le message d’erreur personnalisé s’affichera si l’utilisateur entre une valeur qui n’est pas une date ou si la date est en dehors de la plage définie.
3. Création d’une liste déroulante
Dans cet exemple, nous allons créer une liste déroulante dans la cellule C1 avec des choix prédéfinis : « Option 1 », « Option 2 », « Option 3 ».
Sub ListeDeroulante() ' Plage de cellules pour la liste déroulante With Range("C1").Validation ' Supprimer toute validation existante .Delete ' Créer la liste déroulante avec des valeurs fixes .Add Type:=xlValidateList, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, _ Formula1:="Option 1,Option 2,Option 3" ' Message d'erreur personnalisé .ErrorMessage = "Veuillez sélectionner une option parmi : Option 1, Option 2, Option 3." .ShowError = True End With End Sub Explication : • Nous utilisons xlValidateList pour spécifier qu'une liste déroulante doit être appliquée. • Formula1:="Option 1,Option 2,Option 3" définit les options disponibles dans la liste. • Si l'utilisateur entre quelque chose d'autre, un message d'erreur sera affiché avec le message défini. 4. Validation personnalisée avec une formule (par exemple, vérifier si un texte commence par une lettre spécifique) Supposons que vous souhaitez vérifier qu'un texte dans la cellule D1 commence par la lettre "A". vba Copier le code Sub ValidationTexte() ' Appliquer la validation sur la cellule D1 With Range("D1").Validation ' Supprimer toute validation existante .Delete ' Appliquer une validation personnalisée .Add Type:=xlValidateCustom, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, _ Formula1:="=Gauche(D1,1)=""A""" ' Message d'erreur personnalisé .ErrorMessage = "Le texte doit commencer par la lettre 'A'." .ShowError = True End With End Sub
Explication :
• Nous utilisons xlValidateCustom pour une validation avec une formule.
• Formula1:= »=Gauche(D1,1)= » »A » » » utilise la fonction GAUCHE pour vérifier si le premier caractère dans D1 est la lettre « A ».
• Si la condition n’est pas remplie, un message d’erreur personnalisé s’affiche.
Code complet pour une feuille Excel avec toutes les validations
Voici un code VBA complet qui regroupe toutes les validations décrites ci-dessus :
Sub AppliquerValidations() ' Validation des nombres dans la cellule A1 ValidationNombres ' Validation des dates dans la plage B1:B10 ValidationDates ' Liste déroulante dans la cellule C1 ListeDeroulante ' Validation de texte dans la cellule D1 ValidationTexte End Sub
Comment exécuter ce code :
1. Ouvrez Excel et appuyez sur Alt + F11 pour accéder à l’éditeur VBA.
2. Dans le menu de gauche, faites un clic droit sur « VBAProject (Nom_de_votre_classeur) », puis sélectionnez Insérer > Module.
3. Copiez et collez le code dans le module.
4. Fermez l’éditeur VBA.
5. Vous pouvez maintenant exécuter la macro en appuyant sur Alt + F8, puis en sélectionnant AppliquerValidations.
Conclusion
Ce code montre comment automatiser différentes règles de validation des données dans Excel en utilisant VBA. Vous pouvez personnaliser ces validations en fonction de vos besoins spécifiques, comme les plages de données, les types de données, ou les critères personnalisés.