Voici déjà une modification par rapport à votre fichier V2
- supprimez votre "sub Ouvre_formulaire" qui se trouve dans l'suerform
- Vider votre module 1 complètement
- une fois le module 1 vidé, collez le code ci-dessous
Sub OuvreFormulaire()
Load Formulaire
Formulaire.Show
End Sub
- Allez ensuite dans votre userform et remplacez le code Private Sub UserForm_Initialize par celui ci-dessous. Il chargera la combo Marque
Private Sub UserForm_Initialize()
Dim c As Range
Dim tablo As Collection
Dim item
Set tablo = New Collection
On Error Resume Next
With Sheets("L1")
For Each c In .ListObjects("Tableau12").ListColumns(1).DataBodyRange
tablo.Add c.Value, CStr(c.Value)
Next c
End With
On Error GoTo 0
For Each item In tablo
cboMarque.AddItem item
Next item
End Sub
- Ensuite collez le code ci-dessous pour la combo Modele
Private Sub cboMarque_Change()
Dim c As Range
Dim tablo As Collection
Dim item
cboModele.Clear
Set tablo = New Collection
On Error Resume Next
With Sheets("L1")
For Each c In .ListObjects("Tableau12").ListColumns(2).DataBodyRange
If c.Offset(0, -1) = cboMarque.Value Then
tablo.Add c.Value, CStr(c.Value)
End If
Next c
End With
On Error GoTo 0
For Each item In tablo
cboModele.AddItem item
Next item
End Sub
NB : dans les deux codes vous pouvez changer le nom "Tableau12" par ce que vous voulez. Il suffit de modifier le nom dans le gestionnaire de noms du menu Formules et de remplacer Tableau12 par celui que vous aurez choisi
En principe vous devriez pas avoir de prix dans la feuille F1 si c'est la feuille Liste que vous allez compléter en cliquant sur le bouton Entree dans l'userform
Faites déjà un test pour vérifier si cela fonctionne bien comme vous voulez