PaliSkill
Introduction au VBA

Leçon 1 / 7 — Chapitre 3: Manipuler les objets Excel par code

Manipuler cellules et plages avec Range et Cells

Pour qu'une macro soit vraiment utile, elle doit lire et écrire dans les cellules de la feuille. VBA propose deux façons principales de désigner une cellule : Range et Cells. Elles se complètent bien plus qu'elles ne s'opposent.

Range utilise l'adresse classique de la cellule, comme dans Excel :

Sub ExempleRange()
    Range("A1").Value = "Rapport de stock"
    Range("B2:B10").Font.Bold = True
    Range("A1:D1").Interior.Color = RGB(220, 230, 241)
End Sub

Pratique pour cibler une plage précise ou appliquer une mise en forme d'un coup.

Cells(ligne, colonne) utilise des numéros, ce qui est indispensable dès qu'on travaille avec des boucles :

Sub ExempleCells()
    Cells(1, 1).Value = "Article"
    Cells(2, 1).Value = "Riz 50kg"
    Cells(2, 2).Value = 27500
End Sub

Cells(2, 1) correspond à A2, Cells(2, 2) à B2. L'avantage : la ligne et la colonne peuvent être des variables, donc calculées automatiquement.

Exemple combiné, pour une boutique de quincaillerie qui veut marquer en rouge tous les articles dont le stock est inférieur à 10 :

Sub AlerteStockFaible()
    Dim i As Integer
    For i = 2 To 20
        If Cells(i, 3).Value < 10 And Cells(i, 3).Value <> "" Then
            Cells(i, 3).Font.Color = RGB(255, 0, 0)
            Cells(i, 3).Font.Bold = True
        End If
    Next i
End Sub

Cette macro parcourt la colonne C (quantités) et met en rouge et en gras chaque quantité inférieure à 10, sans qu'on ait besoin de vérifier ligne par ligne à la main.

Autre propriété utile : Range("A1").End(xlDown).Row renvoie le numéro de la dernière ligne remplie sous A1, très pratique pour adapter une boucle à un tableau dont la taille change chaque mois.

À vous de jouer

À faire

Voici un extrait de code, où la colonne D contient : D2=8, D3=15, D4=3 (lignes 2 à 4) :

Sub AlerteStock()
    Dim i As Integer
    Dim compteurAlertes As Integer
    compteurAlertes = 0

    For i = 2 To 4
        If Cells(i, 4).Value < 10 Then
            compteurAlertes = compteurAlertes + 1
        End If
    Next i

    MsgBox compteurAlertes
End Sub

Que va afficher le MsgBox lors de l'exécution ?

Réalisez la tâche, puis saisissez votre réponse ci-dessous pour vérification.

💡 Une instruction VBA complète.

À vous de jouer

À faire

Quelle propriété VBA, appliquée à Range("A1"), renvoie le numéro de la dernière ligne remplie sous A1 ?

Réalisez la tâche, puis saisissez votre réponse ci-dessous pour vérification.

💡 Une propriété VBA (avec .End).

Quitter le module