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