Afficher une plage de cellules variables dans une List Box

Fermé
tiketie Messages postés 5 Date d'inscription mardi 25 octobre 2016 Statut Membre Dernière intervention 27 octobre 2016 - 25 oct. 2016 à 15:01
tiketie Messages postés 5 Date d'inscription mardi 25 octobre 2016 Statut Membre Dernière intervention 27 octobre 2016 - 27 oct. 2016 à 09:12
Bonjour,
Débutant en VBA, j'ai pour projet de stage de créer un formulaire "Fiche Client" avec infos du client/Infos sur les commandes du client.
Dans la deuxième partie de mon UserForm (Celle sur les commandes), j'ai voulu mettre un ListBox pour faciliter la lecture des commandes.
J'ai deux feuilles de tableur une pour chacune des parties de mon Userform. La seule colonne en commun est l'ID du client (afin de pouvoir afficher toutes les commandes pour un seul client).

Seulement, j'aimerai qu'à la sélection d'un client (dans une ComboBox), le formulaire compare les deux colonnes "ID client" des deux feuilles, et à chaque fois qu'il trouve une correspondance, il affiche la ligne dans la listBox, ainsi nous y verrons uniquement les commandes du client sélectionné :

Une macro me groupe les ID clients dans la feuille 2, j'ai bidouillé le code suivant :

With Ws2 'la deuxième feuille du tableur avec les commandes
For k = 1 To .Cells(Rows.Count, 1).End(xlUp).Row 'Pour toutes les lignes de Ws2
DerL = Ws.Cells(Rows.Count, 1).End(xlUp)(2).Row 'Dernière ligne de la feuille 1
'On essaye de trouver les mêmes valeurs dans les deux colonnes ID Client
If Not IsError(Application.Match(.Cells(k, 1), Ws.Columns(14), 0)) Then
For l = 1 To DerL 'Pour toutes les lignes jusqu'à la dernière
If Cells(l, 1) = .Cells(k, 14) Then 'Si il y a correspondance...
'On affiche la ligne dans la listBox
With Ws2.Columns("B:G").Rows(k)
ListBox1.RowSource = Range(.Cells, .End(xlDown)(1, 1)).Address(External:=True)
End With

End If
Next
End If
Next
End With
A voir également:

1 réponse

f894009 Messages postés 17240 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 18 février 2025 1 713
26 oct. 2016 à 12:13
Bonjour,

j'ai bidouillé le code suivant :
Et ca donne quoi ??????????????????

Pour resumer:
_selection d'un ID client (Combobox1)
_recherche des lignes (dans feuil2) ayant l'ID client selectionne colonne 14
_affichage des numeros de ligne trouves dans Listbox1

Ok ou pas ??
0
tiketie Messages postés 5 Date d'inscription mardi 25 octobre 2016 Statut Membre Dernière intervention 27 octobre 2016
27 oct. 2016 à 09:12
Bonjour,
Tout d'abord merci de votre réponse !
Et je m'excuse également de la mienne si tardive !

J'ai résolu le problème :
1)A l'aide d'une macro, j'effectue un tri sur la feuille, cela me permet de regrouper toutes les lignes apparentées à un même client (même ID)
2) Je parcours (à l'aide de mon code) toutes les cellules des deux colonnes à l'aide d'une variable k.
3) Dès qu'il y a correspondance entre les deux idées (même ID), je stock la valeur de la variable k à ce moment dans un tableau de k.
Tant que cette correspondance est vérifiée, je continue de stocker les k dans le tableau.
4) Je stock une dernière valeur de k quand on arrive à la dernière correspondance.
5) Je récupère enfin dans le tableau la première et la dernière valeur de k, et j'obtiens ainsi ma plage !

C'est simple mais il suffisait d'y penser ;)
0