dreamalain
XLDnaute Junior
Bonsoir
J'ai plusieurs actions à coder sur une quarantaine de combobox
Je ne sais les programmer que les uns après les autres et ca représente beaucoup de lignes
Pouvez m'aider à les optimiser :
Dans l'initialisation de l'userform :
Dans le bouton de commande pour enregistrer la ligne des données
Merci pour vos idées
J'ai plusieurs actions à coder sur une quarantaine de combobox
Je ne sais les programmer que les uns après les autres et ca représente beaucoup de lignes
Pouvez m'aider à les optimiser :
Dans l'initialisation de l'userform :
VB:
'Remplissage de la liste
With sheets("TEST")
Me.Combobox.List = .Range("A2:A" & .Range("A65536").End(xlUp).Row).Value
end with
'Récupération de la valeur de la ligne existante sur la feuille en cour :
Combobox1.Value = Cells(8, 2)
Remplissage par défaut d'un item si la cellule en colonne B est renseignée :
If Not IsEmpty(Cells(8, 2).Value) Then Combobox1.ListIndex = 5
Dans le bouton de commande pour enregistrer la ligne des données
VB:
Private Sub CmdEnregistrer_Click()
Application.ScreenUpdating = False
With Sheets("TEST")
lg = 0
Select Case Combobox1.ListIndex
Case -1
If Combobox1 <> "" Then lg = .Range("A65536").End(xlUp).Row + 1
Case Else
lg = Combobox1.ListIndex + 2
End Select
If lg > 0 Then
.Cells(lg, 1) = Me.Combobox1
.Cells(lg, 2) = Me.Combobox2
.Cells(lg, 3) = Me.TextBox1
.Cells(lg, 6) = Me.TextBox2
.Cells(lg, 9) = Me.Combox3
.Cells(lg, 10) = Me.ComboCoV1
End If
End With
'Copie de la ligne sur la feuille
With activesheet
.Cells(8, 2) = Combobox1.Value
End With
Application.ScreenUpdating = True
Unload Me
' Classement de la liste par ordre alphabétique :
With Sheets("TEST").Range(" A2:T10000").Sort Key1:=Workbooks("Liste.xlsx").Sheets("TEST").Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Merci pour vos idées