0% ont trouvé ce document utile (0 vote)
190 vues33 pages

Automatiser Excel avec des Macros VBA

Excel

Transféré par

saadkhalid963
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
190 vues33 pages

Automatiser Excel avec des Macros VBA

Excel

Transféré par

saadkhalid963
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

2ème année Management Excel Avancé et VBA

École de Management

TP2 : Les Macros (Automatiser des


tâches avec des macros en VBA)
1. Présentation des macros
Aussi flexible soit-il, Microsoft Excel reste un logiciel destiné à une certaine utilisation ; sa
personnalisation est donc, comme pour n'importe quel autre logiciel, limitée. Afin de donner plus de
liberté aux utilisateurs, Microsoft a doté l'ensemble de sa suite bureautique Office d’un langage de
programmation appelé VBA (Visual Basic for Application) étant le seul moyen d'augmenter
considérablement la flexibilité de ces outils. Malheureusement les langages de programmation sont
compliqués à comprendre et à utiliser.

Pour remédier à cette situation, Microsoft a introduit une fonction appelée Macro. Une Macro est un
simple programme informatique écrit en VBA qui a la particularité de s'écrire automatiquement. En
effet, Excel rédige à votre place le code VBA. Vous n'avez donc plus besoin d'apprendre le langage
VBA pour accéder aux fonctionnalités offertes par la programmation.

Une macro est un ensemble de commandes qui s’exécute autant de fois que nécessaire simplement en
les appelant par son nom. Les macros permettent d’automatiser les tâches répétitives ; il suffit
d’enregistrer une première fois les commandes voulues (par exemple : saisie de données, sélection,
calculs, mise en forme, impression, etc.) en leur donnant un nom puis, d’exécuter ces commandes en
les appelant par leur nom à chaque fois que l’on devra répéter cette même tâche, un peu de la même
manière que l’on s’enregistre avec un enregistreur MP3 afin de sortir toujours le même discours quand
cela est nécessaire.

Une macro‐commande est donc une suite de commandes à exécuter automatiquement alors qu’une
macro‐fonction est une fonction contenant plusieurs commandes qui s’utilise dans des cellules, de la
même manière que n’importe quelle fonction d’Excel.

Les macros sont créées avec le langage de programmation VBA. Ce langage est commun à la plupart
des applications de Microsoft Office comme le Word, Excel, PowerPoint, Access, etc. toutefois il
existe des fonctions spécifiques à chaque logiciel et les techniques de programmation peuvent être
légèrement différentes (comme avec Access).

Au sein de ce TP, les exemples qui suivent sont, certes, très incomplets mais permettent d’avoir
quelques bases pour débuter en VBA et créer des macros.

2. Introduction à la programmation dans Excel


2.1. Vocabulaire
2.1.1. Algorithme
On peut comparer un algorithme à une recette de cuisine. Les ingrédients nécessaires à la réalisation
du gâteau sont les données ou entrées. L'algorithme est une suite d'actions qui produira des résultats ou
sorties.

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


1
2ème année Management Excel Avancé et VBA

École de Management

Les actions (ou instructions) qui composent un algorithme sont séquentielles, c’est-à-dire qu’elles se
suivent et doivent être réalisées l'une après l'autre. Par exemple, on ne peut pas faire cuire le brownie
avant d'avoir mis la pâte dans le moule.

L’algorithme du brownie peut être résumé de la manière suivante :

1. Mélanger les sucres semoule et vanillé, les œufs et la farine tamisée.


2. Faire fondre le beurre.
3. Mélanger le beurre à la pâte.
4. Faire fondre le chocolat.
5. Mélanger le chocolat à la pâte.
6. Mélanger les noix de Pécan et la poudre d'amande à la pâte.
7. Versez la pâte dans un moule à gâteau beurré.
8. Mettre à cuire 35 minutes dans le four préchauffé à 170°C.

2.1.2. Programme informatique


« Écrire un programme revient à écrire un algorithme dans un langage compréhensible par
l’ordinateur. »

Un programme informatique est une liste d'ordres indiquant à un ordinateur ce qu'il doit faire. Il se
présente sous la forme d'une ou plusieurs séquences d'instructions devant être exécutées dans un
certain ordre par un processeur, et comportant souvent des données d’entrées chargées dans la
mémoire vive. Ces séquences d’actions/instructions sont appelées le code du programme.

Un programme informatique est la traduction d’un algorithme dans un langage compréhensible par la
machine. Ce langage est appelé langage de programmation. Par exemple, le VBA est un langage de
programmation.

Un même algorithme peut être écrit dans des dizaines de langages de programmations différents.

2.2. Accès et présentation des boutons de gestion des macros

Pour gérer les macros à travers un ensemble de boutons, on suit la démarche suivante :

1. Ouvrir un nouveau classeur en l’appelant "TP2_Classeur.xlsm" (l’extension .xlsm permet au


classeur de prendre en charge les macros).
2. À partir d’Office 2007, pour gérer ses macros, il est possible de passer par l’onglet
"Affichage", puis dans le bouton "Macros". Cliquer sur la flèche (si vous cliquez
directement sur le bouton vous aurez le même résultat que le bouton "Afficher les macros").
Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI
2
2ème année Management Excel Avancé et VBA

École de Management

3. Remarquer que trois autres boutons s’affichent.


- Le bouton "Afficher les macros" permet d’afficher la liste des macros préenregistrées
que vous pouvez utiliser.
- Le bouton "Enregistrer une macro" permet d'enregistrer une nouvelle macro.
- Le bouton "Utiliser les références relatives" permet d’utiliser des références relatives
pour enregistrer une macro avec des actions relatives à la cellule initiale sélectionnée.
Par exemple si vous enregistrez une macro dans la cellule A1 qui déplace le curseur en
A3 lorsque cette option est activée, l’exécution de la macro résultante dans la cellule J6
déplace le curseur en J8. Si cette option est désactivée au moment où la macro est
enregistrée, son exécution dans la cellule J6 déplace le curseur en A3.

Toutefois, il est préférable d’afficher l’onglet "Développeur" qui est spécifique aux macros, de la
manière suivante :

1. Cliquer sur le menu "Fichier" (ou bouton "Office" dans les anciennes versions d’Office) puis
sur "Options".
2. Dans la boite de dialogue "Options Excel" affichée cliquer sur "Personnaliser le ruban",
ensuite dans la liste des "Onglets principaux" cocher "Onglet Développeur", pour valider les
modifications cliquer sur le bouton "OK" (pour les anciennes versions d’Office : dans
"Standard" il suffit de cocher l’option "Afficher l'onglet Développeur dans le ruban").

Remarque : Si le message suivant s’affiche dans le menu, juste après l’ouverture d’un fichier .xlsm
contenant des macros.

Il faut appuyer sur le bouton "Activer le contenu", sinon Excel risque de ne pas laisser les macros
s’exécuter.

3. Création d’une macro simple


3.1. Les étapes de la création d’une macro
Il est possible de créer une macro de manière très simple, en réalisant une succession de commandes
de la même manière que d’habitude.

Une macro se réalise en quatre temps :

1. Donner un nom à sa macro.


2. Enregistrer les commandes.
3. Arrêter la macro.
4. Exécuter la macro.
Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI
3
2ème année Management Excel Avancé et VBA

École de Management

3.2. Création d’une macro simple


Nous allons créer une macro qui créée automatiquement un tableau sur la feuille active d’Excel.

3.2.1. Donner un nom à la macro

1. Dans Excel, placer sur la feuille de calcul "Feuil1" où va être créé le tableau.
2. Dans l’Onglet "Développeur", cliquer sur le bouton "Enregistrer une macro" ou sur celui
qui est en bas à gauche, sur la barre d’état.
3. Dans la boîte de dialogue "Enregistrer une macro" qui apparaît :
a) "Nom de la macro" : saisir un nom sans espace pour sa macro. Par exemple, saisir
Tableau.
b) "Touche de raccourci" (facultatif) : saisir une lettre pour exécuter sa macro à partir
d’un raccourci clavier. Attention de ne pas utiliser un raccourci clavier existant.
c) "Enregistrer la macro dans" : choisir Ce classeur.
Si vous choisissez Nouveau classeur la macro sera enregistrée dans un nouveau
document. Cependant, le choix Classeur de macros personnelles permet d’accéder à
la macro depuis n’importe quel classeur.
d) "Description" : saisir un texte libre donnant des indications sur la macro (auteur, date,
etc.). Par exemple, saisir Création automatique d’un tableau.

4. Cliquer sur le bouton "OK" et remarquer que le bouton "Arrêter l’enregistrement"


apparaît dans le ruban de l’onglet "Développeur" ainsi que sur la barre d’état. Toutes les
commandes effectuées (y compris les aperçus avant impression, les défilements, les
sauvegardes) sont désormais enregistrées dans la macro.
3.2.2. Enregistrer la macro
Pour enregistrer une macro il faut exécuter toutes les commandes (saisie, sélection, mise en forme,
couper‐copier‐coller, sauvegarde, impression...) nécessaires à la macro de la même manière que
lorsqu’on travaille à un document.

Chacune des commandes est automatiquement enregistrée dans la macro.

Voici un exemple de macro pour faire un tableau :

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


4
2ème année Management Excel Avancé et VBA

École de Management

1. Saisir les entêtes de colonnes, par exemple, Secteur 1 en B1 et Produit 1 en A2.


2. Effectuer la recopie avec la poignée automatique.
3. En A5 et en E1, écrire Total.
4. Effectuer les calculs du total :
a) Se placer dans la cellule où doit apparaître le résultat, par exemple B5.
b) Cliquer sur le bouton "Somme" de l’onglet "Accueil".
c) Sélectionner les cellules à calculer, même si elles sont vides, ici par exemple, de B2 à
B4 et valider en appuyant sur la touche Entrée du clavier.
d) Faire la recopie de la cellule B5 jusqu’à la cellule E5.
5. Recommencer le calcul de la somme pour E2 en sélectionnant pour le calcul les cellules de
B2 à D2 puis valider et faire une recopie de E2 jusqu’à E4.
Éventuellement, il est possible d’ajouter d’autres fonctions (Moyenne, Max, min, etc.)
6. Sélectionner les cellules qui vont contenir les chiffres et appliquer un format monétaire en
cliquant sur le bouton "Format Nombre Comptabilité" de l’onglet "Accueil", par
exemple les cellules de de E2 jusqu’à E4 et B5 jusqu’à E5.
7. Effectuer la mise en forme du tableau (encadrement des cellules, couleurs, etc.), penser à
élargir les lignes et les colonnes.

3.2.3. Arrêter l’enregistrement de la macro

Le tableau terminé, arrêter l’enregistrement :

1. Entrer dans l’Onglet "Développeur".


2. Cliquer sur le bouton "Arrêter l’enregistrement" ou cliquer sur le bouton "Arrêter
l’enregistrement" de la barre d’état.

Toutes les commandes effectuées ne sont plus enregistrées dans la macro.


3.2.4. Exécution de la macro

Le tableau terminé, arrêter l’enregistrement :

1. Se placer sur une feuille vide, par exemple "Feuil2".


2. À l’onglet "Développeur" cliquer sur le bouton "Macros".

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


5
2ème année Management Excel Avancé et VBA

École de Management

3. Remarquer que la boite de dialogue "Macro" est affichée.


4. Cliquer sur le nom de la macro à exécuter, par exemple, cliquer sur la macro Tableau.

5. Cliquer sur le bouton "Exécuter" et remarquer la création automatique d’un nouveau tableau
qui est identique au tableau créé durant l’enregistrement de la macro Tableau.

La macro s’exécute de la même manière, mais plus rapidement que si nous effectuons nous‐même
ces commandes une par une, créant un nouveau tableau, avec des formules, une mise en forme,
élargissant les lignes et les colonnes, etc.

De plus, elle peut être réutilisée autant de fois qu’on le souhaite. Il suffit de saisir des chiffres dans
le tableau et les calculs se mettent automatiquement à jour. Toutefois, les modifications dans le
tableau comme la saisie, mise en forme, etc. ne sont pas enregistrées dans la macro.
3.3. Modification de la macro

Pour visualiser le code de la macro soit vous tapez directement le raccourci clavier Alt+F11, ou
vous suivez les étapes suivantes :

1. À l’onglet "Développeur" cliquer sur le bouton "Macros".


2. Dans la boite de dialogue "Macro" affichée, cliquer sur le nom de la macro voulue, par
exemple la macro Tableau.
3. Cliquer sur le bouton "Modifier".
4. Remarquer que toutes les commandes enregistrées apparaissent (au sein de l’outil
"Microsoft Visual Basic pour Applications" qui est affichée la première fois et exactement à
la fenêtre dédié aux macros de notre ficher et qui porte le même nom que ce dernier
"TP2_Classeur.xlsm"), codées en VBA (Visual Basic Application), langage de
programmation des macros dans les logiciels de la suite Microsoft Office.

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


6
2ème année Management Excel Avancé et VBA

École de Management

Ces commandes peuvent être modifiées avec une bonne connaissance du VBA.

Par exemple, dans la liste de code, il suffit de changer "Secteur" par "Région" et "Produit" par
"Service", sans appuyer sur Entrée, afin de modifier les en‐têtes du tableau.

5. Puis revenir à notre classeur Excel (par la barre des tâches par exemple).
6. Remarquer que les modifications effectuées dans le code de la macro ne sont pas prises en
compte dans les tableaux déjà créés. Ainsi, chaque fois que la macro sera exécutée ses
modifications seront prises en compte, de telle sorte que dans les nouveaux tableaux on
trouve Région 1, 2… apparaîtra sur la ligne des titres et Service 1, 2… sur la colonne des
titres.
7. Placer dans une nouvelle feuille de calcul et exécuter la macro Tableau, comme il est
expliqué précédemment.
8. Remarquer dans cette feuille que le tableau créé automatiquement par la macro Tableau
porte les modifications réalisées dans le code de cette macro, de telle sorte que Région 1,
2… apparu sur la ligne des titres et Service 1, 2… sur la colonne des titres.

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


7
2ème année Management Excel Avancé et VBA

École de Management

En cas de problème dans l’exécution du code, il est possible d’exécuter une macro pas à pas afin de
vérifier quelle ligne contient une erreur pour la corriger.

Pour exécuter une macro pas à pas on suit la démarche suivante :

1. Dans l’Onglet "Développeur", cliquer sur le bouton "Macros"


2. Dans la boite de dialogue "Macro" affichée, cliquer sur le nom de la macro voulue, par
exemple la macro Tableau.
3. Cliquer sur le bouton "Pas à pas détaillé".
4. Appuyer sur la touche de fonction F8 pour exécuter les lignes de la macro une par une.
5. ou cliquer sur le bouton "Réinitialiser" de la barre d’outil de la fenêtre de code VBA.

Toutes les commandes effectuées ne sont plus enregistrées dans la macro.

4. Exécution de macro à partir d’un bouton


4.1. Présentation et exemple d’apprentissage
Plutôt que de lancer une macro en passant par des onglets (Onglets "Développeurs", "Macros",
…), pour simplifier la tâche de l’utilisateur, il est possible de lancer une macro à partir d’un
bouton dans un tableau.

Pour faire ça il y a deux étapes à suivre qui sont :

1. création de la macro ;
2. et création du bouton.

Voici un exemple avec une macro qui trie automatiquement le tableau suivant par pays, puis par
matériel puis par date :

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


8
2ème année Management Excel Avancé et VBA

École de Management

4.2. Création de la macro


4.2.1. Nommer la macro

1. Dans le fichier Excel "TP2_Classeur.xlsm", placer sur une nouvelle feuille de calcul et
l’appeler "Achats_Pays" où va être créé le tableau.
2. Dans l’Onglet "Développeur", cliquer sur le bouton "Enregistrer une macro" ou sur celui
qui est en bas à gauche, sur la barre d’état.
3. Nommer la macro Tri_Pays et cliquer sur le bouton "OK".

Les commandes de la macro vont être enregistrées par la suite.

4.2.2. Exécuter les commandes

1. Cliquer dans l’une des cellules de la colonne des dates.


2. À l’Onglet "Données" cliquer sur le bouton "Trier de A à Z" .
3. Cliquer dans une des cellules de la colonne du matériel.
4. À l’Onglet "Données" cliquer sur le bouton "Trier de A à Z" .
5. Cliquer dans l’une des cellules de la colonne des pays.
6. À l’Onglet "Données" cliquer sur le bouton "Trier de A à Z" .
7. Remarquer ci-dessous que le tableau est trié par pays, puis par matériel puis par date.

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


9
2ème année Management Excel Avancé et VBA

École de Management

4.2.3. Arrêter la macro

1. Entrer dans l’Onglet "Développeur".


2. Cliquer sur le bouton "Arrêter l’enregistrement" ou cliquer sur le bouton "Arrêter
l’enregistrement" de la barre d’état.
4.3. Création du bouton
4.3.1. Dessin du bouton

1. Entrer dans l’Onglet "Insertion".


2. Cliquer sur les boutons "Illustrations", et "Formes", ensuite choisir la forme voulue. Par
exemple, cliquer sur Rectangle à coins arrondis.

3. En maintenant le bouton gauche de la souris enfoncé, dessiner un bouton dans la feuille de


calcul.
4. Saisir le texte du bouton, par exemple Tri et le mettre en forme en utilisant l’Onglet
"Accueil", choisir "Gras", changer la police, la taille des caractères, centrer horizontalement,
verticalement, etc.
5. Effectuer la mise en forme du bouton, par exemple changer la couleur en passant à l’Onglet
"Format de forme" et au bouton "Remplissage" ensuite choisir la couleur par exemple
rouge, etc.

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


10
2ème année Management Excel Avancé et VBA

École de Management

4.3.2. Affectation de la macro sur le bouton

1. Faire un Clic droit sur le bouton voulu, dans notre cas le bouton créé.
2. Cliquer sur "Affecter une macro…".
3. Remarquer ci-dessous qu’une boite de dialogue appelée "Affecter une macro" est apparue.
4. Dans cette boite de dialogue, choisir la macro voulue, par exemple cliquer sur Tri_pays.
Après, cliquer sur le bouton "OK".

4.3.3. Utilisation du bouton

1. Cliquer dans n’importe quelle cellule de la feuille.


2. Cliquer sur le bouton voulu (le pointeur se transforme en main au bouton pointé), dans notre
le bouton créé.
3. Remarquer que la macro se lance automatiquement et trie le tableau (on ne voit pas de
différence car le tableau est déjà trié).

Cette macro de tri est très pratique si on saisit des nouvelles données dans le tableau et qu’on
souhaite retrier son tableau automatiquement. Par exemple :

1. Ajouter la nouvelle ligne suivante dans le tableau.

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


11
2ème année Management Excel Avancé et VBA

École de Management

2. Modifier la macro afin d’augmenter l’intervalle du tableau où elle est appliquée, pour
qu’elle prend en considération une taille de tableau plus élevée. Pour faire ça, il suffit de
changer la plage de cellule (trois fois car il y a trois tri) "A2:D10" par "A2:D200" (une
taille suffisante pour l’ajout des données dans le futur).
3. Cliquer sur notre bouton et remarquer ci-dessous le résultat.

4.3.4. Modification du bouton


Si on clique sur le bouton pour le modifier, il va automatiquement lancer la macro.

Pour modifier le bouton :

1. En maintenant la touche Contrôle (Ctrl), cliquer sur le bouton.


2. Modifier la mise en forme du bouton.

5. Sauvegarder un classeur contenant une macro


Depuis 2007, il existe un format particulier pour sauvegarder un document contenant une macro. Ce
format utilise l’extension .xlsm.

1. Cliquer sur menu "Fichier", puis sur "Enregistrer sous".


2. Saisir un nom d’un fichier.
3. Choisir un dossier en cliquant deux fois dedans.
4. Dans "Type", choisir "Classeur Excel (prenant en charge les macros) (*.xlsm)".
5. Cliquer sur le bouton "OK".

6. Débuter la programmation en VBA


Au lieu de passer par l’enregistreur de macro, il est également possible de saisir soi‐même les
commandes en VBA. Cela est plus long et plus laborieux mais il est possible d’intégrer dans ses
macros des fonctions plus évoluées.

La feuille contenant les macros est appelée un module.

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


12
2ème année Management Excel Avancé et VBA

École de Management

Un projet lié à un même classeur, peut contenir plusieurs modules qui eux‐mêmes peuvent contenir
plusieurs macros.

6.1. Création d’une macro en VBA


6.1.1. Donner un nom à la macro

Pour créer une nouvelle macro, il y a deux méthodes :

Méthode 1 :

1. Dans l’Onglet "Développeur", cliquer sur le bouton "Macros".


2. Dans la boite de dialogue "Macro" qui est affichée, saisir le nom de macro. Par exemple
dans notre cas le nom de la macro est Test.
3. Cliquer sur le bouton "Créer".

Méthode 2 :

1. Appuyer sur Alt + F11 pour accéder au module (la fenêtre de code VBA).
2. Dans Menu "Insertion", cliquer sur "Procédure".
3. Remarquer que la boite de dialogue ci-dessous "Ajouter une procédure" est apparu.

4. Dans cette boite de dialogue il faut que dans :


• Nom : saisir le nom de la macro, par exemple Test.
• Type : cocher Sub pour une macro‐commande (ou Function pour une
macro‐fonction).
• Portée : cocher Public pour la rendre accessible à l’ensemble des macros du projet
(ou Private pour ne la rendre accessible que dans un seul module).
4. Cliquer sur le bouton "OK".
6.1.2. Saisir les commandes voulues

Après l’étape précédente, dans la fenêtre de code VBA, le module correspond à notre fenêtre
apparaît.

Saisir les commandes de la macro entre Sub (début de la macro) et End sub (fin de la macro)
Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI
13
2ème année Management Excel Avancé et VBA

École de Management

en ne mettant qu’une commande par ligne.

L’exécution de la macro se fait comme précédemment (onglet "Développeur", "Macros", etc.)

6.1.3. Sélection de cellules


a. Commentaires :

Afin de faciliter la lecture de sa macro, il est possible de mettre des commentaires dans son code.
Ceux‐ci seront précédés d’une apostrophe (') et peuvent être placés après une ligne de code ou sur une
ligne indépendante. Dans le code VBA, les commentaires apparaissent en vert.

Par exemple :

' Macro de mise à jour des données


ActiveCell.FormulaR1C1 = "Région 1" ' Titre de la colonne du tableau
b. Sélection de cellules : Sélection d’une cellule

Pour sélectionner une cellule en utilisant sa référence par exemple C5, on a la syntaxe suivante :

Range("C5").Select
' Ou
Cells(5, 3).Select

Select permet de sélectionner une ou plusieurs cellules alors qu’Activate permet de choisir
qu’une seule cellule qui sera la cellule active.

Pour une seule cellule Cells(5, 3).Select ou Cells(5, 3).Activate sont équivalents.

Pour sélectionner une cellule nommée par exemple Taux, on a la syntaxe suivante :

Range("Taux").Select

Pour sélectionner une cellule en fonction de la cellule active, on a la syntaxe suivante :

[Link](7, 3).Select

Pour sélectionner une cellule dans une feuille par exemple accéder à la feuille nommée Facture et
sélectionner de la cellule B2, on a la syntaxe suivante :

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


14
2ème année Management Excel Avancé et VBA

École de Management

Worksheets("Facture").Activate
Range("B2").Select

Pour sélectionner une feuille de calcul d’un classeur ouvert par exemple sélectionner la feuille
Facture du classeur ouvert Gestion, on a la syntaxe suivante :

Workbooks("[Link]").Worksheets("Facture").Activate

Pour sélectionner la première cellule de la ligne active, on a la syntaxe suivante :

Cells([Link], 1).Select

Pour sélectionner la cinquième cellule de la colonne active, on a la syntaxe suivante :

Cells(5, [Link]).Select

Pour sélectionner la dernière cellule non vide de la ligne 1, on a la syntaxe suivante :

Range("XFD1").End(xlToLeft).Select

Pour sélectionner la cellule qui est après la dernière cellule non vide de la ligne contenant la cellule
active, on a la syntaxe suivante :

Cells([Link], "XFD").End(xlToLeft)(1, 2).Select

Pour sélectionner la dernière cellule non vide de la colonne A, on a la syntaxe suivante :

Range("A1048576").End(xlUp).Select

À noter que la formule suivante est plus simple et peut également fonctionner s’il n’y a pas de
cellules vides entre les cellules non vides de la colonne :

Range("A1").End(xlDown).Select

Pour sélectionner la première cellule vide après la dernière cellule non vide de la colonne A, on a la
syntaxe suivante :

Range("A1048576").End(xlUp)(2, 1).Select
c. Sélection de cellules : Sélection d’une zone de cellules

Pour sélectionner une plage de cellules en utilisant les référence par exemple de B5 à D20, on a la
syntaxe suivante :

Range("B5:D20").Select
' Ou
Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI
15
2ème année Management Excel Avancé et VBA

École de Management

Range(Cells(5, 2), Cells(20, 4)).Select

Pour sélectionner des cellules de la colonne 1 à la colonne 10 de la ligne active, on a la syntaxe


suivante :

Range(Cells([Link], 1), Cells([Link], 10)).Select

Pour sélectionner des cellules de la ligne 5 à la ligne 12 de la colonne active, on a la syntaxe


suivante :

Range(Cells(5, [Link]), Cells(12, [Link])).Select

Pour sélectionner des cellules de la cellule A1 jusqu’à la dernière cellule non vide de la colonne A, on
a la syntaxe suivante :

Range("A1:A" & Range("A1048576").End(xlUp).Row).Select

Pour sélectionner des cellules de la cellule active jusqu’à la dernière cellule non vide de la ligne, on a
la syntaxe suivante :

Range(ActiveCell, [Link](xlToRight)).Select

Cette formule ne fonctionne que s’il n’y a pas de cellules vides entre les cellules de la ligne

6.1.4. Utilisation de variables dans des cellules


Les variables servent à stocker et à utiliser des données (comme un texte, nombre, etc.) dans une
macro.

En VBA, il est vivement conseillé de définir le type de chaque variable (va‐t‐elle contenir un texte,
une date, un chiffre, etc.) afin d’augmenter la rapidité du programme mais aussi d’éviter des erreurs
d’interprétation de certaines variables.
a. Définition du type d’une variable

Toutes les variables sont définies en général au début de la procédure, avant les lignes de commande.

Pour définir une variable il faut utiliser la syntaxe suivante :


Dim Nom_variable As Type_de_la_variable

Le nom de la variable ne doit contenir ni espace ni ponctuation.

Par exemple :

Dim Entreprise As String ' Variable contenant du texte


Dim Naissance As Date ' Variable contenant une date ou une heure
Dim Quantite As Integer ' Nombre entier compris entre -32 768 et 32 767
Dim Distance As Double ' Nombre à virgule compris

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


16
2ème année Management Excel Avancé et VBA

École de Management

' entre -1,79769313486232 x 10^(308) et 1,79769313486232 x 10^(308)

Il est également possible de définir une variable avec un symbole, par exemple :

Dim Entreprise$
' Cette instruction est équivalente à
Dim Entreprise As String
b. Types de variable les plus répandus

Le tableau suivant contient les types de variables le plus répandus avec leurs descriptions.
Nom Type Caractéristiques Symbole
Byte Numérique Nombre entier de 0 à 255
Integer Numérique Nombre entier de ‐32 768 à 32 767 %
Long Numérique Nombre entier de ‐ 2 147 483 648 à 2 147 483 647 &
Currency Numérique Nombre à décimale fixe de ‐922 337 203 685 477,5808 @
à 922 337 203 685 477,5807
Single Numérique Nombre à virgule flottante de ‐3,402823 x 1038 à 3,402823 x 1038 !
Double Numérique Nombre à virgule flottante de ‐1,79769313486232 x 10308 #
à 1,79769313486232 x 10308
String Texte Texte $
Date Date Date et heure
Boolean Booléen True (vrai) ou False (faux)
Object Objet Objet Microsoft (Classeur, Feuille, Cellule, etc.)
Variant Tous Tout type de données (type par défaut si la variable n’est pas déclarée)
Range Cellule Zone de cellules
c. Modification ou récupération du contenu des cellules

Pour stocker le contenu de la cellule active dans une variable nommée Montant, il faut utiliser la
syntaxe suivante :

Montant=ActiveCell

Pour stocker dans une variable nommée Salaire le contenu de la cellule C5, il faut utiliser la
syntaxe suivante :

Salaire=Cells(5, 3) ' 5 : numéro de la ligne, 3 : numéro de la colonne (la C)


' Récupération de la cellule C5 de la feuille "Gestion" :
Salaire = Sheets("Gestion").Cells(5, 3).Value

Pour récupérer des données dans un autre classeur, par exemple si veut afficher le contenu de la cellule
C3 de la feuille Facture dans le classeur Gestion, il faut utiliser la syntaxe suivante :

MsgBox Workbooks("[Link]").Worksheets("Facture").Cells(3, 3).Value

Pour stocker dans une variable nommée Prix le contenu de la cellule située deux lignes et quatre
colonnes à partir la cellule active, il faut utiliser la syntaxe suivante :

Prix = ActiveCell(3, 5)

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


17
2ème année Management Excel Avancé et VBA

École de Management

' Ou
Prix = [Link](2, 4)

Avec ActiveCell, la cellule active est désignée par ActiveCell(1, 1), alors qu’avec
[Link], la cellule active est choisie avec [Link](0, 0).

Pour stocker une valeur dans des cellules, il faut utiliser la syntaxe suivante :

Cells(5, 3)=1000 ' affiche 1000 dans la cellule C5


Cells(6, 3)="Bonjour" ' affiche "Bonjour" dans la cellule C6
Cells(7, 3)=Ventes ' Récupère le contenu de la variable Ventes dans la cellule C7
Cells(8, 3)=Cells(8, 3) * 1.3 ' Augmente de 30% le contenu de la cellule C8

Attention : utiliser un point (.) et non la virgule (,) pour les décimales dans les codes VBA

6.1.5. Exemple de macro qui utilise des variables et des cellules


Voici un exemple, à partir du tableau suivant, qui permet d’augmenter de 10% le contenu d’une cellule
et affiche le résultat dans une boîte de dialogue avec le nom et le prénom de la personne concernée :

a. Créer la macro

1. Dans le fichier Excel "TP2_Classeur.xlsm", placer sur une nouvelle feuille de calcul et
l’appeler "Primes_Salaries" où va être créé le tableau.
2. Dans l’Onglet "Développeur", cliquer sur le bouton "Macros".
3. Dans la boite de dialogue "Macro" qui est affichée, saisir le nom de macro. Par exemple
dans notre cas le nom de la macro est Calcul_Prime.
4. Cliquer sur le bouton "Créer" (il est possible de créer la macro en utilisant la méthode de Alt
+ F11).
b. Saisir le code de la macro

Dans l’exemple du code qui suit :

• La commande MsgBox affiche un texte dans une boîte de dialogue.


• Le signe "&" permet d’assembler des chaînes de caractères (opérateur de concaténation).
Alors, … & " " & … permet de séparer les variables par un espace vide afin de ne pas coller
les données.
Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI
18
2ème année Management Excel Avancé et VBA

École de Management

• La fonction VBA Chr renvoie le caractère correspondant au nombre entier passé en argument.
Autrement, cette fonction retourne le caractère correspond au code ASCII passé en argument.
Alors, la commande Chr(10) permet d’aller à la ligne (10 est le code ASCII de retour à la
ligne).
• Les commentaires en vert sont facultatifs.

Saisir les lignes suivantes de la macro Calcul_Prime dans la fenêtre de code VBA apparue, qui
correspond à notre module Calcul_Prime, exactement entre Sub Calcul_Prime() et End
sub :

Si vous utilisez un nouveau classeur penser à le sauvegarder avec comme Type "Classeur Excel
(prenant en charge les macros) (*.xlsm)", ces codes sont conservés dans le classeur Excel créé.
c. Créer un bouton pour exécuter la macro

1. Retourner dans la feuille de calcul "Primes_Salaries" où se trouve le tableau Excel


2. Entrer dans l’Onglet "Insertion", puis cliquer sur les boutons "Illustrations", et "Formes",
ensuite choisir la forme voulue.
3. Dessiner le bouton et saisir un texte dans le bouton, par exemple Calcul de prime.
4. Mettre en forme le bouton et son texte en utilisant respectivement les onglets "Format de
forme" et "Accueil" (police, couleur, etc.).
5. Affecter la macro Calcul_Prime au bouton Calcul de prime nouvellement créé :
a. faire un Clic droit sur le bouton créé Calcul de prime,
b. puis cliquer sur "Affecter une macro…"
c. choisir la macro Calcul_Prime,
d. cliquer sur le bouton "OK".

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


19
2ème année Management Excel Avancé et VBA

École de Management

d. Exécuter la macro

1. Cliquer sur l’une des cellules de la ligne voulue, par exemple cliquer sur la cellule "B6".
2. Cliquer sur le bouton créé Calcul de prime.
3. Remarquer comme il est montré ci-dessous que la cellule contenant le montant de la prime
est augmentée de 10% et une boîte de dialogue apparaît avec le prénom et le nom du
bénéficiaire ainsi que le nouveau montant de la prime.

4. Cliquer sur le bouton "OK" de la boite de dialogue afin de débloquer Excel.


e. En cas d’erreur dans la macro

1. Dans l’Onglet "Développeur", cliquer sur le bouton "Macros"


2. Dans la boite de dialogue "Macro" affichée, choisir la macro à corriger, dans notre cas la
macro Calcul_Prime.
3. Cliquer sur le bouton "Modifier".
4. Corriger les erreurs dans le code VBA.
5. Retourner dans le classeur et exactement dans la feuille de calcul "Primes_Salaries" pour
relancer la macro à travers le bouton Calcul de prime et vérifier le bon fonctionnement de
la macro Calcul_Prime.

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


20
2ème année Management Excel Avancé et VBA

École de Management

7. Quelques fonctions de base en VBA


7.1. Règles à suivre
Les macros qui suivent doivent être placée dans un module VBA (accessible par Alt + F11) en les
saisissant commande par commande.

Pour les exécuter, il suffit pour la plupart de cliquer dans une cellule ayant un nombre puis suivre les
étapes suivantes :

1. Dans l’Onglet "Développeur", cliquer sur le bouton "Macros".


2. Choisir le nom de la macro voulue.
3. Cliquer sur le bouton "Exécuter".

7.2. Condition logique


La condition logique permet de réaliser des actions différentes suivant la valeur d’une variable ou
d’une cellule.

7.2.1. Structure
If condition Then
Action_si_vrai
Else
Action_si_faux
End If
7.2.2. Exemple
Macro qui n’augmente la valeur de la cellule sélectionnée que si la nouvelle valeur est inférieure à
3000 et affiche dans une boîte de dialogue (MsgBox) un message.
Sub Limite()
Dim Montant As Double
Dim Message As String

Montant = ActiveCell * 1.1

If Montant > 3000 Then


Message = "Valeur de départ trop importante !"
Else
ActiveCell = Montant
Message = "La valeur actuelle est de : " & Montant
End If

MsgBox Message
End Sub

Pour exécuter la macro : cliquer dans une cellule contenant un nombre et lancer la macro.

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


21
2ème année Management Excel Avancé et VBA

École de Management

7.3. Boucle avec compteur


Macro qui recommence une boucle en incrémentant une valeur jusqu’à ce que la valeur maximale soit
atteinte.

7.3.1. Structure
For i=Valeur_minimale to Valeur_maximale step Increment
Actions
Next i

7.3.2. Exemple
Affiche les nombres de 1 à 10 dans les cellules de G1 à G10 (colonne 7).
Sub Compteur()
Dim i As Integer

For i = 1 To 10
Cells(i, 7) = i
Next i
End Sub
L’instruction Exit For permet de sortir de la boucle, par exemple :
If Cells(i, 1) = "Fin" Then Exit For
7.4. Boucles répétitives tant qu’une condition est vraie
Macro qui recommence une boucle jusqu’à ce que la condition ne soit plus satisfaite.

7.4.1. Boucle While… Wend.

While… Wend est la méthode la plus simple pour réaliser ce genre de boucle.

a. Structure

While condition
Action
Wend
b. Exemple

Augmente le contenu de la cellule sélectionnée de 10% (variable Augmentation) tant que son
contenu est inférieur à 5000.
Pour exécuter la macro, cliquer dans une cellule contenant un nombre avant de lancer la macro.
Sub Boucle()
Dim Montant As Double
Dim Augmentation As Double

Montant = ActiveCell
Augmentation = 0.1
While Montant < 5000

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


22
2ème année Management Excel Avancé et VBA

École de Management

Montant = Montant * (1 + Augmentation)


Wend
ActiveCell = Montant
End Sub

7.4.2. Boucle Do While… Loop

Do While… Loop s’utilise de la même manière que While… Wend.

a. Structure

Do While condition
Action
Loop
b. Exemple
Sub Boucle()
Dim Montant As Double
Dim Augmentation As Double

Montant = ActiveCell
Augmentation = 0.1
Do While Montant < 5000
Montant = Montant * (1 + Augmentation)
Loop
ActiveCell = Montant
End Sub

7.4.3. Boucle Do… Loop While

À la différence de Do While… Loop, la boucle Do… Loop While permet de mettre la condition
d’arrêt à la fin.

a. Structure

Do
Action
Loop While condition
b. Exemple
Sub Boucle()
Dim Montant As Double
Dim Augmentation As Double

Montant = ActiveCell
Augmentation = 0.1
Do
Montant = Montant * (1 + Augmentation)
Loop While Montant < 5000
ActiveCell = Montant
End Sub

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


23
2ème année Management Excel Avancé et VBA

École de Management

Contrairement à Do While… Loop, avec Do… Loop While la macro sera exécutée une première
fois, donc la variable Montant sera augmenté de 10% même si son contenu est supérieur à
5000, avant de vérifier s’il faut arrêter ou non la boucle.

7.4.4. Boucle Do Until… Loop

À la différence de Do While… Loop qui recommence la boucle tant que la condition est vraie, Do
Until… Loop s’arrête dès que la condition est vraie.

a. Structure

Do Until condition
Action
Loop
b. Exemple
Sub Boucle()
Dim Montant As Double
Dim Augmentation As Double

Montant = ActiveCell
Augmentation = 0.1
Do Until Montant >= 5000
Montant = Montant * (1 + Augmentation)
Loop
ActiveCell = Montant
End Sub

Comme pour la boucle Do… Loop While, il est possible de mettre la directive Until à la fin de la
boucle. De cette manière on aura la boucle Do… Loop Until pour que celle‐ci s’exécute au moins
une fois.

7.4.5. Instruction EXIT DO


Dans les boucles Do… Loop, il est possible d’ajouter une instruction Exit Do pour arrêter la boucle
avant que la condition de la boucle soit remplie.

Par exemple, Si la variable Augmentation dépasse les 5%, les instructions jusqu’à la fin de la
boucle sont ignorées et le programme se poursuit à partir de la fin de la boucle.
Sub Boucle()
Dim Montant As Double
Dim Augmentation As Double

Montant = ActiveCell
Augmentation = 0
Do Until Montant >= 5000
Augmentation = Augmentation + 0.1
If Augmentation > 0.5 Then Exit Do
Montant = Montant * (1 + Augmentation)
Loop
ActiveCell = Montant
Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI
24
2ème année Management Excel Avancé et VBA

École de Management

MsgBox Augmentation
End Sub
7.5. Cas d’une variable
Déclenche une action en fonction de la valeur d’une variable.

7.5.1. Structure
Select Case Variable
Case Valeur1
Action1
Case Valeur2
Action2
Case Valeur3
Action3

Case Else
Autre_action
End Select
7.5.2. Exemple
Macro qui affiche un message indiquant dans quelle tranche se situe la quantité commandée.
Sub Tranche()
Dim Quantite As Double
Quantite = ActiveCell

Select Case Quantite


Case 1
MsgBox "Commande unique"
Case 2
MsgBox "Double commande"
Case 3
MsgBox "Triple commande"
Case 4, 5, 6
MsgBox "Petite quantité commandée"
Case 7 To 10
MsgBox "Grande quantité commandée"
Case Is > 10
MsgBox "Très grande quantité commandée"
Case Else
MsgBox "Veuillez cliquer dans une cellule ayant un nombre !"
End Select
End Sub

Pour exécuter la macro, cliquer dans une cellule avec un nombre entre 1 et 20 et lancer la macro.

7.6. Modification d’un ensemble de cellules sélectionnées


Répète une action sur l’ensemble des cellules sélectionnées.

7.6.1. Structure
For Each Variable In Selection
Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI
25
2ème année Management Excel Avancé et VBA

École de Management

Actions
Next
7.6.2. Exemple
Augmente les valeurs de 10% des cellules sélectionnées.
Sub Augmentation()
Dim Cellule As Range
Dim Taux As Double

Taux = 0.1
For Each Cellule In Selection
Cellule = Cellule * (1 + Taux)
Next
End Sub

Pour exécuter la macro, sélectionner des cellules contenant des nombres et lancer la macro.

8. Les macros‐fonctions
Une macro‐fonction est un ensemble de commandes qui affichent un résultat en fonction de variables
données. Une fois la fonction créée, elle s’utilise comme les fonctions de l’onglet "Formules".

Dans le tableau suivant, nous souhaitons connaître le montant de la remise.

• Si les ventes sont supérieures à 10 000 €, le taux sera de deux fois le taux indiqué.
• Si les ventes sont inférieures ou égales à 10 000 € le taux indiqué ne change pas.

8.1. Création d’une macro‐fonction


8.1.1. Préparation de la macro-fonction

1. Dans le fichier Excel "TP2_Classeur.xlsm", placer sur une nouvelle feuille de calcul et
l’appeler "Ventes_Remises" où va être créé le tableau.
2. Appuyer sur Alt + F11 pour accéder aux modules de VBA.
3. Éventuellement, insérer un nouveau module si nécessaire, en passant à l’Onglet "Insertion",
puis en cliquant sur le bouton "Module".
4. Dans l’Onglet "Insertion" cliquer sur le bouton "Procédure".
5. Remarquer que la boite de dialogue ci-dessous "Ajouter une procédure" est apparu.
Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI
26
2ème année Management Excel Avancé et VBA

École de Management

5. Dans cette boite de dialogue il faut que dans :


• Nom : saisir le nom de la macro, par exemple Remise.
• Type : cocher Function pour une macro‐fonction.
• Portée : cocher Public pour la rendre accessible à l’ensemble des macros du projet.
6. Cliquer sur le bouton "OK".
8.1.2. Saisie des commandes

1. Dans la macro-fonction Remise, saisir les variables nécessaires au calcul :


Public Function Remise(Vente, Taux)
Le nom des variables importe peu, comme Remise(x,y), etc. L’essentiel est de se
souvenir à quoi correspond chaque variable pour la suite du calcul, d’où l’intérêt de donner
des noms parlant.
2. Saisir les commandes du code suivantes :
Public Function Remise(Vente, Taux)
If Vente >= 10000 Then
Taux = Taux * 2
End If
Remise = Vente * Taux
End Function
La variable Remise est celle qui donnera le résultat à afficher dans le tableau.

3. N’oublier pas de cliquer sur le bouton enregistrer afin de sauvegarder les modifications
effectuées.
8.2. Utilisation d’une macro‐fonction

1. Retourner à la feuille de calcul "Ventes_Remises".


Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI
27
2ème année Management Excel Avancé et VBA

École de Management

2. Dans la cellule C2, saisir la formule voulue directement qui est : =Remise(A2;B2) ou
étape par étape de la manière suivante :
a. saisir =Remise(
b. Cliquer dans la cellule contenant le montant des ventes, dans notre cas A2.
c. Mettre un point‐virgule (;).
d. Cliquer dans la cellule contenant le taux, dans notre cas B2.
3. Valider la formule en appuyant sur Entrée, faire la recopie de la cellule C5 vers le bas,
effectuer la mise en forme, etc.

9. Exercice : les macro-commandes


Objectif : Automatiser un tableau qui modifie les cellules dont les valeurs dépassent un maximum.

9.1. Énoncé de l’exercice


9.1.1. Création du tableau
1. Dans une nouvelle feuille, créer le tableau suivant :

2. Nommer cette feuille "Quantite_Remarque" et ce classeur "Exercice_Maximum". Ce dernier


doit être capable de prendre en charge les macros.
3. Nommer Maximum la cellule B1.
4. Dans la cellule B4, afficher "Correct" si la quantité est inférieure ou égale à la cellule du
maximum, sinon, afficher "Erreur", puis faire une recopie vers le bas.

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


28
2ème année Management Excel Avancé et VBA

École de Management

9.1.2. Création des macros


I. Création d’une macro simple qui remplace un nombre par 3000 et le met en gras.

1. Cliquer dans une cellule contenant un nombre.


2. Créer une macro appelée "Securite".
3. Saisir 3000, puis ne pas valider avec la touche Entrée mais avec le bouton de validation dans
la barre des formules .
4. Mettre le contenu de la cellule en gras.
5. Arrêter la macro et la tester.
II. Création d’une macro qui ne modifie les valeurs que si celles‐ci sont supérieures
au maximum autorisé

1. Remettre les chiffres d’origine, enlever le gras.


2. Modifier le code VBA précédemment créé, afin de stocker le maximum autorisé dans une
variable appelé MaximumPermis qui sera définie en Integer.
3. Faire une boucle avec compteur (For i=1…) qui parcourt toutes les cellules de B4 à B12 afin
d’appliquer la condition suivante à chaque cellule.
4. Créer une condition logique (avec If… Then… Else…) : si le contenu de la cellule est
supérieur au maximum autorisé, alors le contenu de la cellule est égal au maximum autorisé et
le chiffre est mis en gras (pour cela il est possible de récupérer les commandes précédemment
créées avec la macro) sinon, ne rien faire.
5. Créer un bouton pour lancer la macro.
6. Saisir 3000 comme maximum autorisé et lancer la macro à partir du bouton.

9.2. Correction de l’exercice


9.2.1. Création du tableau

Pour nommer la feuille :

1. Cliquer deux fois sur l’onglet de la feuille ayant la base de données.


2. Saisir le nom voulu, exemple : "Quantite_Remarque".

Pour nommer le classeur :

1. Taper Ctrl+s.
2. Saisir le nom voulu, exemple "Exercice_Maximum.xlsm".

Pour nommer Maximum la cellule B1 :

1. Cliquer dans la cellule voulue B1.


2. Cliquer dans la zone de "nom".
3. Saisir le nom voulu qui est Maximum et appuyer sur Entrée.

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


29
2ème année Management Excel Avancé et VBA

École de Management

Pour afficher "Correct" ou "Erreur" dans la cellule B4 il faut créer une formule avec une condition
logique dans cette cellule de la manière suivante :

1. Cliquer dans la cellule B4.


2. Saisir la condition logique =SI(A4<=Maximum;"Correct";"Erreur").
3. Valider et faire la recopie vers le bas.

9.2.2. Création des macros

I. Macro simple qui remplace une valeur par 3000 et met la cellule en gras.

Pour créer la macro :

1. Cliquer dans une cellule contenant un nombre (à faire en dehors de la macro, sinon la macro
ira cherchée toujours la même cellule).
2. À l’Onglet "Développeur" cliquer sur "Enregistrer une macro" ou cliquer sur le bouton
sur la barre d’état.
3. Taper comme nom de la macro Securite.
4. Cliquer sur le bouton "OK".
5. Saisir le chiffre 3000 et valider avec le bouton de validation dans la barre des formules et non
avec la touche Entrée (afin d’éviter que la macro enregistre un changement de cellule).
6. Cliquer sur le bouton pour mettre en gras (surtout ne pas changer de cellule pendant
l’enregistrement de la macro).
7. Cliquer sur le bouton "Arrêter l’enregistrement" apparaît dans l’onglet "Développeur" ou
sur la barre d’état.

Pour tester la macro :

1. Cliquer sur un des nombres du tableau.


2. À l’Onglet "Développeur", cliquer sur le bouton "Macros"
3. Choisir la macro Securite.
4. Cliquer sur le bouton "Exécuter".
5. Remarquer que dans la cellule sélectionnée apparaît le chiffre 3000 qui est mis en gras.
6. Penser à enlever le gras et à remettre les chiffres d’origine pour la suite…
Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI
30
2ème année Management Excel Avancé et VBA

École de Management

II. Boucle qui remplace les nombres qui dépassent le maximum par la valeur
maximale autorisée et les laisse en gras.

Modifier la macro existante :

1. Taper directement le raccourci clavier Alt+F11 ou vous suivez les étapes suivantes :
a. À l’Onglet "Développeur", cliquer sur le bouton "Macros"
b. Choisir la macro Securite.
c. Cliquer sur le bouton "Modifier".
2. Remarquer que le code VBA de la macro Securite apparaît à l’écran (les commentaires
ajoutés ci‐dessous en verts sont des indications facultatives) :
ActiveCell.FormulaR1C1 = "3000"
' Affiche 3000 dans la cellule sélectionnée
[Link] = True ' Met la cellule sélectionnée en gras

Pour la définition des variables :(au‐dessus du code existant) :

1. Passer au‐dessus du code existant.


2. Saisir le code ci-dessous :
Dim MaximumPermis As Integer
Dim i As Integer
MaximumPermis = Range("Maximum")
' MaximumPermis est égal au contenu de la cellule nommée Maximum

Pour créer la boucle :

1. Supprimer la ligne ActiveCell.FormulaR1C1 = "3000".


2. Saisir le code ci-dessous :
For i = 4 To 12 ' Pour aller de la ligne 4 à la ligne 12
Cells(i, 1) = MaximumPermis
' Sélectionne la cellule de la ligne i et de la colonne 1
' pour remplacer son contenu par le maximum permis
Cells(i, 1).[Link] = True
' Remplacer "Selection" par "Cells(i,1)"
' pour mettre en gras les cellules concernées.
Next i

Pour créer la condition logique :

1. Passer dans le corps de la boucle.


2. Saisir le code ci-dessous :
For i = 4 To 12 ' Pour aller de la ligne 4 à la ligne 12
If Cells(i, 1) > MaximumPermis Then
Cells(i, 1) = MaximumPermis
Cells(i, 1).[Link] = True
End If
Next i

Explication du code dans le tableau suivant :


Code Explication
For i = 4 To 12 De i est égal à 4 jusqu’à 12

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


31
2ème année Management Excel Avancé et VBA

École de Management

If Cells(i, 1) > MaximumPermis Then Si la cellule de la ligne i, colonne 1,


est supérieur au maximum permis.
Cells(i, 1) = MaximumPermis La cellule de la ligne i, colonne 12
est égal au maximum permis
Cells(i, 1).[Link] = True La cellule est mise en gras
End If Fin de la condition logique
Next i Retour au début de la boucle i

Le modèle de la macro terminée est le suivant :


Sub Securite()
'
' Securite Macro
'

'
Dim MaximumPermis As Integer
Dim i As Integer

MaximumPermis = Range("Maximum")

For i = 4 To 12
If Cells(i, 1) > MaximumPermis Then
Cells(i, 1) = MaximumPermis
Cells(i, 1).[Link] = True
End If
Next i
End Sub

Pour créer le bouton de macro :

1. Retourner dans sa feuille de calcul.


2. Entrer dans l’Onglet "Insertion", puis cliquer sur les boutons "Illustrations", et "Formes",
ensuite choisir la forme voulue, par exemple "Rectangle à coins arrondis".
3. En maintenant le bouton gauche de la souris enfoncé, dessiner un bouton dans la feuille de
calcul.
4. Saisir le texte du bouton, par exemple Maximum Permis et le mettre en forme (onglet
"Format de forme", etc.).

Pour affecter une macro au bouton :

1. Faire un clic droit sur le bouton créé Maximum Permis.


2. Cliquer sur "Affecter une macro…".
3. Choisir la macro Securite.
4. Cliquer sur le bouton "OK".

Pour vérifier :

1. Modifier la valeur maximale, par exemple 3000.


2. Cliquer dans n’importe quelle cellule de la feuille
3. Cliquer sur le bouton de macro Maximum Permis.
4. Remarquer ci-dessous que Les chiffres supérieurs au maximum sont remplacés par le
maximum autorisé et mis en gras (ce qui permet de vérifier quelles cellules ont été
modifiées). Aussi Dans la colonne Remarque, "Correct" apparaît dans toutes les cellules.

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


32
2ème année Management Excel Avancé et VBA

École de Management

Année 2023 – 2024 Réalisé par Mohammed ENNAHBAOUI


33

Vous aimerez peut-être aussi