VBA Affichage de données tableau Excel dans ListBox [Résolu]

SandraMt 58 Messages postés jeudi 5 juin 2014Date d'inscription 2 juillet 2014 Dernière intervention - 27 juin 2014 à 11:48 - Dernière réponse : SandraMt 58 Messages postés jeudi 5 juin 2014Date d'inscription 2 juillet 2014 Dernière intervention
- 30 juin 2014 à 15:35
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
Afficher la suite 

Votre réponse

11 réponses

jordane45 22061 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 août 2018 Dernière intervention - 27 juin 2014 à 12:58
0
Merci
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 ?


SandraMt 58 Messages postés jeudi 5 juin 2014Date d'inscription 2 juillet 2014 Dernière intervention - 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
Commenter la réponse de jordane45
jordane45 22061 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 août 2018 Dernière intervention - 27 juin 2014 à 14:14
0
Merci
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......


SandraMt 58 Messages postés jeudi 5 juin 2014Date d'inscription 2 juillet 2014 Dernière intervention - 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)
jordane45 22061 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 août 2018 Dernière intervention - 27 juin 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)



.
SandraMt 58 Messages postés jeudi 5 juin 2014Date d'inscription 2 juillet 2014 Dernière intervention - 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
jordane45 22061 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 août 2018 Dernière intervention - 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 !!
Commenter la réponse de jordane45
eriiic 21883 Messages postés mardi 11 septembre 2007Date d'inscriptionContributeurStatut 15 août 2018 Dernière intervention - 30 juin 2014 à 11:24
0
Merci
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
SandraMt 58 Messages postés jeudi 5 juin 2014Date d'inscription 2 juillet 2014 Dernière intervention - 30 juin 2014 à 15:35
Ca marche merci beaucoup
Commenter la réponse de eriiic
SandraMt 58 Messages postés jeudi 5 juin 2014Date d'inscription 2 juillet 2014 Dernière intervention - 30 juin 2014 à 14:27
0
Merci
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
SandraMt 58 Messages postés jeudi 5 juin 2014Date d'inscription 2 juillet 2014 Dernière intervention - 30 juin 2014 à 15:34
C'est bon ça marche !

Merci beaucoup !
Commenter la réponse de SandraMt

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.