Range et Cells : l`essentiel

Transcription

Range et Cells : l`essentiel
Range et Cells : l’essentiel
Cibler une cellule de la feuille active
Cells( numeroLigne, numeroColonne)  type Range
Exemple :
Cells(3,1).Value = 10  la valeur de L3C1 devient 10
Cibler une plage de la feuille active
Range( Cellule1 As Range, Cellule2 As Range)  type Range
Range( Cells( numLigne1, numColonne1) ), Cells( numLigne2, numColonne2) )
Exemple :
Range( Cells(3,1), Cells(5,3) ).Value = 10  toutes les cellules de la plage L3C1 :L5C3
prennent la valeur 10
Une boucle est toujours superflue quand vous voulez faire un traitement identique sur plusieurs cellules d’une
plage. Les boucles sont nécessaires si le traitement dépend d’une condition.
Valeurs et informations
Value : la valeur de la cellule
Row : le numéro de la ligne
Column : le numéro de la colonne
Formula : la formule Excel classique (As String)
FormulaR1C1Local : la formule L1C1 (As String)
Les collections
Cells : la collection des cellules
Rows : la collection des lignes de la plage
Columns : la collection des colonnes de la plage
Boucles For Each possible pour une plage Rg (les variables c, col et ligne sont As Range) :
For Each c In Rg.Cells
For Each col In Rg.Columns
For Each ligne In Rg.Rows
Mise en page
Interior.Color = RGB(rouge[0..255], vert[0..255], bleu[0..255])  couleur de la
cellule
Font.Bold = true /false  gras
Font.Italic = true /false  italique
Exemple : dans la plage rg, mettre en rouge les cellules qui sont en gras
For Each c In rg.Cells
If c.Font.Bold = True then
c.Interior.Color = RGB(255,0,0)
Vider les cellules
Clear : effacer contenu et mise en page
ClearContents : effacer seulement la valeur
ClearFormats : effacer seulement la mise en page
Cibler les cellules d’une autre feuille
Cells et Range ciblent ActiveSheet (la feuille active). Utilisez
Worksheets(«nomFeuille»).Range ou Worksheets(«nomFeuille»).Cells pour cibler une
autre feuille du classeur actif.
Worksheets(« dimitri »).Cells(2,1).Font.Bold = true : la cellule L2C1 de la feuille
« dimitri » est en gras.
Range et Cells : l’essentiel
www.infodauphine.com
Parcourir une colonne
Exemple : Tester les valeurs positives dans les 10 1ères cellules de la 3 e colonne
Boucle For (astuce : toujours utiliser nl quand on parcourt des lignes (numéro ligne)
Dim nl As Integer
For nl = 1 To 10
If Cells(nl, 3).Value > 0 Then
Boucle For Each
Collection parcourue: (objet Range correspondant à la colonne).Cells
Dim c As Range
For Each c In Range( Cells(1,3), Cells(10,3) ).Cells
If c.Value > 0 Then
Parcourir une ligne
Boucle For : remplacer nl par nc (numéro colonne), qui devient le 2e indice de Cells
For nc = 1 To 10
If Cells(3, nc).Value > 0 Then
Boucle For Each: il suffit de cibler la bonne plage:
For Each c In Range( Cells(3,1), Cells(3,10) ).Cells
Parcourir plusieurs lignes/colonnes
3 options, à vous de choisir la plus pratique pour l’exercice concerné.
Boucle For
Il faudra forcément 2 boucles imbriquées. Si vous voulez faire les cellules de plusieurs colonnes, la 1ère boucle
doit être For nc, et le For nl à l’intérieur (je fais chaque ligne de la 1ère colonne, puis celles de la 2e, etc.).
On inverse les boucles si on veut faire les cellules de plusieurs lignes.
Attention aux initialisations : j’initialise avec le For nc les variables pour l’ensemble des colonnes, et dans le
For nc les variables par colonne.
Travailler avec soin les exercices C4 et C5 concernant ces pratiques indispensables au Partiel.
Exemple : compter les valeurs paires de chaque colonne pour la plage L2C3 :C9C7.
For nc=3 To 7
nb = 0
For nl=2 To 9
If Cells(nl,nc).Value > 0 Then
nb = nb + 1
Boucle For Each dans la collection Cells
Avantage : une seule boucle suffit au lieu de 2
Inconvénient : c’est plus compliqué de différencier les différentes lignes/colonnes de chaque cellule (utilisez
alors les propriétés Row et Column), et le parcours est forcément « pour chaque ligne »
Exemple : mettre dans chaque cellule de la plage L2C3 :C9C7 l’addition entre le numéro de ligne et de
colonne de la cellule
For Each c In Range(Cells(2,3), Cells(9,7) ).Cells
c.Value = c.Row + c.Column
Boucles For Each dans la collection Rows ou
Columns, pour dans les Cells
Avantage: Permet de choisir la direction (en ligne ou en colonne)
grâce à la 1ère boucle, et d’avoir un objet Range correspondant à
la colonne ou ligne parcourue.
Inconvénient : il faut utiliser Row/Column si on veut le n° de
ligne/colonne
Exemple : mettre en gras chaque colonne de la plage
L2C3 :C9C7 dont toutes les valeurs sont paires.
For Each col In Range(Cells(2,3) _
, Cells(9,7) ).Columns
toutPaire = true
For Each c In col.Cells
If c.Value Mod 2 <> 0 Then
toutPaire = false
Exit For
End If
Next col
If toutPaire Then
col.Font.Bold = true
EndIf
Next col
Range et Cells : l’essentiel
www.infodauphine.com

Documents pareils