Macro Liste Déroulante

Résolu
Folter Messages postés 2 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 16 avril 2008 - 16 avril 2008 à 12:28
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 18 avril 2008 à 11:04
Bonjour,

Je débute en macro sur Excel et mon problème est le suivant :

Je travaille sur une liste de documents (une bonne centaine), répartis en 5 catégories :
- Procédures
- Instructions
- Documents d'information
- Formulaires
- Documents d'animation

J'ai mis une liste déroulante dans A1 avec ces 5 mots.
Je souhaite qu'en A2, si je selectionne en A1 par exemple le mot "Procédures", une liste déroulante contenant la liste des procédures apparaisse. Pour cela, j'ai selectionné chacune des plages contenant les documents de chaque catégorie et je leur ai attribué un nom. Par exemple, la plage de cellules contenant les procédure se nomme "ListePro", etc... Donc si je sélectionne A2 et que je fais la commande "Données/Validation", que je sélectionne "Liste" et que je met la formule: "=ListePro", j'obtiens une liste déroulante contenant la liste des procédures...
Pour en revenir à ce que je voulais faire à la base, j'ai entré à la place la formule :
"=SI(A1="";"";SI(A1="Procédures";ListePro;SI(A1="Instructions";ListeIns;SI(A1="Documents d'information";ListeInf;SI(A1="Formulaires";ListeFor;)))))"

Jusque là tout fonctionne. Par contre, maintenant, je voudrais intégrer cette manipulation dans une macro. En la reproduisant avec l'enregistrement de macros, j'obtiens:

Sub Macro1()
Range("A2").Select
   With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=SI(A1="""";"""";""Procédures"";ListePro;SI(A1=""Instructions"";ListeIns;SI(A1=""Documents d'information"";ListeInf;SI(A1=""Formulaires"";ListeFor;))))"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
   End With
End Sub

Quand je déclanche la macro, j'ai un message "Erreur d'exécution '1004': Erreur définie par l'application ou par l'objet". L'erreur sempble semble s'appliquer depuis "Add Type" jusqu'à la fin de ma formule.
J'ai essayé de remplacer les "SI" par des "IF", mais le résultat reste le même.
Je ne comprends pas d'où ça vient... ça m'énerve !
Alors merci d'avance de vore réponse !

Col.

3 réponses

cs_faucheuse Messages postés 308 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 27 octobre 2011
16 avril 2008 à 13:51
Je ne connais pas les fonctions que tu utilises, je ne peux donc pas te dire si il y a une erreur dans leur ecriture ; néanmoins je peux deja te conseiller de remplacer tes ":=" par des "=" simples.

Sinon la ligne :
Formula1:="=SI(A1="""";"""";""Procédures"";ListePro;SI(A1=""Instructions"";ListeIns;SI(A1=""Documents
d'information"";ListeInf;SI(A1=""Formulaires"";ListeFor;))))"

me parait très compliqué ^^, a mon avis faudrait que tu revois ca (les macros ne s'ecrivent pas comme les formules excel).
3
Folter Messages postés 2 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 16 avril 2008
16 avril 2008 à 16:19
Merci de cette réponse si rapide.
Je viens d'essayer, mais cela ne fonctionne toujours pas...

En revanche, je m'aperçois que j'étais tellement dans mon trip que ce que je demande semble hyper complexe, alors je vais l'expliquer plus simplement :
En gros, je veux que la cellule A2 contienne une liste déroulante qui varie en fonction de la valeur de A1.Donc j'ai intégré une fonction SI dans le menu "Données/Validation/Liste", pour dire SI(A1 valeur1;A2 liste valeur1;SI(A1 = valeur2;A2 = liste valeur2...)).
Cette fonction avec des SI imbriqués permet de faire varier le contenu de la liste déroulante A2 en fonction de la valeur de A1.
Le seul problème, c'est de faire cette commande par le biais d'une macro...

En tout cas merci, j'espère que ça pourra vous aider à me conseiller.

Col.
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
18 avril 2008 à 11:04
Si tu sais faire ta formule dans Excel, utilise l'enregistreur de macro et il ne te restera qu'à épurer le code généré.

PS: sélectionne "Réponse acceptée" seulement sur le message qui aura solutionné ton problème.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Rejoignez-nous