Private pl As Range 'déclare la variable pl (PLage)
Private vi As String 'déclare la variable vi (Valeur Initiale)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'au changement de sélection
Set pl = Range("A1").CurrentRegion 'définit la plage pl
Set pl = pl.Offset(1, 1).Resize(pl.Rows.Count - 1, pl.Columns.Count - 1) 'redéfinit la plage pl
'si la cellule sélectionnée ne fait pas partie de la plge pl, vi est vide, sort de la procédure
If Application.Intersect(Target, pl) Is Nothing Then vi = "" : Exit Sub
vi = Target.Value 'définit la valeur initiale de la cellule
End Sub
Private Sub Worksheet_Change(ByVal Target As Range) 'à l'édition dans une cellule
Dim nc As String 'déclare la variable nc (Nom du Collaborateur)
Dim d As Date 'déclare la variable d (Date)
Dim col As Byte 'déclare la variable col (COLonne)
Dim r As Range 'déclare la variable r (Recherche)
Set pl = Range("A1").CurrentRegion 'définit la plage pl
Set pl = pl.Offset(1, 1).Resize(pl.Rows.Count - 1, pl.Columns.Count - 1) 'redéfinit la plage pl
'si la cellule sélectionnée ne fait pas partie de la plge pl, sort de la procédure
If Application.Intersect(Target, pl) Is Nothing Then Exit Sub
Select Case UCase(Target.Value) 'agit en fonction du cas de la valeur éditée (accepte aussi les minuscules)
Case "S" 'cas "s" ou "S"
col = 2 'définit la colonne
Case "A" 'cas "a" ou "A"
col = 3 'définit la colonne
Case "" 'cas vide (cellule effacée)
col = IIf(vi = "S", 2, 3): nc = "" 'définit la colonne, définit nc (vide)
Case Else 'tous les autres cas
Exit Sub 'sort de la procédure
End Select 'fin de l'action en fonction de ...
If Target.Value <> "" Then nc = Cells(1, Target.Column) 'si nc la cellule n'est pas effacée, définit la variable nc
d = CDate(Cells(Target.Row, 1)) 'définit la date
With Sheets("Feuil2") 'prend en compte l'onglet "Feuil2"
Set r = .Columns(1).Find(d, .Range("A1"), xlFormulas, xlWhole) 'dérfinit la recherche r
'si il existe au moins une occurrence, place dans la colonne col et la ligne de la date, la variable nc
If Not r Is Nothing Then .Cells(r.Row, col).Value = nc
End With 'fin de la prise en compte de l'onglet "Feuil2"
End Sub