1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| Dim f, choix()
Private Sub UserForm_Initialize()
'====================================================================================================
'Pour avoir toutes et que les lignes pleines dans la ListBox, sans plus, car la formule est considérées comme celule pleine
'Formule en colonne B =C1&" "&D1&" "&E1&" "&F1
Dim Plage_cellules_pleines As Variant
Application.ScreenUpdating = False ' Désactive le changement des pages à l'écran lors de l'éxécution de la macro
'Vider toutes les cellules de colonne A
Sheets("Data Commission adresse").Select
Columns("A:A").Select
Selection.ClearContents
Plage_cellules_pleines = Application.CountA([C1:C65000]) 'Compte le nombre de cellules pleine dans la colonne C
Range("B" & Plage_cellules_pleines).Select 'Selectionne la cellule B de la même ligne
Range(Selection, Selection.End(xlUp)).Select 'Sélectionne la plage contre le haut
' Copie la plage et colle que les valeurs en colonne A et largeur de colonne automatique
Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("A:A").EntireColumn.AutoFit
'====================================================================================================
Sheets("Commandes").Select
Set f = Sheets("Data Commission adresse")
Set Rng = f.Range("A2:A" & f.[A65000].End(xlUp).Row) ' Sélectionne toutes les lignes non vide, pas de ligne vide à la fin du formulaire
choix = Application.Transpose(Rng)
Me.ListBox1.List = choix
Me.TextBox1.SetFocus 'Place le curseur dans la textbox
Application.ScreenUpdating = True ' Résactive le changement des pages à l'écran lors de l'éxécution de la macro
End Sub
Private Sub TextBox1_Change()
mots = Split(Trim(Me.TextBox1), " ") ' Permet une recherche multiple, taper les requêtes en séparant par un espace
tbl = choix
For i = LBound(mots) To UBound(mots)
tbl = Filter(tbl, mots(i), True, vbTextCompare)
Next i
Me.ListBox1.List = tbl
End Sub
Private Sub ListBox1_Click()
ActiveCell = Me.ListBox1 'Inscrit le texte dans la cellule active
Unload Me
End Sub |