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 SubBonsoir, 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 SubBonjour à 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