Listbox recherche

bonjour,

Dans le fichier ci dessous , j'ai voulu ajouter une macro qui recupère dans une variable tableau des infos.

dans l'exemple si je clique sur une des lignes de la listbox je n'arrive pas a récupérer la valeur souhaité

si je clique sur espinasse je ne récupère pas espinasse dans le msgbox mais balutin.

avez vous une idée pour que la valeur récupérée soit la bonne.

idem si la listbox est triée par nom ou code postal ?

merci

cordialement

40exemple-copie.zip (23.49 Ko)

Bonjour...dans le code de la listbox il faut mettre

i = ListBox1.ListIndex + 2

bonjour,

si je fais le trie en cliquant sur par nom ou code postal cela ne fonctionne pas.

une idée ?

cdt

C'est normal

Car dans votre tableau

tab_exemple(0) = Sheets("BD").Cells(i, 2)

tab_exemple(1) = Sheets("BD").Cells(i, 1)

tab_exemple(2) = Sheets("BD").Cells(i, 2)

tab_exemple(3) = Sheets("BD").Cells(i, 7)

tab_exemple(4) = Sheets("BD").Cells(i, 9)

vous récuperez la valeur des cellules de la feuille bd avec l'index de la listbox (qui est i), donc si les deux listes ne sont pas triées de la même manière normal qu'il y ait un decalage...

Car l'index d'une valeur dans la listbox n'est pas égale à la l'index d'une valeur dans la feuille...

Si votre feuille est en tri décroissant, la première valeur d'une plage de chiffre allant de 1 à 10 c'est 10 par exemple.

Dans votre listbox, si vous faites un tri par ordre croissant, la première valeur c'est 1.

Quand vous allez cliquez sur votre listbox sur la valeur 1, la valeur de i sera égale à l'index de la listbox (0) + 2 c'est à dire 2.

Ce qui ramène à sheets("bd").cells(2,1) donc à la cellule A2...qui elle contient 10 et non pas 1 car elle est triée en valeur décroissante...

une idée pour y remedier ?

Dim tab_exemple()
ReDim tab_exemple(ListBox1.ColumnCount)
For k = 0 To ListBox1.ColumnCount - 1
tab_exemple(k) = ListBox1.List(ListBox1.ListIndex, k)
Next
Feuil1.[a26].Resize(1, ListBox1.ColumnCount) = tab_exemple

Le résultat s'affiche en cellule A26 de la feuille bd


Et celui là c'est pour coller chaque ligne qui est cliquée dans la listbox dans la feuille résultat à la suite les une des autres

Dim tab_exemple()
ReDim tab_exemple(ListBox1.ColumnCount)
For k = 0 To ListBox1.ColumnCount - 1
tab_exemple(k) = ListBox1.List(ListBox1.ListIndex, k)
Next
Feuil2.[a65000].End(xlUp).Offset(1, 0).Resize(1, ListBox1.ColumnCount) = tab_exemple
65exemple-copie.xlsm (37.99 Ko)

cela m'a l'air parfait merci pour ton aide précieuse !!

De rien...

Rechercher des sujets similaires à "listbox recherche"