Bonjour à tous
voila plusieurs jours que je galère pour adapter le code M. Boisgontier, qui fait référence à une plage de cellule, qui peux être triée via un combo (sur la 3eme colonne) dans un listbox,
hors moi je souhaite faire exactement la même chose mais à partir de variables tableaux "grattées" en dur dans le code comme plus bas et à partir de la 1ère colonne
l'idée est de remonter : boucherie et cremerie dans le combobox => et trier le listbox en fonction
Si quelqu'un pouvait me modifier le code (plus bas) pour pouvoir y arriver ce serait vraiment sympa, car là je sèche fortement !
merci par avance si quelqu'un avait une idée.
bonne soirée à tous
tableau de variables (en vraie il est plus grand 43 lignes et 19 colonnes)
Dim bd(6, 2) As Variant
bd(0, 0) = "boucherie"
bd(0, 1) = "boeuf"
bd(1, 0) = "boucherie"
bd(1, 1) = "lapin"
bd(2, 0) = "boucherie"
bd(2, 1) = "volaille"
bd(3, 0) = "cremerie"
bd(3, 1) = "yahourt"
bd(4, 0) = "cremerie"
bd(4, 1) = "beurre"
bd(5, 0) = "cremerie"
bd(5, 1) = "creme fraiche"
et voici le code original de M. Boisgontier
Dim f, bd
Option Compare Text
---------------------------------------------------------------
Private Sub UserForm_Initialize()
Set f = Sheets("bd")
Set d = CreateObject("Scripting.Dictionary")
bd = f.Range("A2
" & f.[A65000].End(xlUp).Row).Value
Me.ListBox1.List = bd
For i = LBound(bd) To UBound(bd)
d(bd(i, 3)) = ""
Next i
Me.ComboBox1.List = d.keys
End Sub
Private Sub ComboBox1_click()
ville = Me.ComboBox1
n = 0
Me.ListBox1.Clear
For i = LBound(bd) To UBound(bd)
If bd(i, 3) = ville Then
Me.ListBox1.AddItem bd(i, 1)
Me.ListBox1.List(n, 1) = bd(i, 2)
Me.ListBox1.List(n, 2) = bd(i, 3)
Me.ListBox1.List(n, 3) = bd(i, 4)
n = n + 1
End If
Next i
End Sub
--------------------------------------------------------------------------------------------
Private Sub B_recup_Click()
'Sheets("Recup").[A2].Resize(Me.ListBox1.ListCount, 4).Value2 = Me.ListBox1.List
'a = Me.ListBox1.Column
'Sheets("Recup").[A2].Resize(UBound(a, 2) + 1, UBound(a) + 1).Value2 = Application.Transpose(a)
a = Me.ListBox1.List
Sheets("Recup").[A2].Resize(UBound(a) + 1, UBound(a, 2) + 1).Value2 = a
End Sub