VBA Affichage de données tableau Excel dans ListBox

Résolu
SandraMt Messages postés 58 Date d'inscription jeudi 5 juin 2014 Statut Membre Dernière intervention 2 juillet 2014 - 27 juin 2014 à 11:48
vb95 Messages postés 3474 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 7 mai 2024 - 22 avril 2019 à 23:00
Bonjour,

Je voudrais afficher toutes les lignes/colonnes d'une feuille Excel dans un ListBox.


J'ai utilisé cela :

Private Sub CommandButton1_Click()

Dim arTemp() As String

Dim ValCherchee As String
ValCherchee = Sheets("VenteVéhicules")

Dim Nom_Feuil As String
Nom_Feuil = "VenteVéhicules"

Dim ma_plage As String
ma_plage = "B1:I1000"

bFound = FindAll(ValCherchee, Sheets(Nom_Feuil), ma_plage, arTemp())

ListBox1.ColumnCount = 10
ListBox1.ColumnWidths = "0;50;50;50;50;50;50;50;50;50"

If bFound = True Then
Debug.Print "Nb occurences : " & UBound(arTemp)

For x = 1 To UBound(arTemp)

Debug.Print arTemp(x)

ConsulterVenteVehicule.ListBox1.AddItem (arTemp(x))
ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets("VenteVéhicules").Cells(arTemp(x), 1).Value
ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets("VenteVéhicules").Cells(arTemp(x), 2).Value
ListBox1.List(ListBox1.ListCount - 1, 3) = Sheets("VenteVéhicules").Cells(arTemp(x), 3).Value
ListBox1.List(ListBox1.ListCount - 1, 4) = Sheets("VenteVéhicules").Cells(arTemp(x), 4).Value
ListBox1.List(ListBox1.ListCount - 1, 5) = Sheets("VenteVéhicules").Cells(arTemp(x), 5).Value
ListBox1.List(ListBox1.ListCount - 1, 6) = Sheets("VenteVéhicules").Cells(arTemp(x), 6).Value
ListBox1.List(ListBox1.ListCount - 1, 7) = Sheets("VenteVéhicules").Cells(arTemp(x), 7).Value
ListBox1.List(ListBox1.ListCount - 1, 7) = Sheets("VenteVéhicules").Cells(arTemp(x), 8).Value
ListBox1.List(ListBox1.ListCount - 1, 7) = Sheets("VenteVéhicules").Cells(arTemp(x), 9).Value

Next
End If

End Sub


Il y a une erreure au niveau de la valeur recherchée... ici j'ai indiqué que c'était la feuille Excel "VenteVéhicules" mais j'imagine que ca ne fonctionne pas comme cela !

Idem pour l'identification de la plage ... sachant que c'est tout le tableau je dois indiquer quels éléments ?


Merci d'avance

4 réponses

jordane45 Messages postés 38178 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 mai 2024 344
27 juin 2014 à 12:58
Bonjour,

Déjà...
   ListBox1.List(ListBox1.ListCount - 1, 7) = Sheets("VenteVéhicules").Cells(arTemp(x), 7).Value
    ListBox1.List(ListBox1.ListCount - 1, 7) = Sheets("VenteVéhicules").Cells(arTemp(x), 8).Value
    ListBox1.List(ListBox1.ListCount - 1, 7) = Sheets("VenteVéhicules").Cells(arTemp(x), 9).Value
;.

C'est normal que tu es "7" dans tes trois dernières ??

Ensuite :
... valcherchee... c'est une STRING.... Une chaine de caractères...
Hors toi.. tu lui affectes une Feuille ?


Et puis... quelle est l'utilité de la fonction de recherche si ton but c'est de mettre TOUT le contenu de ta feuille dans la listbox ?


0
SandraMt Messages postés 58 Date d'inscription jeudi 5 juin 2014 Statut Membre Dernière intervention 2 juillet 2014
27 juin 2014 à 13:44
Erreur bête pour changer ( pour les "7" )

En effet pour le coup il n'y a pas de valeur recherchée puisque je veux juste l'affichage de tout le tableau
0
jordane45 Messages postés 38178 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 mai 2024 344
27 juin 2014 à 14:14
Pour faire ce que tu veux réaliser il te faut :

1 - Tu définis la plage de cellules contenant tes données.

2 - Tu boucles sur cette plage de cellules pour alimenter ta listview


... Et supprime donc tout le code en rapport avec le "recherche".... ça n'a aucun rapport avec ce que tu souhaites faire......


0
SandraMt Messages postés 58 Date d'inscription jeudi 5 juin 2014 Statut Membre Dernière intervention 2 juillet 2014
27 juin 2014 à 15:14
pour définir ma plage de cellules je peux utiliser ca ?

Sheets("VenteVéhicules").Range ("A1:I" & Sheets("VenteVéhicules").Range("I65536").End(xlUp).Row)
0
jordane45 Messages postés 38178 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 mai 2024 344
Modifié par jordane45 le 27/06/2014 à 18:09
Pour avoir la dernière ligne il vaut mieux utiliser :
Derniere_Ligne = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row

Et donc pour définir ta Plage...

Dim maPlage as Range
Dim Derniere_Ligne as Integer

Derniere_Ligne = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
Set maPlage = Sheets("VenteVéhicules").Range ("A1:I" & Derniere_Ligne)



.
0
SandraMt Messages postés 58 Date d'inscription jeudi 5 juin 2014 Statut Membre Dernière intervention 2 juillet 2014
30 juin 2014 à 09:47
Je dois avoir fait des erreurs :

Private Sub CommandButton1_Click()

Dim arTemp() As String

Dim Nom_Feuil As String
Nom_Feuil = "VenteVéhicules"

Dim maPlage As Range
Dim Derniere_Ligne As Integer

Derniere_Ligne = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
Set maPlage = Sheets("VenteVéhicules").Range("A1:I" & Derniere_Ligne)

bFound = FindAll(Sheets(Nom_Feuil), maPlage, arTemp())

ListBox1.ColumnCount = 10
ListBox1.ColumnWidths = "0;50;50;50;50;50;50;50;50;50"

If bFound = True Then
Debug.Print "Nb occurences : " & UBound(arTemp)

For x = 1 To UBound(arTemp)

Debug.Print arTemp(x)

ConsulterVenteVehicule.ListBox1.AddItem (arTemp(x))
ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets("VenteVéhicules").Cells(arTemp(x), 1).Value
ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets("VenteVéhicules").Cells(arTemp(x), 2).Value
ListBox1.List(ListBox1.ListCount - 1, 3) = Sheets("VenteVéhicules").Cells(arTemp(x), 3).Value
ListBox1.List(ListBox1.ListCount - 1, 4) = Sheets("VenteVéhicules").Cells(arTemp(x), 4).Value
ListBox1.List(ListBox1.ListCount - 1, 5) = Sheets("VenteVéhicules").Cells(arTemp(x), 5).Value
ListBox1.List(ListBox1.ListCount - 1, 6) = Sheets("VenteVéhicules").Cells(arTemp(x), 6).Value
ListBox1.List(ListBox1.ListCount - 1, 7) = Sheets("VenteVéhicules").Cells(arTemp(x), 7).Value
ListBox1.List(ListBox1.ListCount - 1, 8) = Sheets("VenteVéhicules").Cells(arTemp(x), 8).Value
ListBox1.List(ListBox1.ListCount - 1, 9) = Sheets("VenteVéhicules").Cells(arTemp(x), 9).Value

Next
End If

End Sub
0
jordane45 Messages postés 38178 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 mai 2024 344
30 juin 2014 à 11:43
Regarde la répons d'Eric.

Et sinon... si tu veux rester sur "ta" méthode.... pourquoi t'obstines tu à utiliser la fonction FIND ...?????
Je te l'ai dit.. pour afficher le contenu entier de ta feuille... je ne comprend pas à quoi elle te sert !!
0
eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024
30 juin 2014 à 11:24
Bonjour,

puisque tu veux tout pourquoi ne pas remplir tout d'un coup ?
Sur ce modèle :
ListBox1.List = Sheets("Feuil1").[A2].Resize(derlig-1, 9).Value

eric
0
SandraMt Messages postés 58 Date d'inscription jeudi 5 juin 2014 Statut Membre Dernière intervention 2 juillet 2014
30 juin 2014 à 15:35
Ca marche merci beaucoup
0
SandraMt Messages postés 58 Date d'inscription jeudi 5 juin 2014 Statut Membre Dernière intervention 2 juillet 2014
30 juin 2014 à 14:27
Private Sub CommandButton1_Click()
ListBox1.ColumnCount = 10
ListBox1.ColumnWidths = "0;50;50;50;50;50;50;50;50;50"

ListBox1.List = Sheets("VenteVéhicules").[A2].Resize(derlig - 1, 1).Value
ListBox1.List = Sheets("VenteVéhicules").[B2].Resize(derlig - 1, 2).Value
ListBox1.List = Sheets("VenteVéhicules").[C2].Resize(derlig - 1, 3).Value
ListBox1.List = Sheets("VenteVéhicules").[D2].Resize(derlig - 1, 4).Value
ListBox1.List = Sheets("VenteVéhicules").[E2].Resize(derlig - 1, 5).Value
ListBox1.List = Sheets("VenteVéhicules").[F2].Resize(derlig - 1, 6).Value
ListBox1.List = Sheets("VenteVéhicules").[G2].Resize(derlig - 1, 7).Value
ListBox1.List = Sheets("VenteVéhicules").[H2].Resize(derlig - 1, 8).Value
ListBox1.List = Sheets("VenteVéhicules").[I2].Resize(derlig - 1, 9).Value


Dim maPlage As Range
Dim Derniere_Ligne As Integer

Derniere_Ligne = Cells.Find("*", Range("A2"), , , xlByRows, xlPrevious).Row
Set maPlage = Sheets("VenteVéhicules").Range("A2:I" & Derniere_Ligne)


Voila le code que j'ai essayé d'adapter à ma problématique.
Cependant il y aurait un problème au niveau des lignes :
ListBox1.List = Sheets("VenteVéhicules").[A2].Resize(derlig - 1, 1).Value
0
SandraMt Messages postés 58 Date d'inscription jeudi 5 juin 2014 Statut Membre Dernière intervention 2 juillet 2014
30 juin 2014 à 15:34
C'est bon ça marche !

Merci beaucoup !
0
jhjustilien Messages postés 1 Date d'inscription lundi 22 avril 2019 Statut Membre Dernière intervention 22 avril 2019
22 avril 2019 à 16:01
Qu'est ce que tu as fait pour que cela puisse marcher
0
vb95 Messages postés 3474 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 7 mai 2024 169 > jhjustilien Messages postés 1 Date d'inscription lundi 22 avril 2019 Statut Membre Dernière intervention 22 avril 2019
22 avril 2019 à 23:00
Bonsoir !
1) Les formules de politesse sont appréciées lorsque l'on se greffe sur une discussion !
2) avec presque 5 ans de décalage cela m'étonne que tu ais une réponse !
0
Rejoignez-nous