Private Sub Worksheet_Change(ByVal Target As Range)
[COLOR=red]Dim r As Range 'déclare la variable r (Recherche)[/COLOR]
[COLOR=red]Dim n As String 'déclare la variable n (Nom)[/COLOR]
[COLOR=red]Dim cel As Range 'déclare la variable cel (CELlule)[/COLOR]
[COLOR=red]If Target.Address = "$H$7" Then 'condition 1 : si l'adresse de la cellule est H7[/COLOR]
[COLOR=red] With Sheets("Conges (2)") 'prend en compe l'onglet "Conges (2)"[/COLOR]
[COLOR=red] Set r = .UsedRange.Find(Target.Value, .Range("D6"), xlValues, xlWhole) 'définit la variable r[/COLOR]
[COLOR=red] If Not r Is Nothing Then 'condition 2 : si il existe au moins une occurrence de r[/COLOR]
[COLOR=red] n = .Cells(r.Row, 4).Value 'définit la variable n (le nom)[/COLOR]
[COLOR=red] For Each cel In Range("ListChoisis") 'boucle dans la plage des noms[/COLOR]
[COLOR=red] If cel.Value = n Then 'condition 3 : si la valeur de la cellule est égale au nom[/COLOR]
[COLOR=red] cel.ClearContents 'efface la cellule[/COLOR]
[COLOR=red] Exit For 'sort de la boucle[/COLOR]
[COLOR=red] End If 'fin de la condition 3[/COLOR]
[COLOR=red] Next cel 'prochain nom de la plage de noms[/COLOR]
[COLOR=red] End If 'fin de la condition 2[/COLOR]
[COLOR=red] End With 'fin de la prise en compte de l'onglet "Conges (2)"[/COLOR]
[COLOR=red]End If 'fin de la condition 1[/COLOR]
If Intersect(Range("J20:J30"), Target) Is Nothing Then Exit Sub
If Application.WorksheetFunction.CountIf(Range("J20:J30"), Target) > 1 Then
MsgBox "cette personne figure deja dans le planning"
Target.ClearContents
End If
End Sub