Dim AT As String 'déclare la variable AT (ATtribut)
Dim dest As Range 'déclare la variable DEST (cellule de DESTination)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim R As Range 'déclare la variable R (Rechrrhe)
If Target.Column = 4 And Target.Row > 11 And Cells(Target.Row, 1) <> "" Then 'condition 1
Cancel = True
i = Target.Row
AT = Cells(i, 1) 'définit l'attribut AT
If Target.Value = "" Then 'condition 2 : si la cellule est vide
With Sheets("Formulaire Process") 'prend en compte l'onglet "Formulaire Process"
.[W1] = .[W1] + 1 'incrémente la valeur de W1
If .Range("A6") = "" Then
Set dest = .Range("A6")
Else
Set dest = .Range("A5").End(xlDown).Offset(1, 0)
End If
dest.Value = Cells(i, 1) 'la (valeur de la cellule W1)ième cellule de la plage PL, Colonne 1 (=A) prend la valeur de l'attribut
dest.Offset(0, 1).Value = Cells(i, 2) 'la (valeur de la cellule W1)ième cellule de la plage PL, Colonne 2 (=B) prend la valeur du sens
dest.Offset(0, 23) = Cells(i, 10) 'la (valeur de la cellule W1)ième cellule de la plage PL, Colonne 24 (=X) prend la valeur du CodeName
End With 'fin de la prise en compte de l'onglet "Formulaire Process"
Cells(i, 4) = "ü" 'ecrit une coche dans la cellule
Else 'sinon (condition 2)
With Sheets("Formulaire Process") 'prend en compte l'onglet "Formulaire Process"
Set PL = .Range("A6:A43") 'définit la plage PL
.[W1] = .[W1] - 1 'décrémente la valeur en W1
'définit la recherche R (recherche l'attribut AT dans la colonne 1
Set R = .Columns(1).Find(AT, , xlValues, xlWhole)
'si il existe au moins une occurrence trouvée, efface le contenu de la ligne de la première occurrence trouvée
If Not R Is Nothing Then .Rows(R.Row).ClearContents
End With 'fin de la prise en compte de l'onglet "Formulaire Process"
Cells(i, 4).ClearContents 'supprime la "coche" dans la cellule
End If 'fin de la condition 2
End If 'fin de la condition 2
End Sub