Bonjour MB, bonjour le forum,
Essaie comme ça :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim PL As Range 'déclare la variable PL (PLage)
Set PL = Range("C7:C16") 'définit la plage PL (à adapter éventuellement)
'si la cellule modifiée se trouve ailleurs que dans la plage PL, sort de la procédure
If Application.Intersect(Target, PL) Is Nothing Then Exit Sub
Select Case Target.Value 'agit en fonction de la valeur de la cellule modifiée
Case "Transfert de comptes" 'cas
L = "Depuis :,Vers :" 'définit la liste L
Case "Màj documents" 'cas
L = "Date :,Poids :" 'définit la liste L
Case "création d'index " 'cas
L = "Client :,Index :" 'définit la liste L
Case "Données marchandise " 'cas
L = "Poids :,Dimension :, Nombre :" 'définit la liste L
End Select 'fin de l'action en fonction de la valeur de la cellule modifiée
With Target.Offset(0, 1).Validation 'prend en compte la validation de donnée de la cellule une colonne à droite de la cellule modifiée
.Delete 'efface l'ancienne validation de donnée
.Add xlValidateList, Formula1:=L 'applique la liste L comme liste de validation de donnée
End With 'fin de la prise en compte la validation de donnée...
End Sub
[Édition]
Bonjour Gmb, nos post se sont croisés... Nous n'avons pas compris la même chose visiblement...