Evenement change sur plusieurs combobox
Bonjour,
Comment traiter l’événement change sur plusieurs combobox contenus dans un frame (frame) pour éviter du code à répétition?
Voici le code pour les trois premiers combobox
Merci pour l'aide
ddetp88
Private Sub ComboBox10_Change()
If DisableEvent = True Then Exit Sub
Set BD = Sheets("base de données")
Me.Frame1.ComboBox20.Clear
'recherche la colonne
col = BD.Range("B1:D1").Find(what:=Me.Frame1.ComboBox10.Value).Column
Ln = BD.Cells(2, col).End(xlDown).Row + 1 'trouve la dernière ligne
For i = 2 To Ln
Me.Frame1.ComboBox20.AddItem BD.Cells(i, col)
Next i
End Sub
Private Sub ComboBox11_Change()
If DisableEvent = True Then Exit Sub
Set BD = Sheets("base de données")
Me.Frame1.ComboBox21.Clear
'recherche la colonne
col = BD.Range("B1:D1").Find(what:=Me.Frame1.ComboBox11.Value).Column
Ln = BD.Cells(2, col).End(xlDown).Row + 1 'trouve la dernière ligne
For i = 2 To Ln
Me.Frame1.ComboBox21.AddItem BD.Cells(i, col)
Next i
End Sub
Private Sub ComboBox12_Change()
If DisableEvent = True Then Exit Sub
Set BD = Sheets("base de données")
Me.Frame1.ComboBox22.Clear
'recherche la colonne
col = BD.Range("B1:D1").Find(what:=Me.Frame1.ComboBox12.Value).Column
Ln = BD.Cells(2, col).End(xlDown).Row + 1 'trouve la dernière ligne
For i = 2 To Ln
Frame1.ComboBox22.AddItem BD.Cells(i, col)
Next i
End Sub
g
Bonjour
Essaie ce code :
Option Explicit
Dim i, j
Private Sub ComboBox10_Change()
i = 10
Call Modif
End Sub
Private Sub ComboBox11_Change()
j = 11
Call Modif
End Sub
Private Sub ComboBox12_Change()
j = 12
Call Modif
End Sub
Sub Modif()
If DisableEvent = True Then Exit Sub
Set BD = Sheets("base de données")
Me.Frame1.ComboBox20.Clear
'recherche la colonne
col = BD.Range("B1:D1").Find(what:=Me.Frame1.Controls("ComboBox" & j).Value).Column
Ln = BD.Cells(2, col).End(xlDown).Row + 1 'trouve la dernière ligne
For i = 2 To Ln
Me.Frame1.Controls("ComboBox" & j + 10).AddItem BD.Cells(i, col)
Next i
End Sub
Bye !
Bonsoir gmb,
Juste ce que je voulais.
J'ai fait deux petites modifications.
Private Sub ComboBox10_Change()
j = 10 ' tu avais mis i
Call Modif
End Sub
Sub Modif()
If DisableEvent = True Then Exit Sub
Set BD = Sheets("base de données")
Me.Frame1.Controls("ComboBox" & j + 10).Clear 'il faut effacer le combobox j+10
'recherche la colonne
col = BD.Range("B1:D1").Find(what:=Me.Frame1.Controls("ComboBox" & j).Value).Column
Ln = BD.Cells(2, col).End(xlDown).Row + 1 'trouve la dernière ligne
For i = 2 To Ln
Me.Frame1.Controls("ComboBox" & j + 10).AddItem BD.Cells(i, col)
Next i
End Sub
Merci pour le coup de main. Je vais économiser mon clavier (moins de texte à taper)
ddetp88