Visual Basic For Applications
Le bloc VBA With / End With !
Apprenez à utiliser le code VBA With / End With pour optimiser vos macros VBA et gagner du temps.
L’utilité du bloc VBA With
Présentation
L’instruction With/End With permet d’exécuter de manière simplifiée plusieurs actions sur un objet en VBA. Par exemple, on peut l’utiliser pour formater une cellule en modifiant le fond, la bordure, la couleur de la police etc.
Relativement simple à utiliser, le bloc With peut vraiment améliorer la qualité de vos codes, encore faut-il y penser et savoir l’utiliser.
Les avantages du bloc VBA With
L’instruction With en VBA permet de faire référence qu’une seule fois à un objet au lieu de le répéter à chaque action. Plus votre macro VBA sera développée et longue, plus ce type d’instruction vous sera utile.
Ce code permet de :
- Gagner du temps lors de l’écriture de votre code puisque vous n’avez pas à répéter plusieurs fois des expressions qui peuvent être complexes.
- Augmenter la lisibilité de votre code en limitant les expressions répétitives.
Le bloc VBA With / End With n’affecte pas les performances de votre code. C’est-à-dire qu’il ne ralenti pas votre macro mais ne la fait pas non plus aller plus vite.
Syntaxe
With Objet Action(s) End With |
- With : instruction de début du bloc VBA With.
- Objet : Objet sur lequel les actions vont être réalisées. Il peut s’agir d’une cellule, d’une feuille ou même d’un classeur (ou des 3). L’objet doit être indiqué sur la même ligne et à la suite du With.
With Workbooks("Classeur1").Sheets("feuil1").Range("A1:A5")
- Action(s) : il s’agit de la série d’instructions qui vont être appliquées sur l’objet défini en début de bloc. Vous pouvez inscrire un nombre illimité d’actions. L’exemple ci-dessous permet d’aligner verticalement et horizontalement le contenu d’une cellule et d’adapter la taille du contenu à la taille de la cellule.
.HorizontalAlignment = xlLeft .VerticalAlignment = xlBottom .ShrinkToFit = True
Dans un bloc With, les actions doivent être précédées d’un point (.) pour qu’elles puissent fonctionner.
- End With : marque la fin du bloc VBA With.
L’instruction .ShrinkToFit = True est particulièrement utile si vous avez du contenu dynamique au sein de vos cellules pour adapter la taille du contenu et ainsi avoir un fichier « propre ».
Exemples
Le bout de code ci-dessous permet d’aligner horizontalement et verticalement le contenu des cellules sélectionnées, d’adapter leur contenu à leur taille et de mettre le texte et nombre en vert grâce au code RGB (RED, GREEN, BLUE).
Exemple avec With
With Selection .Font.Color = RGB(50, 200, 100) .HorizontalAlignment = xlLeft .VerticalAlignment = xlBottom .ShrinkToFit = True End With |
Exemple sans bloc VBA With
Selection.Font.Color = RGB(50, 200, 100)
Selection.HorizontalAlignment = xlLeft
Selection.VerticalAlignment = xlBottom
Selection.ShrinkToFit = True |
Pour plus d’exemples concrets, vous pouvez consulter notre macro sur la prévision des ventes dans laquelle nous avons utilisé plusieurs blocs VBA With / End With.