Creation Listbox par code

Bonjour,

J'ai besoin sur un code VBA, je m'arrache la tête depuis quelques jours mais je n'y arrive pas.

j'ai un classeur avec 2 onglet "TS" et "Analytique"

j'ai un userform avec un combobox et une listbox.

Quand je sélectionne un code dans la combobox et ensuite j'aimerais avoir affichage qu'il y a dans l'onglet "résultat" dans ma listbox

Je vous joins exemple pour mieux comprendre.

Merci de votre aide.

Bonjour

Un essai.

Mais je ne suis pas sûr d'avoir bien compris.

Bye !

Bonsoir Ser-fab, bonsoir le forum,

Avec à la propriété [ColumnCount] de la ListBox1 la valeur de 6, ton code modifié :

Option Explicit
Private TC As Variant 'déclare la variable TC (Tableau de Cellules)

Private Sub UserForm_Initialize()
With Worksheets("Analytique")
    Me.ComboBox1.List = .Range("A2:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row).Value
End With
Me.ComboBox1.ListIndex = -1
With Sheets("Resultat") 'prend en compte l'onglet "Resultat"
    TC = .Range("C6").CurrentRegion 'définit le tableau de cellules TC
End With 'fin de la prise en compte de l'onglet "Resultat"
End Sub

Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)

Me.ListBox1.Clear 'vide la ListBox1
For I = 2 To UBound(TC, 1) 'boucle 1 : sur toutes les lignes du tableau de celllue TC (en partant de la seconde)
    'condition : si la valeur du tableau TC en ligne I colonne 4 est égale à la valeur de la ComboBox1
    If TC(I, 4) = Me.ComboBox1.Value Then
        With Me.ListBox1 'prend en compte la ListBox1
            .AddItem 'ajoute un élément à la ListBox1
            For J = 0 To 5 'boucle 2 : sur les 6 colonnes de la ListBox1
                'ajoute la valeur en ligne I colonne J+1 du tableau TC à la colonne J de la ListBox1
                .Column(J, .ListCount - 1) = TC(I, J + 1)
            Next J 'prochaine colonne de la boucle 2
        End With 'fin de la prise en compte de la ListBox1
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle 1
End Sub

Bonsoir, c'est "ThauThème" qui ce rapproche le plus du résultat mais quand je choisi un autre code qui est dans la combobox cela doit affiche les autres operation pour ce code.

note : important l'onglet "résultat" est uniquement un exemple du résultat que je souhaitais dans la liste listbox mais dans mon tableau final je n'ai plus l'onglet "résultat" (ci-joint classeur final)

Thautheme ton code ne marche pas pour un autre ?

Bonsoir le fil, bonsoir le forum,

Tu aurais pu essayer d'adapter tout seul ! Ça sert à quoi que je m'emm... à commenter le code ? Je n'ai modifié que deux choses pour que ça marche...

En pièce jointe ton fichier modifié :

Bonsoir ,

J'ai bien essayer de modifier le code mais sans succès.

il y a encore une erreur mais j'y arrive pas.

Les codes sont dans la colonne "F" "H" "J" "L"

Par exemple pour le Code "BUR" je dois vois apparaître le ligne 1 / 2 / 12 / 37 / 38 / 42 et avec ton code j'ai uniquement 1 / 12 / 38 / 42 il manque l'operation 2 et 37 car il sont sur une autre colonne de "F"

Bonjour, j'ai reussi a modifier le code mais je bloque pour la quatrieme colonne

Merci de votre aide.

Bonsoir Ser-fab, bonsoir le forum,

Pardon, je n'avais pas vu que tu pouvais avoir le code analytique dans plusieurs colonnes...

Malheureusement, avec le système AddItem de la ListBox1, le maximum de colonnes autorisé est 10. Il faut donc mettre la propriété [ColumnCount] égale à 10 et (pour un meilleur affichage), la propriété [ColumnWidths] égale à 20 pt;60 pt;150 pt.

Le code modifié :

Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim K As Byte 'déclare la variable K (incrément)

Me.ListBox1.Clear 'vide la ListBox1
For I = 2 To UBound(TC, 1) 'boucle 1 : sur toutes les lignes du tableau de celllue TC (en partant de la seconde)
    For J = 1 To UBound(TC, 2) 'boucle 2 sur toutes les colonnes du tableau de cellules TC
        'condition : si la valeur du tableau TC en ligne I colonne J est égale à la valeur de la ComboBox1
        If TC(I, J) = Me.ComboBox1.Value Then
             With Me.ListBox1 'prend en compte la ListBox1
                .AddItem 'ajoute un élément à la ListBox1
                For K = 0 To 9 'boucle 3 : sur les 10 colonnes de la ListBox1
                    'ajoute la valeur en ligne I colonne J+1 du tableau TC à la colonne J de la ListBox1
                    .Column(K, .ListCount - 1) = TC(I, K + 1)
                 Next K 'prochaine colonne de la boucle 3
            End With 'fin de la prise en compte de la ListBox1
            Exit For 'sort de la boucle 2
        End If 'fin de la condition
    Next J 'prochaine colonne de la boucle 2
Next I 'prochaine ligne de la boucle 1
End Sub

Bonjour à tous,

Merci Thautheme pour ton aide, j'ai compris le principe du code et des colonnes maxi mais dans ma demande de depart il me fallait 6 colonnes uniquement.

Dans la listbox

1ere colonne : avec le numéro d’opération

2eme colonne : la date

3eme colonne : le libellé

4eme colonne : le code choisi

5eme colonne : si le code correspond a une dépense on mets la somme associe au code et non au montant total

6eme colonne : si le code correspond a une recette on mets la somme associe au code et non au montant total

Je vous joins un exemple sur un fichier excel pour voir la mise en forme a faire sur une lisbox

153exemple.xls (19.00 Ko)
Rechercher des sujets similaires à "creation listbox code"