1 Les commentaires
Un commentaire est un texte descriptif intégré dans votre code et ignoré par VBA. C’est une bonne idée d’utiliser généreusement les commentaires pour décrire ce que vous faites. Le texte suivant une apostrophe (‘) dans le programme jusqu’à la fin de la ligne est ignoré par le compilateur et est un commentaire.
Vous pouvez utiliser une ligne complète pour votre commentaire, ou vous pouvez insérer un commentaire après une instruction sur la même ligne.
L’exemple suivant montre une procédure VBA avec deux commentaires :
Sub DemoCommentaires() ' Ceci est mon premier commentaire ValeurF = 12 ' Ceci est mon deuxième commentaire MsgBox ValeurF End Sub
REMARQUE
Excel VBA colore la ligne en vert pour indiquer qu’il s’agit d’un commentaire.
Bien que l’apostrophe soit l’indicateur de commentaire préféré, vous pouvez également utiliser le mot clé Rem pour marquer une ligne comme commentaire. Le mot-clé Rem (abréviation de Remark) est essentiellement un héritage d’anciennes versions de BASIC et est inclus dans VBA pour des raisons de compatibilité. Contrairement à l’apostrophe, Rem ne peut être écrit qu’au début d’une ligne, pas sur la même ligne qu’une autre instruction.
Voici quelques conseils généraux pour utiliser au mieux les commentaires:
■ Utilisez des commentaires pour décrire brièvement le but de chaque procédure que vous écrivez.
■ Utilisez des commentaires pour décrire les modifications que vous apportez à une procédure.
■ Utilisez des commentaires pour indiquer que vous utilisez des fonctions ou des conceptions d’une manière inhabituelle ou non standard.
■ Utilisez des commentaires pour décrire le but des variables afin que vous et d’autres personnes puissiez déchiffrer des noms autrement cryptiques.
■ Écrivez des commentaires pendant que vous codez plutôt qu’après.
2 Saut de ligne
Pour diviser une seule instruction en plusieurs lignes on utilise le caractère de continuation de ligne, qui est un trait de soulignement ( _), au point auquel vous souhaitez que la ligne se coupe. Le trait de soulignement doit être immédiatement précédé d’un espace. Bref, pour entrer un saut de ligne VBA, vous pouvez utiliser les étapes suivantes.
■ Tout d’abord, cliquez sur le caractère à partir duquel vous souhaitez couper la ligne.
■ Ensuite, tapez un espace.
■ Après cela, tapez un trait de soulignement (_).
■ À la fin, appuyez sur Entrée pour rompre la ligne.
Pour créer un saut de ligne, voici les conditions qui doivent être remplis :
■ vous ne pouvez pas briser les instructions, les propriétés et méthodes ;
■ Le nombre maximal de saut de ligne autorisé est sept ;
Voici un code sans saut de ligne :
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Value = Somme Voici le meme code avec saut de ligne : ActiveCell.Offset(rowoffset:=0, _ columnoffset:=1).Value = Somme
Vous pouvez utiliser le caractère de continuation de ligne dans votre code avant ou après:
■ Les opérateurs ; par exemple: &, +, Like, NOT, AND
■ Une virgule
■ Un signe égal
■ Un opérateur d’affectation (: =)
Vous ne pouvez pas utiliser le saut de ligne entre deux-points et un signe égal. Par exemple, l’utilisation suivante du saut de ligne n’est pas reconnue par Visual Basic:
Range("B1").Cut Destination: _ =Range("D1")
En outre, vous ne pouvez pas utiliser le caractère de continuation de ligne dans le texte entre guillemets. Par exemple, l’utilisation suivante du caractère de continuation de ligne n’est pas valide:
MsgBox "Pour continuer une instruction longue, utilisez le caractère de _ continuation de ligne."
Au lieu de cela, divisez-le comme suit:
MsgBox "Pour continuer une instruction longue, utilisez le" & _ "caractère de continuation de ligne."
3 Placer plusieurs instructions sur une seule ligne
L’utilisation du caractère deux-points (:) vous permet de placer plusieurs instructions sur la même ligne. Ainsi, les deux constructions suivantes sont équivalentes :
maVariable = 5 ' La variable maVariable contient 5 maVariable = maVariable + 5 ' La variable maVariable contient 10 et maVariable = 5: maVariable = maVariable + 5
4 L’instruction With / End With
Pour chaque propriété que nous définissons dans Excel, il est nécessaire de référencer l’objet auquel elle sera appliquée, même lorsque l’objet est le même pour plusieurs propriétés. L’exemple suivant montre clairement la nécessité de référencer l’objet pour chacune des propriétés. Pour la même cellule, nous allons définir une valeur, appliquer une couleur à la police, afficher la valeur de cette cellule avec deux décimales, appliquer le style gras à la police et appliquer une autre couleur à l’arrière-plan:
Sub FormatageCellule() Range("B3").Value = 58.7 Range("B3").Font.ColorIndex = 4 Range("B3").NumberFormat = "0.00" Range("B3").Font.Bold = True Range("B3").Interior.ColorIndex = 6 End Sub
Commentaires
■ La valeur 58,7 est défini dans la cellule B3 (.Value = 58.7) ;
■ La couleur verte est définie comme couleur de font à la cellule B3 (.Font.ColorIndex = 4) ;
■ Le format des nombres est modifié avec la propriété (.NumberFormat = “0.00”)
■ La contenu de la cellule B3 est mis en gras avec la propriété.Font.Bold = True
■ La couleur de bordure est définie sur le jaune par la propriété .Interior.ColorIndex = 6
Pour éviter la répétition du même objet dans des cas comme celui qui vient d’être vérifié, c’est-à-dire des cas où plusieurs propriétés sont appliquées au même objet, nous pouvons utiliser les structures With et End With. L’objet référencé lorsque nous utilisons cette instruction doit être placé juste après l’instruction elle-même. La syntaxe de la structure With et End With est la suivante:
With Objet Instruction End With
Lors de la saisie des instructions, il faut toujours se rappeler que le nom de l’objet ne doit pas être mentionné et qu’il doit y avoir un point avant chacune des propriétés. Toutes les instructions que nous tapons entre With et End With seront exécutées sur l’objet donné.
Voici le code qui applique certaines propriétés à une cellule via l’instruction With:
Sub FormatageCellule() With Range("B3") .Value = 58.7 .Font.ColorIndex = 4 .NumberFormat = "0.00" .Font.Bold = True .Interior.ColorIndex = 6 End With End Sub
L’instruction With peut également être utilisée avec d’autres instructions With si nous insérons l’une dans l’autre, en effectuant un processus d’imbrication :
Sub AlterarPlan() With Sheets("Feuil2") With Range("B6") .Value = 12 .Font.Bold = True .Font.ColorIndex = 4 End With .Name = "mafeuille" .Move Before:=Sheets("Plan1") .Visible = True End With End Sub
On peut également insérer un autre With pour la source en imbriquant deux With au premier.
NOTE
Nous devons toujours prendre en compte l’importance de l’indentation des lignes, en laissant les première et dernière ligne de chaque bloc dans la même position du côté gauche.
Pour spécifier la propriété ou la méthode de cette hiérarchie qui est abrégée, nous devons commencer l’instruction par un point (.). Il indique la continuité de la hiérarchie abrégée, dans laquelle nous n’avons pas besoin de répéter certaines structures.
5 Eviter si possible la méthode Select
L’accès aux objets individuels doit être aussi direct que possible, sans beaucoup d’étapes intermédiaires. Malheureusement, dans de nombreuses applications VBA, les objets sont accessibles comme suit :
■ Un classeur est activé.
■ Une feuille de calcul est activée.
■ Une cellule ou plage de cellules est sélectionnée.
■ Les propriétés de la cellule ou plage de cellules sélectionnée sont modifiées ou des méthodes sont appliquées à la plage sélectionnée.
Cette procédure d’activation et de sélection est facile à comprendre, mais plus lente et plus sujette aux erreurs. Voici un exemple:
Sub ActivationSelection() ThisWorkbook.Activate Worksheets("Feuil1").Activate Range("A1:A10").Select Selection.Interior.Color = vbYellow End Sub
Commentaires
■ La méthode Activate active le classeur dans lequel vous vous trouvez actuellement comme classeur active (ThisWorkbook.Activate) et active la feuille Feuil1 comme feuille active (Worksheets(“Feuil1”).Activate).
■ La plage A1:A10 est sélectionnée à partir de la méthode Select.
■ Aux éléments sélectionnés, on ajoute la couleur jaune (vbYellow), qui est avec la propriété Color (Couleur) ; cette dernière étant aussi une propriété de Interior (Couleur de fond de l’élément sélectionné).
Le référencement vous permet de créer des applications qui s’exécutent plus rapidement et sont moins encombrant :
Sub ActivationSelection () ThisWorkbook.Worksheets("Feuil1"). _ Range("A1:A10").Interior.Color = vbYellow End Sub
Le code VBA semble un peu plus déroutant au début. Mais vous procédez simplement selon la hiérarchie des objets : classeur, feuille de calcul, plage de cellule de cellules, propriété. Il en résulte généralement des instructions plus longues, mais celles-ci peuvent être réparties sur plusieurs lignes.
Prenons un autre exemple qui consiste à copier le contenu de la cellule B1 et à la coller dans la cellule D1 :
Sub MethodeSelect() Range("B1").Select Selection.Cut Range("D1").Select ActiveSheet.Paste End Sub
Inconvénients de cette approche :
■ Il y a plusieurs étapes dans lesquelles des erreurs peuvent s’infiltrer.
■ On ne sait pas dans quel classeur et sur quelle feuille de calcul le déplacement a lieu.
■ L’application est plus lente.
Avec le référencement, vous pouvez résoudre un tel problème clairement et plus rapidement :
Sub MethodeSelect () ThisWorkbook.Worksheets("Feuil1"). _ Range("B1").Cut Destination:=ThisWorkbook. _ Worksheets("Feuil1").Range("D1") End Sub
6 Opérateur d’affectation
C’est le premier opérateur que vous allez utiliser dans n’importe quel langage de programmation. L’opérateur d’affectation affecte la valeur d’une expression à une variable, une constante ou une propriété d’un objet. L’opérateur d’affectation inclut toujours un signe égal (=).
variable = expression
L’opérateur d’affectation est comme un pont ; l’information qui est à droit (expression) est transférée à l’élément qui est à gauche (variable).
Un exemple simple est :
Sub OperateurAffectation () a = 10 Range ("A1").Value = a End Sub
Commentaires
■ Dans l’exemple ci-dessus, nous utilisons d’abord l’opérateur d’affectation “=” pour affecter une valeur à la variable “a”,
■ puis nous utilisons l’opérateur “=” pour affecter la valeur de “a” à la valeur de Range (“A1”).
7 Fonctions RVB () et QBColor ()
Les codes de couleur dans VBA sont souvent donnés sous forme de nombres sous la forme d’une notation hexadécimale. Au lieu de spécifier directement un code de couleur hexadécimal, il est souvent plus pratique de spécifier une couleur à l’aide des fonctions RVB () et QBColor (). La fonction RVB () vous permet d’obtenir n’importe quelle couleur en mélangeant des composants rouge, vert et bleu d’intensités différentes.
RVB (rouge, vert, bleu)
■ Le rouge est un entier de 0 à 255 indiquant la composante rouge de la couleur.
■ Le vert est un entier de 0 à 255 indiquant la composante verte de la couleur.
■ Le bleu est un entier de 0 à 255 indiquant la composante bleue de la couleur.
Le tableau suivant montre les valeurs des paramètres de la fonction RVB () pour obtenir des couleurs standard.
Couleur | Rouge | Vert | Bleu |
Le noir | 0 | 0 | 0 |
Bleu | 0 | 0 | 255 |
Vert | 0 | 255 | 0 |
Bleu | 0 | 255 | 255 |
Rouge | 255 | 0 | 0 |
Rose | 255 | 0 | 255 |
Jaune | 255 | 255 | 0 |
Blanc | 255 | 255 | 255 |
La fonction QBColor () renvoie seize couleurs primaires, en fonction de la valeur du paramètre.
QBColor (color)
Ici, le paramètre de couleur accepte des nombres entiers compris entre 0 et 15.
Nombre | Couleur | Nombre | Couleur |
0 | Noir | 8 | Gris |
1 | Bleu | 9 | Bleu clair |
2 | Vert | 10 | Vert clair |
3 | Cyan | 11 | Cyan clair |
4 | Rouge | 12 | Rouge clair |
5 | Magenta | 13 | Magenta clair |
6 | Jaune | 14 | Jaune clair |
7 | Blanc | 15 | Blanc pur |