Re : range = Cells?
Salut à tous
Range = plage
petite parenthèse :
x=1
y=45
cells(x,y).value = "je suis la cellule A45"
Est faux : Cells(1,45) = "Je suis dans la cellule AS1"
Cells : référence d'une cellule d'une plage : c'est une propriété de Range, et de ce qui s'y rattache (application ou worksheet)
Le "problème" de distinction, vient du fait qu'Excel à des valeurs par défaut. Et quand tu écris Cells(2,4), ça revient à écrire Activesheet.Cells(2,4) : D2 de la feuille active.
range("C3:G14").cells(2,3) : 2me ligne 3me colonne de la plage définie par ce qui précéde soit "E4" de la feuille active
Que l'on peut écrire aussi :
range("C3:G14").cells(8) (8me cellule de la plage (C3, D3, E3, F3, G3, C4, D4, E4)
Pour faire simple, personnellement j'emploie :
- Range quand la colonne est fixe et j'utilise les lettres pour la désigner
- cells quand elle évolue et j'use des numéros de colonne
Range("B" & x) peut aussi être remplacé par Cells(x,"B"), mais ....
Cells(2, "C").Select : sélectionne la cellule "C2"
Range("C3:G14").Cells(2, "C").Select : sélectionne la cellule "E4"
C'est sûrement rigolo à faire, mais ingérable en dépannage alors que
Range("C3:G14").Cells(2, 3).Select : sélectionne la cellule "E4"
de même Range("BZ" & 1) est plus lisible que cells(1,78)
Pour moi, la lisibilité d'un code est essentielle. Même si quand on le crée, ça a peu d'importance, quand on revient dessus après des mois, et des milliers de lignes de code, pour dépanner ou faire évoluer la macro, on voit toute la différence. Et je ne parle pas de macro qui ont été crées par des tiers.
A+