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é , ou j'ai dû l'oublier

65facturier.xlsm (187.56 Ko)

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 Sub

pour 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 Sub

pour 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 Sub

Merci 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

Rechercher des sujets similaires à "selection listbox resultat"