Dim Cel As Range 'définit la variable Cel en tant que cellule
Application.EnableEvents = False 'Suspend le déclenchement de la procédure lors de la modification des cellules déclenchée par la macro
For Each Cel In Rows(1).SpecialCells(xlCellTypeConstants) 'cette boucle balaie toutes les cellules de la ligne 1 qui contiennent une valeur
If InStr(Cel, "sam dim") = 0 And Cel.Offset(17, 0) <> "" Then 'si la cellule (Cel) ne contient ni "sam" ni "dim" alors les instructions suivantes jusqu'au Next sont effectuées. Sinon, le Next renvoie à la cellule suivante
If Cel.Offset(18, 0) = "" Then Cel.Offset(18, 0) = "C" 'si la cellule située 18 lignes sous Cel et sur la même colonne est vide elle se voit affectée la valeur "C". Offset(ligne, colonne) signifie décalage de 18 lignes en dessous et 0 colonne par rapport à Cel
If Cel.Offset(19, 0) = "" Then Cel.Offset(19, 0) = "C" 'idem ci-dessus
End If
Next
Application.EnableEvents = True 'rétablit la détection de modification des cellules