Excel: Liste variable pour menu déroulant
tchernosplif
Messages postés
714
Statut
Membre
-
tchernosplif Messages postés 714 Statut Membre -
tchernosplif Messages postés 714 Statut Membre -
Bonjour,
Je n'arrive pas à définir une liste "dynamique" pour un menu déroulant.
je dis "dynamique" car les chiffres vont évoluer.
j'ai par exemple un tableau de 2 colonnes (A et B):
pomme 2
poire 3
qui donnerait cette "répartition" dans une autre colonne (C):
pomme1
pomme2
poire1
poire2
poire3
et il y aurait donc une liste: "maliste" avec la plage C1:C5
Les questions:
-Comment obtenir la "répartition" décrite ci dessus?
je fait des test avec ce fichier mais sans succès:
http://www.cijoint.fr/cj201011/cijL4HhYn6.xls
-Comment faire une liste continue de la répartition obtenue ? (sans cellule vide)
Merci d'avance pour vos précieux conseils.
Je n'arrive pas à définir une liste "dynamique" pour un menu déroulant.
je dis "dynamique" car les chiffres vont évoluer.
j'ai par exemple un tableau de 2 colonnes (A et B):
pomme 2
poire 3
qui donnerait cette "répartition" dans une autre colonne (C):
pomme1
pomme2
poire1
poire2
poire3
et il y aurait donc une liste: "maliste" avec la plage C1:C5
Les questions:
-Comment obtenir la "répartition" décrite ci dessus?
je fait des test avec ce fichier mais sans succès:
http://www.cijoint.fr/cj201011/cijL4HhYn6.xls
-Comment faire une liste continue de la répartition obtenue ? (sans cellule vide)
Merci d'avance pour vos précieux conseils.
3 réponses
-
Bonjour,
L'explication n'est pas clair, peut être que cela vous aidera : https://www.cjoint.com/?3lxxbIjsoJl
-
Bonjour,
proposition en vba :Private Sub Worksheet_Change(ByVal Target As Range) Dim defListe As Range, i As Long, j As Long, k As Long Set defListe = Range("A1:B2") ' à adapater selon le nombre d'éléments If Intersect(Target, defListe) Is Nothing Then Exit Sub Range("C1", [C1].End(xlDown)).ClearContents For i = 1 To defListe.Cells.Count / 2 For j = 1 To defListe.Cells(i, 2).Value [C1].Offset(k, 0) = defListe.Cells(i, 1) & j k = k + 1 Next j Next i Worksheets("Feuil1").ComboBox1.ListFillRange = [C1].Resize(k, 1).Address End Sub
Classeur1.xls
Attention, il doit toujours rester une cellule libre sous la dernière cellule de la liste de taille maximale.
eric -
super eriiic, c'est exactement le résultat attendu, je m'approche de mon but, (il reste un détail qui me chifonne et qui fera certainement l'objet d'une ultime question) Merci, c'est la deuxième fois que tu m'aide sur ce projet.