Bug de la validation par liste
Nous avons déjà eu plusieurs fois l’occasion
dans ce blog de dire du mal de l’enregistrement des macros. Quand on enregistre
une macro, certaines actions ne sont tout simplement pas enregistrées. Pire
encore, certaines actions semblent s’enregistrer parfairement, on obtient bien
du code mais, quand on exécute la macro, on constate que le résultat obtenu est
totalement différent de l’objectif poursuivi.
Nous voyons ci-dessous le
dialogue de validation ainsi que la macro enregistrée. Nous notons, une fois de
plus, le caractère particulièrement verbeux de l’enregistrement de macro :
nous avons dans cette macro onze lignes de commandes, alors qu’une ligne unique
effectuerait le même travail :
C’est le cas en particulier
de macros liées à la commande « Convertir » et de certaines macros
liées à la commande « Trier ». Un très bel exemple de
dysfonctionnement de l’enregistrement de macro vous a déjà été fourni dans
l’article « ″Convertir en plage″ en VBA » du 26 octobre 2009.
Aujourd’hui, nous allons
chercher à enregistrer une commande toute simple, la définition de la cellule
active via la commande « Validation des données ».
Selection.Validation.Add Type:=xlValidateList,
AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:="Auto;Vélo;Avion"
Remarque – La seule autre
commande que l’on aurait pu garder, au cas où la cellule aurait pu contenir une
validation antérieure à détruire, aurait été Selection.Validation.Delete.
Le problème est que, quand on
exécute la macro enregistrée, au lieu d’obtenir une liste de validation avec
les trois options, on obtient une liste avec l’unique option « Auto;Vélo;Avion »,
ce qui n’a rien à voir avec notre objectif.
Le remède consiste à donner
un nom, par exemple « Véhicule » à une liste de nos trois options, et
à utiliser dans la macro la commande :
Selection.Validation.Add Type:=xlValidateList,
AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:="=Véhicule"
2 Commentaire(s):
Un bug d'enregistrement en effet...
Quand on corrige en :
... Formula1:="Auto,vélo,Avion"
ça marche !
By cduigou, sur 5:52 PM
Encore une erreur de localisation d'Excel en français !
La liste est décidément bien longue !
By Hervé Thiriez, sur 6:19 PM
Enregistrer un commentaire
<< Accueil