Tri tableau avec Userform
Bonjour,
Je suis a la recherche d'un code en VBA qui pourrais me simplifier la vie énormément.
Je m'explique:
J'ai une base de données sortie de SAP et j'ai besoin de récupérer certaine données du tableau en fonction d'un N° de BL
Mais au niveau du Code de UserForm je suis perdu....
Si quelqu'un à une idée je suis preneur.
J'ai des débuts de code trouvé sur le Forum mais pas d'annotations je ne comprend pas le code...:
Option Explicit
Dim dico, nbLn, f, c, i, j, k, tablof, tablo(), tabloR
Private Sub ComboBox1_Change()
nbLn = 0
For Each f In Worksheets
tablof = f.Range("B2:D" & f.Range("B1").CurrentRegion.Rows.Count)
For i = 1 To UBound(tablof, 1)
ReDim Preserve tablo(5, nbLn + 1)
For j = 1 To 3
tablo(j - 1, nbLn) = tablof(i, j)
Next j
tablo(3, nbLn) = f.Name
tablo(4, nbLn) = i + 1
nbLn = nbLn + 1
Next i
Erase tablof
Next f
ReDim tabloR(UBound(tablo, 2), UBound(tablo, 1))
tabloR = Application.Transpose(tablo)
For i = 1 To UBound(tabloR, 1)
For j = 1 To 3
If tabloR(i, j) = ComboBox1 Then
ListBox1.AddItem
For k = 0 To 4
ListBox1.Column(k, ListBox1.ListCount - 1) = tabloR(i, k + 1)
Next k
End If
Next j
Next i
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub Label2_Click()
End Sub
Private Sub ListBox1_Click()
End Sub
Private Sub UserForm_initialize()
ListBox1.ColumnCount = 5
Set dico = CreateObject("Scripting.Dictionary")
nbLn = 0
For Each f In Worksheets
tablof = f.Range("B2:D" & f.Range("B1").CurrentRegion.Rows.Count)
For i = 1 To UBound(tablof, 1)
ReDim Preserve tablo(5, nbLn + 1)
For j = 1 To 3
tablo(j - 1, nbLn) = tablof(i, j)
Next j
tablo(3, nbLn) = f.Name
tablo(4, nbLn) = i
nbLn = nbLn + 1
Next i
For Each c In f.Range("B1").CurrentRegion.Offset(1, 1).SpecialCells(xlCellTypeConstants, 23)
If c.Value <> "" Then
dico(c.Value) = ""
End If
Next c
Erase tablof
Next f
ComboBox1.List = Application.Transpose(dico.keys)
End Sub
Sinon Sans UserForm il aurais une solution de tri avec des liens VBA ? dans le fichier ci -joint :
je clique sur le N° BL dans la feuille "Exmple1"(je l'ais mis en rouge pour exemple) et cela me revoie au tableau de la base de données SAP en faisant le tri avec tous les mêmes numéros de BL, cela me semble possible. Si quelqu'un a un début de code sur lequel je pourrais travailler je suis preneur.
Cordialement !
Bonjour,
Merci de la réponse je le met a ma sauce et je link le résultat pour les intéressés plus tard
Votre site est dans mes favoris maintenant