Créer des listes de validation de données à partir d’une plage, Excel VBA
Voici un exemple de code VBA détaillé pour créer des listes de validation de données à partir d’une plage dans Excel. Ce script permet de sélectionner une plage de données à utiliser comme source pour une liste de validation, puis d’appliquer cette validation à une ou plusieurs cellules d’une autre plage.
Objectif
- Utiliser une plage de données existante pour créer une liste déroulante (validation de données) dans une autre plage.
- Appliquer la validation de données à une plage de cellules définie.
Code VBA détaillé
Sub CreerValidationListe() Dim PlageSource As Range Dim PlageDest As Range Dim PlageValidation As Range Dim Cell As Range ' Définir la plage source (les données qui serviront pour la liste déroulante) ' Exemple: A1:A10 contient les valeurs pour la validation de données Set PlageSource = Range("A1:A10") ' Définir la plage destination (les cellules où vous voulez appliquer la validation) ' Exemple: B1:B10 sera la plage de cellules où vous voulez appliquer la validation de données Set PlageDest = Range("B1:B10") ' Effacer les validations précédentes dans la plage de destination PlageDest.Validation.Delete ' Appliquer la validation de données avec la plage source With PlageDest.Validation .Delete ' Supprimer toute validation existante .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=" & PlageSource.Address(, , , True) .IgnoreBlank = True .InCellDropdown = True ' Crée une liste déroulante dans la cellule .ShowInput = True .ShowError = True End With ' Facultatif: Afficher un message de confirmation MsgBox "Validation de données créée à partir de " & PlageSource.Address, vbInformation End Sub
Explication du code
1. Définition des plages :
- PlageSource : Il s’agit de la plage de cellules qui contient les données utilisées pour la liste déroulante. Ici, c’est Range(« A1:A10 »), ce qui signifie que les cellules A1 à A10 seront utilisées comme source.
- PlageDest : C’est la plage où vous souhaitez appliquer la validation de données. Dans cet exemple, cela correspond à Range(« B1:B10 »), soit les cellules B1 à B10.
2. Effacer les validations précédentes :
- PlageDest.Validation.Delete permet de supprimer toutes les validations de données précédemment appliquées dans la plage de destination. Cela garantit que nous n’avons pas de conflits de validation.
3. Appliquer la validation de données :
- Le bloc With PlageDest.Validation permet de définir et appliquer la validation de données aux cellules de PlageDest.
- .Add est utilisé pour définir la validation. Ici, nous spécifions que nous utilisons une liste (xlValidateList) et que la liste des valeurs provient de PlageSource. Formula1:= »= » & PlageSource.Address(, , , True) permet de faire référence à la plage source en utilisant son adresse sous forme de chaîne.
- .InCellDropdown = True crée une liste déroulante dans les cellules de la plage de destination.
4. Affichage d’un message de confirmation :
- Un message apparaît pour confirmer que la validation de données a été créée à partir de la plage source. Cela peut être utile pour l’utilisateur.
Personnalisation du code
- Changer la plage source : Vous pouvez modifier la plage Range(« A1:A10 ») pour qu’elle corresponde à la plage de votre choix contenant les valeurs pour la validation.
- Changer la plage destination : Modifiez Range(« B1:B10 ») pour définir la plage de cellules où vous souhaitez appliquer la validation de données.
- Ajouter des fonctionnalités supplémentaires : Vous pouvez ajouter des fonctionnalités pour personnaliser le message d’entrée (via .InputMessage) ou d’erreur (via .ErrorMessage).
Exemple d’utilisation
Si vous avez une liste de catégories dans les cellules A1 à A10 (comme « Fruit », « Légume », « Viande », etc.), ce code vous permettra de créer une liste déroulante dans les cellules B1 à B10 avec ces valeurs, afin que l’utilisateur puisse sélectionner une valeur parmi celles-ci.
Conclusion
Ce script VBA vous permet de créer facilement des listes de validation de données dans Excel à partir d’une plage de données spécifique. Il est entièrement personnalisable selon vos besoins et peut être étendu pour inclure des fonctionnalités supplémentaires comme des messages d’alerte ou la gestion des erreurs.