VBA est l’acronyme de Visual Basic for Applications. Ce langage de programmation va nous permettre d’écrire des macros en vue :

  • D’automatiser des tâches répétitives et itératives.
  • De gérer et réduire les risques d’erreurs.
  • D’optimiser les temps de traitements.
  • De concevoir des interfaces utilisateurs personalisées.
  • De créer des traitements spécifiques non disponibles nativement dans les logiciels.
  • De développer le potentiel des applications de la suite Office.
  • D’échanger des données entre les différentes applications de la suite Office. Il est à noter qu’en général l’apprentissage se fait uniquement sur Excel ou Access.

Nous allons maintenant vous montrez comment enregistrer votre première macro en VBA. Dans la macro suivante, nous cherchons à déterminer le nom des images sélectionnées.

Enregistrer une macro

Nous lançons une macro en cliquant sur l’onglet Développeur > Code > Enregistrer une macro.

Onglet enregistrer la macro

Une fenêtre nous propose de donner un nom à notre macro. Nous l’appelons ici « Image ».

Fenêtre de commande

Lorsque vous cliquez sur « ok », la macro est lancée. A cette étape, il est important de ne pas réaliser des commandes inutiles qui alourdiraient la macro.

Nous sélectionnons chaque image une par une dans un sens de progression logique (ici de la gauche vers la droite). Puis nous arrêtons la macro en cliquant sur Développeur > Code > Arrêter l’enregistrement.

Onglet arrêter l’enregistrement

Nettoyer une macro pour la rendre plus lisible

Une fois la macro enregistrée, toutes les commandes sont répertoriées. Certaines formulations peuvent être simplifiées. Vous trouverez ci-dessous quelques exemples.

Lorsque l’on sélectionne la case A1 et que l’on écrit « Nom » dans la cellule on obtient le code suivant :

Range("A1").Select
ActiveCell.FormulaR1C1 = "Nom"

Nous pouvons simplifier ce code en remplaçant ActiveCell et Selection par Range(« coordonnées de la cellule »). On obtient :

Range("A1").FormulaR1C1 = "Nom"

La sélection de la cellule A1 peut également s’écrire Cells(1,1). (Les coordonnées de la cellule sont 1,1). Pour sélectionner plusieurs cellules, on peut utiliser Range(« coordonnée des cellules »). Pour des cellules qui se suivent on met deux points entre la première cellule sélectionnée et la dernière. Pour sélectionner des cellules qui ne se suivent pas, on sépare le nom des différentes cellules par des points-virgules.

Créer un tableau en enregistrant une macro VBA sur Excel

Nous souhaitons maintenant tracer un tableau. Nous prenons l’exemple d’un tableau simple allant de la case A1 (en haut à gauche) à la case B5 (en bas à droite).

Pour cela, on lance la macro comme vu ci-dessus. Cliquez ensuite sur l’onglet Accueil >  Bordures > Toutes les bordures puis sélectionnez les cellules A1 à B5. Cliquez ensuite sur Arrêter la macro. Nous obtenons le code suivant :

Sub tableau()

' tableau Macro
'
    Range("A1:B5").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
End Sub

Nous souhaitons maintenant alléger le code précédent. Comme nous l’avons vu auparavant, nous pouvons supprimer les .Select en fin de ligne  de code et Selection en début de ligne de code. De plus, les lignes suivantes concernant les diagonales peuvent être supprimées :

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

On obtient alors le code suivant :

Sub tableau()
'
' tableau Macro
'
    With .Range("A1:B5")
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlEdgeRight).LineStyle = xlContinuous
        .Borders(xlInsideVertical).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
    End With

On obtient alors le tableau suivant :

Tableau obtenu
Catégories : CodeOfficeVBA

0 commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *