Bonjour à tous,
For Each c In isect.Cells
If c.Value = "" Or Not IsDate(c) Then
c.Offset(, 5).Resize(, 3).ClearContents
c va retourner successivement chacune des cellules de la plage isect ; c sera donc de type "Range".
Ensuite on teste si c est vide ou bien si c n'est pas une date. Si c'est le cas alors :
on part de la cellule c et on va repérer la cellule qui est à 5 colonnes vers la droite à partir de c : c.Offset(, 5)
on va redimensionner cette "nouvelle cellule" : on conserve sa dimension en nombre de lignes et on lui donne une largeur de 3 colonnes : .resize(,5).
Attention : on n'intervient pas "physiquement" sur la cellule. C'est du "repérage". On peut voir cela comme la construction d'une adresse d'une nouvelle plage qu'on détermine à partir de la cellule c.
Pour Resize, on indique normalement Resize( nlig , ncol ). On fait un redimensionnement pour avoir nlig et ncol. Si nlig (resp. ncol) est omis, on considère qu'on ne modifie pas la dimension verticale (resp. horizontale).
Pour Offset, on indique normalement Offset( nlig , ncol ) qui fait une translation de nlig vers le bas (si nlig est positif sinon vers le haut) et une translation de ncol colonnes vers la droite (si ncol est positif sinon vers la gauche). Si nlig (resp. ncol) est omis, on considère que nlig (resp. ncol) vaut 0. Il n'y aura pas de translation verticale (resp. horizontale).
Pour offset et resize, si on omet ncol, on peut aussi omettre la virgule. Les écritures suivantes sont équivalentes entres elles :
- Offset (2 , 0) ; Offset (2 , ) ; Offset (2 )
- Offset (0 , 3) ; Offset (, 3)
On est donc parti de c et on a construit "mentalement" une nouvelle plage décalée de 5 colonnes vers la droite puis redimensionnée à 3 colonnes.
On termine par un effacement de cette plage : c.Offset(, 5).Resize(, 3).ClearContents
C'est à ce moment (.ClearContents) qu'on agit vraiment sur la nouvelle plage qu'on a déterminée avec Offset et Resize.