Sélection dans une listbox et résultat dans une autre
Bonjour bonjour
suite à de mon poste précédent (ici), voici le fonctionnement que j'aimerais avoir dans mon facturier:
- je tape le nom de mon client dans une textbox et dans la listbox s'affiche la liste des clients portant le même prénom. (ça, j'ai fait, merci Steelson )
- quand je cliques sur mon client dans la listbox1, toutes les factures de ce client (qui se trouve dans une autre feuille de calcul) s'affichent dans une autre listbox qui se trouve en dessous. (ça c'est à faire)
en fait je voudrais comprendre comme je fais pour utiliser ma sélection dans la listbox 1 pour afficher mes factures dans la listbox2. Je pense qu'une fois que j'aurais compris, je pourrais alors faire afficher les détails d'une facture que j'ai sélectionné..
voilà, j'espère être clair
Merci, Merci.
Bonjour,
- quand je cliques sur mon client dans la listbox1, toutes les factures de ce client (qui se trouve dans une autre feuille de calcul) s'affichent dans une autre listbox qui se trouve en dessous. (ça c'est à faire)
en fait je voudrais comprendre comme je fais pour utiliser ma sélection dans la listbox 1 pour afficher mes factures dans la listbox2
Très simple, une seconde colonne cachée (valeur de la largeur égale à 0) qui comporte les numéros de ligne de tes factures !
Postes ton fichier afin que nous n'ayons pas à en construire un !
Bonjour,
- quand je cliques sur mon client dans la listbox1, toutes les factures de ce client (qui se trouve dans une autre feuille de calcul) s'affichent dans une autre listbox qui se trouve en dessous. (ça c'est à faire)
en fait je voudrais comprendre comme je fais pour utiliser ma sélection dans la listbox 1 pour afficher mes factures dans la listbox2
Très simple, une seconde colonne cachée (valeur de la largeur égale à 0) qui comporte les numéros de ligne de tes factures !
Postes ton fichier afin que nous n'ayons pas à en construire un !
Merci pour ta réponse mais là, je ne vois pas
Je met en pièce jointe mon facturier anonymé.
il faut cliquer sur "recherche facture", un userform (userform4) s'ouvre. dans le champ nom, je tape un nom (taper ici sdf par exemple) et tous les noms identiques appraissent. Je voudrais, lorsque je clique sur un des noms, que la liste des différentes factures de cette personne s'affiche dans la listbox suivante. Le but étant au final de sélectionner un numéro de facture et tous les détails s'affichent sur la droite
Voilà merci pour votre aide.
Bonjour,
Tu l'as tellement bien anonymisé qu'on ne le voit plus
Bonjour,
Tu l'as tellement bien anonymisé qu'on ne le voit plus
Ah zut il n'est pas passé
EDIT: j'avais oublié de cliquer sur le bon bouton...
edit2: j'ai corrigé quelques fautes qui piquaient les yeux...
Re,
Voici le code à rajouter dans le module de l'UserForm4 :
Private Sub ListBox1_Click()
Dim Plage As Range
Dim Cel As Range
Dim Adr As String
Dim I As Long
'vide tout d'abords la liste
ListBox3.Clear
'défini la plage de recherche sur la colonne D de la feuille "Base Factures" à partir de D2
With Worksheets("Base Factures"): Set Plage = .Range(.Cells(2, 4), .Cells(.Rows.Count, 4).End(xlUp)): End With
'effectue la recherche du numéro de client...
Set Cel = Plage.Find(ListBox1.Column(0, ListBox1.ListIndex), , xlValues, xlWhole)
'si trouvé...
If Not Cel Is Nothing Then
Adr = Cel.Address
'popule la ListBox3 avec les numéros de facture ainsi que le numéro de la ligne où elle se trouve
With ListBox3
.ColumnCount = 2
.ColumnWidths = "50;0"
Do
'avec la propriété "Text", le formatage est retourné, avec "Value", seulement la valeur
'réelle de la cellule est retournée. Faire le choix du texte retourné
.AddItem Cel.Offset(, -3).Text
.List(I, 1) = Cel.Row
I = I + 1
Set Cel = Plage.FindNext(Cel)
Loop While Cel.Address <> Adr
End With
End If
End Sub
Private Sub ListBox3_Click()
With ListBox3
'adapter ici pour la récup des valeurs par rapport au numéro de la ligne
MsgBox "Numéro de facture : " & .Column(0, .ListIndex) & _
vbCrLf & _
"à la ligne : " & .Column(1, .ListIndex)
End With
End Subpour afficher mes factures dans la listbox2
Je suppose que tu veux dire "listbox3" !
Re,
Voici le code à rajouter dans le module de l'UserForm4 :
Private Sub ListBox1_Click() Dim Plage As Range Dim Cel As Range Dim Adr As String Dim I As Long 'vide tout d'abords la liste ListBox3.Clear 'défini la plage de recherche sur la colonne D de la feuille "Base Factures" à partir de D2 With Worksheets("Base Factures"): Set Plage = .Range(.Cells(2, 4), .Cells(.Rows.Count, 4).End(xlUp)): End With 'effectue la recherche du numéro de client... Set Cel = Plage.Find(ListBox1.Column(0, ListBox1.ListIndex), , xlValues, xlWhole) 'si trouvé... If Not Cel Is Nothing Then Adr = Cel.Address 'popule la ListBox3 avec les numéros de facture ainsi que le numéro de la ligne où elle se trouve With ListBox3 .ColumnCount = 2 .ColumnWidths = "50;0" Do 'avec la propriété "Text", le formatage est retourné, avec "Value", seulement la valeur 'réelle de la cellule est retournée. Faire le choix du texte retourné .AddItem Cel.Offset(, -3).Text .List(I, 1) = Cel.Row I = I + 1 Set Cel = Plage.FindNext(Cel) Loop While Cel.Address <> Adr End With End If End Sub Private Sub ListBox3_Click() With ListBox3 'adapter ici pour la récup des valeurs par rapport au numéro de la ligne MsgBox "Numéro de facture : " & .Column(0, .ListIndex) & _ vbCrLf & _ "à la ligne : " & .Column(1, .ListIndex) End With End Subpour afficher mes factures dans la listbox2
Je suppose que tu veux dire "listbox3" !
merci Theze, je vais regarder et je reviens vers toi.
oui c"était bien listbox3
Et bien c'est parfait Theze, j'ai réussi à adapter ce que tu m'as proposé avec mon facturier.
Je te remercie pour les commentaires laissé dans le code qui permettent de bien le comprendre. Vraiment génial!!!!!
Par contre j'ai un petit soucis, j'ai essayer d'afficher aussi la date d'émission des facture dans la listbox3 mais je n'y arrive pas. Dans ma base de donnée, cette information est dans la 7ème colonne du coup j'ai fait ceci pour n'avoir que les deux colonnes d'affichées:
With ListBox3
.ColumnCount = 7
.ColumnWidths = "50;0;0;0;0;0;50"
Do
...mais ça ne fonctionne pas. Peux-tu m'expliquer pourquoi?
faut-il que j'essaie avec un additem?
Bonjour,
Le code modifié :
Private Sub ListBox1_Click()
Dim Plage As Range
Dim Cel As Range
Dim Adr As String
Dim I As Long
'vide tout d'abords la liste
ListBox3.Clear
'défini la plage de recherche sur la colonne D de la feuille "Base Factures" à partir de D2
With Worksheets("Base Factures"): Set Plage = .Range(.Cells(2, 4), .Cells(.Rows.Count, 4).End(xlUp)): End With
'effectue la recherche du numéro de client...
Set Cel = Plage.Find(ListBox1.Column(0, ListBox1.ListIndex), , xlValues, xlWhole)
'si trouvé...
If Not Cel Is Nothing Then
Adr = Cel.Address
'popule la ListBox3 avec les numéros de facture ainsi que le numéro de la ligne où elle se trouve
With ListBox3
.ColumnCount = 3 '<--- Modifié ici (ajout)
.ColumnWidths = "50;50;0" '<--- Modifié ici (ajout)
Do
'avec la propriété "Text", le formatage est retourné, avec "Value", seulement la valeur
'réelle de la cellule est retournée. Faire le choix du texte retourné
.AddItem Cel.Offset(, -3).Text
.List(I, 1) = Cel.Offset(, 3).Text '<--- Modifié ici (ajout)
.List(I, 2) = Cel.Row '<--- Modifié ici (décalage)
I = I + 1
Set Cel = Plage.FindNext(Cel)
Loop While Cel.Address <> Adr
End With
End If
End Sub
Private Sub ListBox3_Click()
With ListBox3
'adapter ici pour la récup des valeurs par rapport au numéro de la ligne
MsgBox "Numéro de facture : " & .Column(0, .ListIndex) & _
vbCrLf & _
"à la ligne : " & .Column(2, .ListIndex) '<--- Modifié ici (décalage)
End With
End SubMerci Theze, ça fonctionne nikel.
J'ai du mal avec les histoires d'index, de colonnes, etc...je vais aller voir ça.
A bientôt pour la suite