Bonjour,
Une proposition pour Excel 365 version 1911+.
Elle utilise les nouvelles fonctions de tableaux dynamiques (Unique et Filtrer) pour créer les listes déroulantes.
La gestion de la liste déroulantes des villes est assuré par VBA.
Cdlt.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, lo As ListObject, lCol As Long
On Error GoTo err_Handler
Application.EnableEvents = False
Set rng = Range("Données")
If Not Intersect(Target, rng) Is Nothing Then
Set lo = rng.ListObject
lCol = Target.Column - lo.Range.Column + 1
Select Case lCol
Case 5:
With Target.Offset(, 1)
.Value = vbNullString
.Validation.Delete
End With
If Not IsEmpty(Target) Then
Worksheets("bdd_VILLES").Cells(7).Value = Target.Value
Target.Offset(, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=bdd_VILLES!$G$2#"
Else
Target.Offset(, 1).ClearContents
End If
Case 6:
Target.Validation.Delete
If IsEmpty(Target) Then Target.Offset(, -1).ClearContents
End Select
End If
exit_Handler:
Application.EnableEvents = True
Exit Sub
err_Handler:
MsgBox "erreur : " & Err.Number & vbLf & Err.Description
Resume exit_Handler
End Sub