Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Listbox et tableau excel

8 réponses
Avatar
somme.si et VBa
Salut a tous,

j'ai un tableau Excel sur 20 colonnes et j aimerai faire une listbox de ce
tableau
pouvez vous me dire comment faire par code VBA, en effet je ne souhaite pas
passé par les propiétés du contrôle

le fichier s'apelle PROV et l'onglet ou figure le tableau COMPARAISON

MERCI POUR VOTRE AIDE

jm

8 réponses

Avatar
AV
En supposant que ton tableau se situe en A1:Txxx
La ligne 1 contient les noms de champs
Les colonnes sont renseignées inégalement
Tu pourrais alimenter ta ListBox de la façon suivante :

Sub zzz()
ActiveSheet.ListBox1.Clear
With Sheets("BD")
For i = 1 To 20
For j = 2 To .Cells(65536, i).End(3).Row
If .Cells(j, i) <> "" Then ActiveSheet.ListBox1.AddItem .Cells(j,
i).Text
Next
Next
End With
End Sub

PS : Adapte le chemin d'accès en lieu et place de Sheets("BD")

http://cjoint.com/?fCqoQocVhX

AV
Avatar
LSteph
Bonjour,

Peux-tu être plus précis sur ce que tu souhaites obtenir
(dans une feuille ou un userform)
sinon à partir du code ou de la fenêtre propriété, c'est libre

Hyp.1
faire du multicolonnes, avec .rowsource

Private Sub UserForm_Initialize()
With ListBox1
.ColumnCount = 20
.RowSource = "COMPARAISON!$b$2:$u$46"
End With
End Sub



Hyp.2
s'il s'agit d'un tableau avec n lignes sur 20 colonnes
mais que tu veux tout sur une seule colonne
on peut boucler toutes les cellules de droite à gauche et de haut en bas
ou l'inverse exemple:

Private Sub UserForm_Initialize()
Dim c As Range

ListBox1.Clear
For Each c In Worksheets("COMPARAISON").[b2:u30].Cells
ListBox1.AddItem c
Next

End Sub

Hyp.3
(20 colonnes sur une ligne)
transpose ta ligne de 20 colonnes elle sera en une colonne de 20 lignes

Cordialement.

lSteph

Salut a tous,

j'ai un tableau Excel sur 20 colonnes et j aimerai faire une listbox de ce
tableau
pouvez vous me dire comment faire par code VBA, en effet je ne souhaite pas
passé par les propiétés du contrôle

le fichier s'apelle PROV et l'onglet ou figure le tableau COMPARAISON

MERCI POUR VOTRE AIDE

jm


Avatar
MichDenis
Bonjour AV,

Seulement un petit pépin qui se produit souvent ...
le listbox débute à zéro et non à 1, conséquemment
la dernière donnée de la dernière colonne ne s'affiche
pas dans la listbox même si elle y est. Pour la voir,
il faut ajouter seulement avant le End Sub la ligne suivante :

ActiveSheet.ListBox1.AddItem ""

C'est pas grave, c'est seulement l'affichage qui est manquant !

;-)


"AV" a écrit dans le message de news:
%
En supposant que ton tableau se situe en A1:Txxx
La ligne 1 contient les noms de champs
Les colonnes sont renseignées inégalement
Tu pourrais alimenter ta ListBox de la façon suivante :

Sub zzz()
ActiveSheet.ListBox1.Clear
With Sheets("BD")
For i = 1 To 20
For j = 2 To .Cells(65536, i).End(3).Row
If .Cells(j, i) <> "" Then ActiveSheet.ListBox1.AddItem .Cells(j,
i).Text
Next
Next
End With
End Sub

PS : Adapte le chemin d'accès en lieu et place de Sheets("BD")

http://cjoint.com/?fCqoQocVhX

AV
Avatar
AV
Cette observation est tout à fait pertinente !
Effectivement... j'avais pas vérifié car "ça aurait pas du..." !

Ces mêmes instructions (sans la dernière ligne que tu as proposée :
ActiveSheet.ListBox1.AddItem "") affichent sans problème l'intégralité des items
quand on les exécute sous XL2000 voire même sous XL97 !

Vous avez dit bizarre ?
Vous avez dit compatibilité descendante ?

AV
Avatar
MichDenis
| Vous avez dit bizarre ?
| Vous avez dit compatibilité descendante ?

Toute une nouveauté ! Est-ce pour ajouter un bug
ou en soustraire un des anciennes versions ?

;-))
Avatar
somme.si et VBa
Merci steph
j'ai retenu la premiere option que j'ai legerement modifier
j ai mis
.RowSource = "COMPARAISON!A2:U" &
sheets("Comparaison").cells(10,2).end(xldown).row

voila
mais maintenant quid de la largeur des colonnes



Bonjour,

Peux-tu être plus précis sur ce que tu souhaites obtenir
(dans une feuille ou un userform)
sinon à partir du code ou de la fenêtre propriété, c'est libre

Hyp.1
faire du multicolonnes, avec .rowsource

Private Sub UserForm_Initialize()
With ListBox1
..ColumnCount = 20
..RowSource = "COMPARAISON!$b$2:$u$46"
End With
End Sub



Hyp.2
s'il s'agit d'un tableau avec n lignes sur 20 colonnes
mais que tu veux tout sur une seule colonne
on peut boucler toutes les cellules de droite à gauche et de haut en bas
ou l'inverse exemple:

Private Sub UserForm_Initialize()
Dim c As Range

ListBox1.Clear
For Each c In Worksheets("COMPARAISON").[b2:u30].Cells
ListBox1.AddItem c
Next

End Sub

Hyp.3
(20 colonnes sur une ligne)
transpose ta ligne de 20 colonnes elle sera en une colonne de 20 lignes

Cordialement.

lSteph

Salut a tous,

j'ai un tableau Excel sur 20 colonnes et j aimerai faire une listbox de ce
tableau
pouvez vous me dire comment faire par code VBA, en effet je ne souhaite pas
passé par les propiétés du contrôle

le fichier s'apelle PROV et l'onglet ou figure le tableau COMPARAISON

MERCI POUR VOTRE AIDE

jm





Avatar
AV
Merci


Fallait pas....C'est trop !

AV

Avatar
somme.si et VBa
Merci pour ta réponse je vais l'essayer également
J ai fait un petit mixte de tout

Je ne suis pas un expert de VBA et je rame totalement, pas simple
si tu connais des petits trucs simple je suis preneur
merci par avance



Merci


Fallait pas....C'est trop !

AV