Macro Liste Déroulante [Résolu]

Folter 2 Messages postés mercredi 16 avril 2008Date d'inscription 16 avril 2008 Dernière intervention - 16 avril 2008 à 12:28 - Dernière réponse : cs_MPi 3869 Messages postés mardi 19 mars 2002Date d'inscription 25 mai 2018 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
cs_faucheuse 309 Messages postés jeudi 10 janvier 2008Date d'inscription 27 octobre 2011 Dernière intervention - 16 avril 2008 à 13:51
3
Merci
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).

Merci cs_faucheuse 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

Commenter la réponse de cs_faucheuse
Meilleure réponse
Folter 2 Messages postés mercredi 16 avril 2008Date d'inscription 16 avril 2008 Dernière intervention - 16 avril 2008 à 16:19
3
Merci
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.

Merci Folter 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

Commenter la réponse de Folter
cs_MPi 3869 Messages postés mardi 19 mars 2002Date d'inscription 25 mai 2018 Dernière intervention - 18 avril 2008 à 11:04
0
Merci
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
Commenter la réponse de cs_MPi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.