Monsieur Excel
Pour tout savoir faire sur Excel !

07 juillet 2013

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.

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 ».

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 :
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 Anonymous cduigou, sur 5:52 PM  

  • Encore une erreur de localisation d'Excel en français !
    La liste est décidément bien longue !

    By Blogger Hervé Thiriez, sur 6:19 PM  

Enregistrer un commentaire

<< Accueil