Variable tableau

bonjour à tous

bonjour le forum

Bien que non actif ces temps, je vous suis régulièrement pour mieux apprendre.

J'ai un soucis avec le fichier joint.

je voudrais :

1/ en sélectionnant item 15 par mon combo que j'aie dans mon tableau 2 lignes

150...

151...regroupant les 2 écritures pour un total de 99

2/en sélectionnant item 1 que les codes 01 seulement soit reversés dans le tableau.

Merci de votre coup de pouce

10testbakh1.xlsm (33.44 Ko)

Bonjour Bakh, bonjour le forum,

Remplace tout le code de l'userForm1 par :

Option Explicit
Option Compare Text
Private O1 As Worksheet 'déclare la varaiable O1 (Onglet 1)
Private O2 As Worksheet 'déclare la varaiable O1 (Onglet 2)
Private PL As Range 'déclare la varaiable PL (PLage)
Private TV As Variant 'déclare la varaiable TV (Tableau des Valeurs)

Private Sub UserForm_Initialize()
Set O1 = Worksheets("Feuil1") 'définit l'onglet O1
Set O2 = Worksheets("Feuil2") 'définit l'onglet O2
Set PL = O2.Range("A1").CurrentRegion 'définit la plage PL
Set PL = PL.Offset(1, 0).Resize(PL.Rows.Count - 1, PL.Columns.Count) 'redéfinit la plage PL sans la première ligne
Me.ListBox1.ColumnCount = PL.Columns.Count + 1 'définit le nombre de colonne de la ListBox1
Me.ListBox1.ColumnWidths = "20;50;50" 'dimension des colonnes
Me.ListBox1.List = PL.Value 'alimente la ListBox1
Me.ComboBox1.List = O1.Range("A2:A" & O1.Cells(Application.Rows.Count, "A").End(xlUp).Row).Value 'alimente la ComboBox1
End Sub

Private Sub ComboBox1_Change()
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
Dim J As Integer 'déclare la variable J (incrément)
Dim Nom As String 'déclare la variable Nom
Dim SV() As Variant 'déclare la variable SV (Somme des Valeurs)

If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Me.ListBox1.Clear 'vide la Listbox1
TV = PL 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tablaeu des valeurs TV
    'si la donnée colonne 1 de la boucle (convertie en texte) est égale à la valeur de la Combobox1
    'alimente le dictionnaire D avec la donnée en colonne 2 de la boucle
    If CStr(TV(I, 1)) = Me.ComboBox1 Then D(TV(I, 2)) = ""
Next I 'prochaine ligne de la boucle
TMP = D.keys 'récupère dans le tableau temporaire TMP la liste des éléments du dictionnaire sans doublon
ReDim SV(D.Count) 'redimensionne le tableau SV de la somme des valeurs (autant qu'en compte le dictionnaire D)
For J = 0 To UBound(TMP) 'boucle 1 : sur tous les élément du tableau temporaire TMP
    For I = 1 To UBound(TV, 1) 'boucle 2 :sur toutes les lignes I du tablaeu des valeurs TV
        If CStr(TV(I, 1)) = Me.ComboBox1.Value Then 'condition : si la donnée en colonne 1 de la boucle 2 (convertie en texte) est égale à la valeur de la ComboBox1
            'si la donnée en colonne 2 de la boucle 2 est égale à l'élément j du tableau temporaire TMP, définit la somme des valeurs de J, SV(J), en additionnant les montants
            If TV(I, 2) = TMP(J) Then SV(J) = SV(J) + TV(I, 4): Nom = TV(I, 3)
        End If 'fin de la condition
    Next I 'prochaine ligne de la boucle 2
    With Me.ListBox1 'prend en compte la Listbox1
        .AddItem 'ajoute un éléemnt
        .Column(0, .ListCount - 1) = Format(Me.ComboBox1.Value, "00") 'Code dans la colonne 0
        .Column(1, .ListCount - 1) = TMP(J) 'Num dans la colonne 1
        .Column(2, .ListCount - 1) = Nom 'Nom dans la colonne 2
        .Column(3, .ListCount - 1) = SV(J) 'somme des montants dans la colonne 3
    End With 'fin de la prose en compte de la ListBox1
Next J 'prochain élément de la boucle 1
End Sub

Bonjour à tous

Bonjour ThauThème

Ce que vous venez de faire est Top.

Rien à dire. Bonus en plus des commentaires. Un grand MERCI à vous et au forum

A bientôt

Rechercher des sujets similaires à "variable tableau"