Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

source de combo sur plusieurs colonnes

H

hugues

Guest
bonjour,

je cherche une combo avec une seule colonne, mais dont le listfillrange est sur plusieurs colonnes.... existe-t-il une instruction ou une manip qui permettrait de mettre bout a bout toutes les cellulles des différentes colonnes...
genre A1:A10;B1:B10 etc...
pour se retrouver avec une seule colonne de 20 lignes dans la combo...
merci
 
@

@+Thierry

Guest
Salut Hugues

Si j'ai bien compris tu parles de plages discontinues ? et si tu emploies le "ListFillRange" on est sur une ComboBox directement sur une Feuille (Sherlock Holmes !! lol)

Voici ce que je te propose ... La méthode "AddItem" ...

En imaginant que tu as en "Feuil2" 5 Colonnes de "A" à "E" et que chacune contient 10 lignes... (Comme ton exemple A1:A10;B1:B10 etc... jusqu'en E10..)

Voilà ce que je ferai :

Sub ComboFillMultiCol()
Dim L As Byte
Dim C As Byte
Dim WS As Worksheet
Set WS = Worksheets("Sheet2")
Sheet1.ComboBox1.Clear
For C = 1 To 5
For L = 1 To 10
If Not WS.Cells(L, C) = "" Then '==> pour ne pas avoir d'item "Vide"
Sheets("Sheet1").ComboBox1.AddItem WS.Cells(L, C)
End If
Next L
Next C
End Sub


Sinon si tu ne connais que tes colonnes sans savoir à l'avance le nombre de lignes pour chacune...

Sub ComboFill2ColVariableLigne()
Dim LA As Integer
Dim LB As Integer
Dim PlageA As Range
Dim PlageB As Range
Dim Cell As Range
Sheet1.ComboBox1.Clear
LA = Sheets("Sheet2").Range("A65535").End(xlUp).Row
Set PlageA = Sheets("Sheet2").Range("A1:A" & LA)
LB = Sheets("Sheet2").Range("B65535").End(xlUp).Row
Set PlageB = Sheets("Sheet2").Range("B1:B" & LA)

For Each Cell In PlageA
If Not Cell.Value = "" Then
Sheets("Sheet1").ComboBox1.AddItem Cell.Value
End If
Next Cell

For Each Cell In PlageB
If Not Cell = "" Then
Sheets("Sheet1").ComboBox1.AddItem Cell.Value
End If
Next Cell

End Sub


Voilà, mais avec "ListFillRange" je ne pense pas que tu puisses y arriver.

Bonne Soirée Hugues and Welcome to XLD
@+Thierry
 
H

hugues

Guest
nickel chrome
merci bcp pour cette super réponse
mon pb c'est que j'ai 4 colonnes de 10000 lignes (toutes les communes francaise.s..), donc je vais voir si ca rame pas trop...
en fait pour aller au fond du pb, je me suis rendu compte que 1 colonne de 40000 lignes prend plus de place (memoire) que 4 de 10000
donc pour gagner de la place je voudrai mettre ma colonne sur 4 colonnes ou plus...
mais j'en ai besoin pour ma combo
si ton truc marche c'est top
merci encore
 
@

@+Thierry

Guest
Bonsoir le forum et Hugues

Ouf sur 4 colonnes de 10000 lignes!!!
en plus il faut faire un algo de tri !!

non là même Sherlock Holmes ne pouvait deviner.....

Sûr çà va "ramer" comme tu dis...

non en plus une Combo de 40000 lignes mets toi à la place du User !!

(à mon humble avis il y a problème de concept.....)

@+Thierry
 
H

hugues

Guest
mais non y'a pas de probleme de conception )
il s'agit de la liste des 36000 communes francaises !
quand je fais une seule colonne, ca marche hyper bien, et ca ne rame pas...
tu peux choisir facilement ta commune (pas besoin de tri, c'est deja fait).
et après la suite des calculs se fait tout seul.
bon bref, toujours est-il que moi je veux mettre ma colonne de 36000 ligne sur 4 colonnes de 9000 lignes.
ta méthode est super, sauf que ce qui serait bien, ca serait de pouvoir rajouter ds la combo plusieurs celulles en meme temps.
du genre WS2.combo.additem(range(WS.Cells(1,1), WS.Cells(1,1000)))
mais ca marche pas (((
bonne journée
hugues
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…