Comme vous le savez certainement, le code VBA est interprété ligne par ligne lors de son exécution.
De manière générale, cela ne pose pas de problème mais il arrive que l'obligation d'écrire une instruction sur une seule ligne peut rendre le code difficilement lisible.
Prenons comme exemple l'instruction (le calcul) suivante:
1 |
MonMatrixBeta = k * b_xyt(xf, yf, tn) / (7 * kx * ky) * MonMatrixAlpha(f + 1, j + 1, n) + (k * (a_xyt(xf, yf, tn) / kx ^ 3 + d_xyt(xf, yf, tn) / (2 * kx))) |
Pas facile à s'y retrouver, n'est-ce pas? Et en plus, il est très irritant quand le code "sort de l'écran" et vous êtes obligé de déplacer l'écran de l'éditeur pour le voir…
Heureusement, il y a une astuce: Il est possible de séparer une instruction du code VBA en plusieurs lignes sans en modifier sa signification.
Pour cela, vous devez utiliser " _
" (espace et souligné) à l'endroit du code où vous souhaitez passer en nouvelle ligne. Le code précédent ressemblera alors à ceci:
1 2 3 |
MonMatrixBeta = _ k * b_xyt(xf, yf, tn) / (7 * kx * ky) * MonMatrixAlpha(f + 1, j + 1, n) + _ (k * (a_xyt(xf, yf, tn) / kx ^ 3 + d_xyt(xf, yf, tn) / (2 * kx))) |
C'est déjà plus lisible, n'est-ce pas?
Quelques remarques importantes:
- vous pouvez utiliser le "
_
" autant de fois que vous voulez dans une instruction (et donc séparer l'instruction en autant de lignes que vous voulez) - le "
_
" ne peut pas se trouver au milieu du nom d'une variable, d'une fonction etc.
Ce code ne va donc pas fonctionner:
x = Ma _
Variable * 2 - vous ne pouvez pas l'utiliser au milieu d'une chaîne de caractères (String). C'est possible mais vous devez d'abord séparer le texte en parties (ex.
"Mon texte"
doit devenir"Mon " & "texte"
) – voir le code qui suit.
12MonMessage = "Veuillez indiquer les valeurs suivantes: " & _"poids, largeur, longueur, hauteur, prix et provenance..."
Cette petite astuce est très pratique et peut rendre votre code VBA beaucoup plus agréable à lire. Il est également pratique lors des constructions If... Else... End If
.
1 2 3 4 5 6 7 8 9 10 |
If _ MaValeurTest > Sheets("MaFeuille1").Range("C2").Value _ And MaValeurTest2 > Sheets("MaFeuille1").Range("C2").Value _ And MaValeurTest3 >= 56 _ And MaValeurTest4 = "ABCD" _ Then MsgBox "oui" Else MsgBox "non" End If |
J'espère que cette astuce va vous rendre la vie avec VBA un peu plus facile et votre travail plus efficace! Personnellement, je m'en sers dans 90% de mes macros VBA.
Pour aller plus loin en VBA…
Je peux vous conseiller d'autres articles qui pourraient vous être utiles dans votre travail avec VBA et Excel:
- Comment afficher un MsgBox avec plusieurs lignes?
- Liste de toutes les fonctions disponibles en VBA
- Changer les couleurs et l'apparence de l'éditeur VBA (VBE)
- Utiliser des fonctions Excel (comme RECHERCHEV) directement en VBA
- … autres articles sur VBA