Bonjour à toutes et tous,
Je sollicite votre aide à nouveau car j'essaie d'adapter un code qu'un dénommé Robert m'avait sympathiquement proposé il y a quelque temps.
Le tout est assez basique :
Sur une feuille Source j'ai en colonne B des codes postaux et en colonne C le nom des villes correspondantes
Certaines villes partagent le même code postal.
J'ai un formulaire avec 2 combobox
Combobox1 (liste déroulante pour le choix d'un code postal)
Combobox 2 (liste déroulante pour le choix de la ville (qui s'ajuste en fonction du code postal, c'est à dire que si le code postal correspond à plusieurs villes alors la combobox2 n'affiche que les villes qui partagent le même code postal, si il n'y a qu'une occurrence du code postal alors la combobox2 n'affiche que le nom de la ville qui correspond)
Merci beaucoup pour votre aide
Je sollicite votre aide à nouveau car j'essaie d'adapter un code qu'un dénommé Robert m'avait sympathiquement proposé il y a quelque temps.
Le tout est assez basique :
Sur une feuille Source j'ai en colonne B des codes postaux et en colonne C le nom des villes correspondantes
Certaines villes partagent le même code postal.
J'ai un formulaire avec 2 combobox
Combobox1 (liste déroulante pour le choix d'un code postal)
Combobox 2 (liste déroulante pour le choix de la ville (qui s'ajuste en fonction du code postal, c'est à dire que si le code postal correspond à plusieurs villes alors la combobox2 n'affiche que les villes qui partagent le même code postal, si il n'y a qu'une occurrence du code postal alors la combobox2 n'affiche que le nom de la ville qui correspond)
Code:
Private Sub ComboBox1_AfterUpdate()
'Code de Robert Excel Download dit titiborregan5
' Efface le choix de la liste déroulante "Code postal"
Me.ComboBox1.ListIndex = -1
' Efface les éléments de la liste déroulante "Ville"
Me.ComboBox2.RowSource = ""
' Avec la feuille source
With Sheets("Source")
' Une variable prend la valeur du Code Postal saisie
sCP = Me.ComboBox1
' On trouve le code postal en colonne B
Dlig = .Range("B" & Rows.Count).End(xlUp).Row
' Pour chacune des lignes de la source
For Lig = 2 To Dlig
' Vérifier si le code postal correspond à celui saisi ou sélectionné
' Cela permet de gérer les cas où un même code postal est attribué à plusieurs communes
If .Range("B" & Lig) = sCP Then
MsgBox ("pour ce code postal : " & sCP & " C'est cette ville " & .Range("C" & Lig))
'Si c'est le cas alors la liste déroulante "Ville" fera apparaître toutes ces communes au même code postal
Me.ComboBox2.AddItem .Range("C" & Lig)
End If
Next Lig
End With
End Sub
Merci beaucoup pour votre aide
Pièces jointes
Dernière édition: