Excel: création liste déroulante par macro

Résolu
Nono -  
toni31 Messages postés 45 Statut Membre -
Bonjour,

Je me demande si certains d'entre vous ont déjà rencontré le petit problème auquel je fais actuellement face:
Je crée une macro qui génère automatiquement des questionnqires (avec mise en page auto selon la liste et le type de questions), et pour chaque question jájoute également une case avec liste déroulante, pour faire une évaluation entre 1 et 5.

J'utilise donc la commande suivante:
With Selection.Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="1;2;3;4;5"
End With

Le problème, c'est que cette commande ne me laisse qu'un seul choix dans la liste, la ligne "1;2;3;4;5".

Je vais dans l'option Validation des données, ca a l'air pourtant bon, je valide, je retourne sur ma cellule et la bonne liste apparaît...
Evidemment, je ne peux pas faire ca sur toutes les cellules, puisqu'il y a beaucoup de questions et que de toutes facons, je cherche à automatiser le tout...

Quelqu'un aurait-il déjà rencontré ce problème ? Une idée quelconque ?

Un grand merci d'avance!!

Nono






5 réponses

Nono
 
Salut Mikanadien,

Merci pour ta réponse! J'avais pensé à cette option, et elle marche très bien; le truc c'est que la page de questionnaire que je génère doit être copiée sur une autre feuille et, pour des questions de design, je ne peux pas vraiment avoir la liste dans des cellules de la feuille...
Je voudrais vraiment créer cette liste déroulante par macro; ce qui est fou c'est quíl me suffit d'aller dans les options, ne rien changer, valider, pour que la bonne liste apparaisse.
Merci encore :)

Nono
3
mikanadien2 Messages postés 113 Statut Membre 10
 
Bonjour

Essaie plutot :

With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$A$1:$A$10"
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True

En ayant mis dans la colonne A pour cet exemple les valeurs que tu veux dans ta liste...
Histoire qu il comprenne bien que chaque valeur de cette range doit etre un element de la liste....
1
mikanadien2 Messages postés 113 Statut Membre 10
 
Re,

Je comprends ton probleme...
Tu veux creer une liste, non pas en fonction d une liste de cellules, mais en fonction de valeurs prefinies....

Je ne pense pas que ce soit possible car le propre de la fonction Selection.Validation, c est d autoriser uniquement le contenu d une selection de cellules...

Je te conseille donc d utiliser la methode qui marche et de mettre la liste de cellule en non visible par l utilisateur, par exemple en colonne AZ
Genre : With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$AZ$1000:$AZ$1010"
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True

Et tu met en couleur de police sur ces cellules du blanc... Et ca devient invisible... Et visible dans ta liste... Pas belle la vie ?
0
Nono
 
Oui je vais faire ca. Je ne serai pas le seul à l'utiliser, je voulais donc être sûr qu'il n'y ait pas d'erreur de manip possible... Enfin bon, problème résolu, merci beaucoup!!

Nono
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
maloplekxus Messages postés 30 Statut Membre 3
 
Bonjour,

Cela est possible ! Dans VBA, il faut remplacer les ";" par des "," comme ceci :
With Selection.Validation 
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
xlBetween, Formula1:="1,2,3,4,5" 
End With 


Bien cordialement
0
toni31 Messages postés 45 Statut Membre 1
 
merci, ça marche Malo
0
toni31 Messages postés 45 Statut Membre 1
 
^^
0