Passer au contenu

3. Ecrire des macros simples

Pour vous aider à faire vos premiers pas en VBA, nous allons débuter par une série d’exemples de macros mettant en ?”uvre des concepts élémentaires de programmation.

Modifiez des attributs de cellules

Ce que fait la macro : Elle met en gras et en italique les cellules sélectionnées dans une feuille Excel.Préparation : Dans une feuille Excel, sélectionnez une plage de cellules.


Sub GrasItalique ()


Selection.Font.Bold =True


Selection.Font.Italic=True


End SubExplications : Selection.Font.Bold=True. Dans cette instruction, l’objet Selection représente les cellules sélectionnées dans votre feuille Excel. Vous allez modifier l’attribut Font
(polices) de cet objet. Cet attribut Font possède lui-même des sous-attributs, comme Bold (caractères gras) et Italic (italique). Vous donnerez à ces deux attributs la valeur True (vrai).Remarque : Vous pouvez obtenir des explications sur la syntaxe d’un mot-clé ou d’une commande. Pour cela, sélectionnez ce mot-clé dans l’Editeur et appuyez sur Ctrl +
F1.

Recopiez une cellule

Ce que fait la macro : Dans la feuille courante, elle recopie la cellule sélectionnée dans la cellule A1. Préparation : Ouvrez une feuille Excel et sélectionnez une cellule quelconque contenant des données.


Sub Copie ()


Selection.Copy


ActiveSheet.Paste Destination := Range (‘ A1 ‘)


End SubExplications : L’instruction Selection.Copy place dans le Presse-papiers de Windows la zone sélectionnée. C’est l’équivalent de la commande Edition, Copier. L’instruction
suivante copie (Paste) ce contenu dans la feuille active (ActiveSheet) à l’emplacement A1. L’instruction Range, permet de préciser la destination de cette copie.Remarque : Notez le caractère := dans l’instruction Range.

Changez des attributs de cellules

Ce que fait la macro : La même chose que la macro GrasItalique.Préparation : Dans une feuille Excel, sélectionnez une plage de cellules.


Sub GrasItaliqueMeilleur()


With Selection.Font.Bold = True


. Italic = True


End With


End SubExplications : Par rapport à la macro GrasItalique, vous constatez une différence : la présence d’une instruction With Selection.Font. Cette structure With (avec)
ouvre une suite d’instructions qui se termine toujours par l’instruction End With. Dans toutes les instructions placées entre le With et le End With, l’argument indiqué dans le With (ici
Selection.Font) est implicite. En d’autres termes, les deux instructions .Bold=True et .Italic=True concernent toutes les deux l’objet Selection.Font. Cette façon d’écrire permet de réduire la
taille des macros volumineuses en ne citant qu’une seule fois (en ‘ mettant en facteur ‘, diraient les matheux) les éléments communs à plusieurs instructions.Remarque :N’oubliez pas les points placés au début des lignes 3 et 4. Ils permettent de séparer les différents arguments.

Ajoutez 15 % à toutes les cellules sélectionnées

Ce que fait la macro : Elle multiplie par 1,15 le contenu de toutes les cellules de la sélection.Préparation : Dans une feuille Excel, sélectionnez une plage de cellules contenant des nombres.


Sub Multiplier1 ()


For Each MaCellule In Selection


MaCellule.Value = MaCellule. Value * 1.15


Next MaCellule


End SubExplications : Vous découvrez ici la notion de boucle, qui commence avec For Each MaCellule et qui se termine avec Next MaCellule. Toutes les instructions placées dans la boucle (ici,
il n’y a qu’une seule instruction MaCellule.Value…) seront appliquées successivement à toutes les cellules de la sélection. Quant à la multiplication proprement dite, elle est effectuée par l’instruction MaCellule.Value =
MaCellule.Value * 1.15.
Ici, le signe égal doit être compris comme ‘ devient égal à ‘. En d’autres termes, la valeur (propriété Value) de chaque cellule devient son ancienne valeur
multipliée par 1,15.Remarque : Utilisez toujours le point comme séparateur décimal (1.15 et non 1,15) dans les listings de macros, même si vous employez la virgule dans les feuilles
de calcul.

Fusionnez une cellule sur plusieurs lignes

Ce que fait la macro : Elle fusionne le contenu des cellules d’une colonne sur plusieurs autres colonnes contiguës.Préparation : Ouvrez une feuille Excel et sélectionnez une plage dans laquelle la colonne de gauche contient des données et les autres colonnes sont vides. Lancez la macro. Chaque texte de la colonne de gauche
est centré sur toute la largeur des colonnes sélectionnées. C’est l’équivalent de ce que donne le bouton Fusionner de la barre d’outils Mise en forme, mais appliqué à plusieurs lignes.


Sub MultiCentrer()


Selection.HorizontalAlignment = xlCenterAcross Selec tion


End SubExplications : Une seule instruction, ici, donne à la propriété HorizontalAlignment (alignement horizontal) de l’objet Selection la valeur xlCenterAcrossSelection (centrer
sur toutes les colonnes de la sélection). Cette valeur est une constante prédéfinie par Excel. Toutes ces constantes ont un nom qui commence par xl.

Ajoutez un pourcentage à toutes les cellules sélectionnées

Ce que fait la macro : Elle ajoute à toutes les cellules de la sélection un pourcentage demandé à l’utilisateur en début de macro.Préparation : Dans une feuille Excel, sélectionnez une plage de cellules contenant des nombres.


Sub Multiplier2()


Dim Taux as Single Taux = InputBox(‘ Taux d’augmentation ‘)


For Each Cellule In Selection


Cellule.Value = Cellule.Value * (1 + Taux / 100)


Next Cellule


End SubExplications : Cette macro constitue une version améliorée de la macro Multiplier1, car elle ajoute de l’interactivité. Nous utilisons ici une variable. Il s’agit d’un emplacement en
mémoire, désigné par un nom (Taux), et possédant un type donné et un contenu. Cette variable sert à mémoriser des variables intermédiaires. Le nom d’une variable est libre mais ne doit pas contenir d’espaces. L’instruction Dim
Taux as Single
demande à Excel de créer une variable numérique nommée Taux. Le type Single (simple) précise qu’il s’agit d’une variable numérique en simple précision. Pour avoir un aperçu de tous les types de
variables existants (texte, date…), tapez Types de variables dans l’onglet Aide intuitive de l’aide de VBA. Vous constaterez qu’on doit, en l’occurrence, éviter d’utiliser le type
Integer qui, comme son nom l’indique, ne peut recevoir que des nombres entiers. Vous ne pourriez plus, alors, saisir un taux de 3,5. L’instruction Taux = InputBox(‘ Taux d’augmentation
)
ouvre une fenêtre de dialogue qui permet à l’utilisateur de saisir un nombre, affecté à la variable Taux. Enfin, au lieu de multiplier par 1,15 comme dans la macro Multiplier1, nous
multiplions ici par 1+Taux/100.Remarque : Dans certains cas, la déclaration de variables n’est pas obligatoire. Nous vous conseillons néanmoins de le faire systématiquement en début de macro car cela rend votre listing
plus lisible. Attention : pour déclarer deux variables Var1 et Var2 de type Single, ne tapez pas Dim Var1, Var2 as Single, mais saisissez deux instructions séparées (sur deux lignes) :
Dim Var1 as Single et Dim Var2 as Single.

Ajoutez un pourcentage donné à certaines cellules de la sélection

Ce que fait la macro : Elle ajoute, à toutes les cellules de la sélection dont le contenu est inférieur à 100, un pourcentage demandé à l’utilisateur en début de macro.Préparation : Dans une feuille Excel, sélectionnez une plage de cellules contenant des nombres.


Sub Multiplier3 ()


Dim Taux as Single Taux = InputBox(‘ Taux d’augmentation ‘)


For Each Cellule In Selection


If Cellule.Value < 100 Then

Cellule.Value = Cellule. Value * (1 + Taux / 100)


End If


Next Cellule


End SubExplications : Par rapport à la macro Multiplier2, ce listing apporte une notion fondamentale : les instructions conditionnelles, qui ne s’exécutent que si une condition est
vérifiée. Le principe est le suivant. Une structure conditionnelle commence avec une instruction if, suivie d’une condition (il s’agit en général d’une comparaison entre deux variables ou constantes, par exemple if A = 5 ou
if PrixCourant > 100…). A chaque if, doit obligatoirement correspondre une instruction end if qui marque la fin des instructions conditionnelles. Les instructions placées entre le if et
le end if ne sont réalisées que si la condition est vérifiée. Dans notre exemple, la condition est Cellule.Value < 100. La multiplication ne s’applique qu’aux cellules de la sélection dont le contenu est inférieur à
100.Remarque :Il est parfois nécessaire de prévoir des choses à faire si la condition est vraie … et d’autres si la condition est fausse. Vous utiliserez pour cela, les instructions if … then … else… end
if.
Par exemple, pour doubler les cellules inférieures à 100 et tripler les autres, vous utiliserez le listing suivant :


If Cellule.Value < 100 Then

Cellule.Value = Cellule.Value * 2


Else


Cellule.Value = Cellule. Value * 3


End ifVous pouvez l’interpréter ainsi : SI (if ) la valeur de la cellule est inférieure à 100, ALORS (then) la doubler SINON (else) la tripler. FIN (end if )

Inversez l’attribut Gras de toutes les cellules sélectionnées

Ce que fait la macro : Dans toutes les cellules sélectionnées, elle met en caractères gras les cellules qui ne l’étaient pas et réciproquement.Préparation : Dans une feuille Excel, sélectionnez une plage de cellules dont certaines sont en caractères gras.


Sub InverseGras1 ( )


For Each Cellule In Selection


If Cellule.Font.Bold Then


Cellule.Font.Bold = False


Else


Cellule.Font.Bold = True


End If


Next Cellule


End SubExplications : Comme la macro Mutliplier3, nous utilisons ici une instruction conditionnelle : if Cellule.Font.Bold. Mais la valeur Bold (caractères gras) est de type
logique (on dit aussi booléen), ce qui signifie qu’elle ne peut prendre que deux états possibles Vrai ou Faux. Dans ces conditions, VBA vous permet de réduire l’instruction if Cellule.Font.Bold = True (si Cellule. Police. gras = Vrai)
en if Cellule.Font.Bold (si Cellule. Police. gras).

Inversez l’attribut Gras de toutes les cellules sélectionnées

Ce que fait la macro : Elle fait exactement la même chose que la macro InverseGras, mais un peu plus vite.Préparation : Dans une feuille Excel, sélectionnez une plage de cellules dont certaines sont en caractères gras.


Sub InverseGras2 ( )


For Each Cellule In Selection


Cellule.Font.Bold = not Cellule.Font.Bold


Next Cellule


End SubExplications : Ici, nous n’utilisons pas de test pour déterminer si une cellule a l’attribut caractère gras. Comme cet attribut est de type logique ou booléen, il ne peut donc avoir deux états, Vrai ou Faux.
L’instruction Cellule. Font. Bold = not Cellule. Font. Bold se contente donc d’inverser, via l’opérateur not, l’état de cet attribut. L’absence de if.. end if permet à la macro de s’exécuter un peu plus vite que la macro
InverseGras.

Supprimez tous les noms dans une feuille de calcul

Ce que fait la macro : Elle efface tous les noms de champs que lon a créés dans une feuille de calcul. Les champs eux-mêmes ne sont pas effacés.Préparation : Lancez Excel et ouvrez un classeur, puis activez une feuille contenant des noms de champs.


Sub SupprimeTousNoms ()


Dim CeNom as Object


For Each CeNom In ActiveWorkbook. Names


CeNom. Delete


Next CeNom


End SubExplications : CeNom est ici une variable objet, qui représente, un par un, tous les éléments de la collection ActiveWorkbook.Names (noms de champs de la feuille active). A chacun de ces noms, on
applique la méthode Delete (effacement).

🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.


Etienne Oehmichen