Les Variables en VBA

Les variables sont des espaces en mémoire qui permettent de stocker des données temporaires pendant l'exécution d'un programme. Leur utilisation est essentielle pour manipuler des valeurs, interagir avec l'utilisateur et effectuer des calculs.

1. Pourquoi utiliser des variables ?

2. Déclaration d'une variable

En VBA, il est recommandé de déclarer explicitement les variables à l’aide du mot-clé Dim (abréviation de Dimension).

Syntaxe de base :

Dim NomDeLaVariable As Type

Exemple :

Dim Nom As String
Nom = "Marie"

3. Types de variables vues en cours

a) String : Chaîne de caractères

Dim Message As String
Message = "Bonjour, monde !"
MsgBox Message

b) Integer : Entier

Dim Age As Integer
Age = 25
MsgBox "Votre âge est " & Age

c) Double : Nombre décimal

Dim Prix As Double
Prix = 19.99
MsgBox "Le prix est " & Prix & " €"

d) Boolean : Valeur Vrai/Faux

Dim EstValide As Boolean
EstValide = True
If EstValide Then
    MsgBox "La valeur est valide."
Else
    MsgBox "La valeur n'est pas valide."
End If

e) Worksheet : Objet Feuille de calcul

Dim Feuille As Worksheet
Set Feuille = ThisWorkbook.Sheets("Feuil1")
Feuille.Range("A1").Value = "Bonjour"

f) Workbook : Objet Classeur

Dim Classeur As Workbook
Set Classeur = Workbooks.Open("C:\\MonClasseur.xlsx")
Classeur.Sheets(1).Range("A1").Value = "Données Importées"
Classeur.Close

4. Portée des variables (non vu en cours)

5. Bonne gestion des variables

  1. Toujours déclarer vos variables :

  2. Choisissez des noms explicites :

  3. Libérez les objets :

    Set Classeur = Nothing
    
  4. Utilisez des types appropriés :

6. Exemples pratiques

Exemple 1 : Calcul avec différentes variables

Sub CalculPrixTotal()
    Dim Quantite As Integer
    Dim PrixUnitaire As Double
    Dim Total As Double

    Quantite = 5
    PrixUnitaire = 19.99
    Total = Quantite * PrixUnitaire

    MsgBox "Le total est : " & Total & " €"
End Sub

Exemple 2 : Manipuler une feuille spécifique

Sub RemplirFeuille()
    Dim Feuille As Worksheet
    Set Feuille = ThisWorkbook.Sheets("Données")

    Feuille.Range("A1").Value = "Nom"
    Feuille.Range("B1").Value = "Âge"
    Feuille.Range("A2").Value = "Alice"
    Feuille.Range("B2").Value = 30
End Sub

Exemple 3 : Décider avec un Boolean

Sub VerifierStock()
    Dim EnStock As Boolean
    Dim Stock As Integer

    Stock = 0
    EnStock = (Stock > 0)

    If EnStock Then
        MsgBox "Produit disponible"
    Else
        MsgBox "Produit en rupture de stock"
    End If
End Sub

7. Exercice : Variables

  1. Objectif :

  2. Solution :

    Sub CalculerTotal()
        Dim Quantite As Integer
        Dim PrixUnitaire As Double
        Dim Total As Double
    
        Quantite = InputBox("Entrez la quantité :")
        PrixUnitaire = InputBox("Entrez le prix unitaire :")
    
        Total = Quantite * PrixUnitaire
        MsgBox "Le total est : " & Total & " €"
    End Sub
    

Manipulation des cellules et des plages en VBA

En VBA, la manipulation des cellules et des plages est fondamentale. Cette section couvre l'utilisation des objets Cells() et Range(), leurs propriétés essentielles (comme Offset, Value), ainsi que la variabilisation des classeurs (Workbooks), feuilles (Worksheets) et cellules. Ces concepts sont indispensables pour écrire du code VBA dynamique et robuste.

1. Différence entre Cells() et Range()

Cells()

Exemple :

Cells(1, 1).Value = "A1" ' Écrit "A1" dans la cellule A1
Cells(2, "B").Value = "B2" ' Écrit "B2" dans la cellule B2

Range()

Exemple :

Range("A1").Value = "A1" ' Écrit "A1" dans la cellule A1
Range("B1:B5").Value = "Plage" ' Écrit "Plage" dans toutes les cellules B1 à B5

2. Propriétés essentielles

a) Value

Range("A1").Value = 100 ' Écrit 100 dans A1
MsgBox Cells(1, 1).Value ' Affiche la valeur de A1

b) Offset

Exemple :

Range("A1").Offset(1, 0).Value = "A2" ' Écrit "A2" dans la cellule en dessous de A1
Cells(1, 1).Offset(0, 1).Value = "B1" ' Écrit "B1" dans la cellule à droite de A1

c) Address

MsgBox Range("B3").Address ' Affiche "$B$3"

d) Autres propriétés utiles

3. Utilisation des objets Worksheets() et Workbooks()

a) Worksheets()

Exemple :

Worksheets("Feuil1").Range("A1").Value = "Feuil1" ' Écrit dans Feuil1
Worksheets(2).Range("A1").Value = "Deuxième feuille" ' Écrit dans la 2e feuille

b) Workbooks()

Exemple :

Workbooks("Classeur1.xlsx").Worksheets("Feuil1").Range("A1").Value = "Bonjour"

c) Variabiliser le classeur et la feuille

Pour rendre le code plus dynamique, vous pouvez stocker les objets Workbook et Worksheet dans des variables.

Exemple :

Dim MonClasseur As Workbook
Dim MaFeuille As Worksheet

Set MonClasseur = Workbooks("Classeur1.xlsx")
Set MaFeuille = MonClasseur.Worksheets("Feuil1")

MaFeuille.Range("A1").Value = "Dynamique"

4. Variabiliser la cellule

Les cellules et plages peuvent également être variabilisées pour plus de flexibilité.

Exemple :

Dim MaCellule As Range
Set MaCellule = Worksheets("Feuil1").Range("B2")

MaCellule.Value = "Cellule Dynamique"

Pour travailler avec plusieurs cellules :

Dim Plage As Range
Set Plage = Worksheets("Feuil1").Range("A1:A5")

Plage.Font.Bold = True ' Met en gras toutes les cellules de la plage

5. Exemples pratiques

Exemple 1 : Écrire des valeurs dans une colonne avec Offset

Sub RemplirColonne()
    Dim i As Integer
    For i = 1 To 10
        Range("A1").Offset(i - 1, 0).Value = i
    Next i
End Sub

Résultat :


Exemple 2 : Copier des données d’une feuille à une autre

Sub CopierDonnées()
    Dim Source As Worksheet, Destination As Worksheet

    Set Source = Worksheets("Feuil1")
    Set Destination = Worksheets("Feuil2")

    Source.Range("A1:A10").Copy Destination.Range("B1")
End Sub

Résultat :

Exemple 3 : Calculer la somme d’une plage et écrire le résultat

Sub SommePlage()
    Dim Somme As Double
    Dim Plage As Range

    Set Plage = Worksheets("Feuil1").Range("A1:A5")
    Somme = WorksheetFunction.Sum(Plage)

    Worksheets("Feuil1").Range("A6").Value = "Somme : " & Somme
End Sub

Résultat :

6. Astuces pour manipuler les cellules et plages

  1. Références dynamiques :

  2. Évitez les sélections inutiles :

  3. Boucles pour les plages :

7. Exercice : Manipuler cellules et plages

  1. Objectif :

  2. Solution :

    Sub CalculerCarres()
        Dim i As Integer
        For i = 1 To 10
            Cells(i, 2).Value = Cells(i, 1).Value ^ 2
            Cells(i, 2).Interior.Color = vbYellow
        Next i
    End Sub