VBA: Création de listes en cascade

yeti_yeti

XLDnaute Junior
Bonjour à tous,

Après plusieurs années sans poster ici, je me retrouve confronté à un problème où mon cerveau n'est plus apte à fonctionner...

Je suis en train de créer une macro qui met en forme un document après avoir copié les données d'un autre document. A un moment donné je crée une première Liste (Validation) et je crée une seconde Liste (Validation) basée sur la première. Donc tout ceci fonctionne parfaitement quand je le fais manuellement mais pas dans la macro. Voici une partie du code:

Dans cette première partie, la liste est créée en colonne AL et est basée sur une liste nommée Criteria. Cette partie ne pose pas de problème
Code:
'CREATE DROP DOWN LISTS FOR CRITERIA
            With Range("AL5:AL" & LastRow).Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=Criteria"
                .IgnoreBlank = True
                .InCellDropdown = True
                .InputTitle = ""
                .ErrorTitle = ""
                .InputMessage = ""
                .ErrorMessage = ""
                .ShowInput = True
                .ShowError = True
            End With

Dans cette deuxième partie, la seconde liste est créée en colonne AM. Si la cellule de la colonne AL est vide, alors on utilise la liste "Blank", si elle n'est pas vide, alors on utilise INDIRECT pour créer nos listes dépendantes de ce qui est sélectionné dans la liste "Criteria" créée ci-dessus.
Code:
'CREATE DROP DOWN LISTS FOR SUB-CRITERIA
            With Range("AM5").Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=IF(ISBLANK(AL5);Blank;INDIRECT(AL5))"
                .IgnoreBlank = True
                .InCellDropdown = True
                .InputTitle = ""
                .ErrorTitle = ""
                .InputMessage = ""
                .ErrorMessage = ""
                .ShowInput = True
                .ShowError = True
            End With
            Range("AM5").AutoFill Destination:=Range("AM5:AM" & LastRow), Type:=xlFillDefault

L'erreur survient sur cette partie du code:

Code:
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=IF(ISBLANK(AL5);Blank;INDIRECT(AL5))"

Et le je sèche... je ne sais plus quoi faire. Quelqu'un aurait une idée? :)

Merci d'avance et excellente journée

YeTi
 

yeti_yeti

XLDnaute Junior
Re : VBA: Création de listes en cascade

Le problème c'est que je ne peux pas partager ce fichier puisque c'est pour mon job... mais en soit c'est un fichier vide et quand on clic sur la macro ça colle les données copiées et fait tout un tas de mises en forme. En fait le problème vient justement du fait que la liste déroulante Criteria (liste déroulante 1) est créée en premier lieu mais aucun choix n'est fait et reste donc vide. Or le choix vide n'est pas disponible pour la personne qui clique dans la liste déroulante. Basé sur le choix le la liste 1 (criteria), la liste déroulante 2 (sub-criteria) affiche différents choix. C'est la raison pour laquelle je dis que si la liste 1 est vide, alors on appelle la liste "Blank" qui est une liste de 1 choix vide, sinon on fait la liste en cascade...
 

yeti_yeti

XLDnaute Junior
Re : VBA: Création de listes en cascade

J'ai trouvé... encore une histoire de point-virgule vs virgule dans VBA...

La ça ne marche pas
Code:
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=IF(ISBLANK(AL5);Blank;INDIRECT(AL5))"

La ça marche
Code:
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=IF(ISBLANK(AL5),Blank,INDIRECT(AL5))"

On peut fermer le topic :)
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 845
Messages
2 092 770
Membres
105 529
dernier inscrit
StarExcel