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 
	 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		