ralph45
XLDnaute Impliqué
Bonjour ami.e.s XLDien.ne.s,
En fouinant sur ce site , je suis tombé sur un code de liste déroulante à choix multiples (LD_CM) qui me paraissait parfait.
Or, celui-ci ne fonctionne que sur une seule colonne. Comment l'adapter pour qu'il ait un impact sur des colonnes discontinues et avec des validations différentes ?
Dans le fichier exemple joint totalement fictif , j'aurai besoin de gérer 2 LD_CM sur les colonnes B et D.
Ultérieurement, je pourrai générer d'autres LD_CM sur les colonnes I, M, AB (au pif)...
En vous remerciant et à vot' bon coeur. Passez une agréable journée ensoleillée !
En fouinant sur ce site , je suis tombé sur un code de liste déroulante à choix multiples (LD_CM) qui me paraissait parfait.
Or, celui-ci ne fonctionne que sur une seule colonne. Comment l'adapter pour qu'il ait un impact sur des colonnes discontinues et avec des validations différentes ?
Dans le fichier exemple joint totalement fictif , j'aurai besoin de gérer 2 LD_CM sur les colonnes B et D.
Ultérieurement, je pourrai générer d'autres LD_CM sur les colonnes I, M, AB (au pif)...
En vous remerciant et à vot' bon coeur. Passez une agréable journée ensoleillée !
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Oldvalue As String
Dim Newvalue As String
Application.EnableEvents = True
On Error GoTo Exitsub
If Not Intersect(Target, Range("B2:B11")) Is Nothing Then
If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
GoTo Exitsub
Else: If Target.Value = "" Then GoTo Exitsub Else
Application.EnableEvents = False
Newvalue = Target.Value
Application.Undo
Oldvalue = Target.Value
If Oldvalue = "" Then
Target.Value = Newvalue
Else
If InStr(1, Oldvalue, Newvalue & ", ") > 0 Then
Target.Value = Replace(Oldvalue, Newvalue & ", ", "")
ElseIf InStr(1, Oldvalue, ", " & Newvalue) > 0 Then
Target.Value = Replace(Oldvalue, ", " & Newvalue, "")
ElseIf InStr(1, Oldvalue, Newvalue) = 0 Then
Target.Value = Oldvalue & ", " & Newvalue
End If
End If
End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
End Sub