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

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

Rechercher des sujets similaires à "evenement change combobox"