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
| Private Sub Ini() 'initialisation de l'USF
Dim CTRL As Control 'Variable pour la collection des controls
Dim L As Long 'Variable pour connaitre le numéro de derniere ligne
Dim i As Long 'Variable pour connaitre incrémenter les Data
Dim sItem As String 'mémorise le dernier élément mis en liste
Dim WS As Excel.Worksheet
'On Vide tous les Controls
For Each CTRL In Me.Controls
If TypeOf CTRL Is MSForms.TextBox Or TypeOf CTRL Is MSForms.ComboBox Then
CTRL = ""
End If
Next CTRL
Me.CmbNom.Clear 'On vide les précédentes données
Set WS = ThisWorkbook.Sheets("Base") 'On identifie l'objet pour la feuille de travail
L = WS.Range("A65536").End(xlUp).Row 'On identifie la dernière ligne en partant du bas
'Pour éviter les fash d'écran pour le select ci dessous
Application.ScreenUpdating = False
WS.Select 'On sélectionne la feuille sinon bug si elle ne l'est pas
WS.Range("A2").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess 'Le Sort
For i = 3 To L 'Boucle départ 2 (Ligne 2 de la feuille, jusqu'à dernière
If WS.Range("A" & i) <> sItem Then
sItem = WS.Range("A" & i) 'evite les doublons dans la combo
Me.CmbNom.AddItem sItem
End If
Next i
Application.ScreenUpdating = True
End Sub
Private Sub CmbNom_Click() 'combo déclenché au click
If Me.CmbNom.ListIndex = -1 Then Exit Sub 'ON sort si pas de sélection
Txt1 = WS.Range("B" & Me.CmbNom.ListIndex + 2) 'On alimente les données correspondant à la ligne
'ici on initialise les Variable pour mémoriser le valeur précédente en cas de Modif
With Me
Nom = .CmbNom
End With
End Sub |
Partager