Connaissances préalables La compréhension de ce qui
suit requiert une connaissance fonctionnelle de Excel. Excel et la sécuritéExcel refuse souvent d'exécuter les programmes VBA (qu'il nomme aussi macro-commandes ou macros). À l'ouverture d'un classeur contenant du code VBA, l'avertissement suivant apparaît sous le ruban:
Appuyez sur le bouton Options...: Sélectionnez puis Il est aussi possible que VBA soit complètement désactivé sur votre ordinateur. Dans Excel 2007: Cliquez le bouton Office .
|
Sélectionnez le Centre de
gestion de la confidentialité.
Cliquez le bouton Paramètres du Centre de gestion de la confidentialité.
Sélectionnez l'option Paramètres des macros.
Sélectionnez le choix Désactiver toutes les macros avec
notification.
Appuyez sur le bouton OK.
Vous devez quitter Excel pour que le changement à cette option soit activé.
Ce premier exemple illustre l'utilisation de VBA pour automatiser une tâche
Excel qu'il serait fastidieuse de faire manuellement:
colorer en jaune chaque cellule
déverrouillée.
Démarrez Excel avec un classeur vierge. Gardez undoigt sur la touche Ctrl afin de pouvoir sélectionnez plusieurs cellules éloignées les unes des autres. Placez le pointeur par-dessus la cellule A2. |
Sélectionnez l'onglet Protection. Désactivez la case Verrouillée. Répétez pour les cellules B1 et D1. |
Ouvrez l'onglet développeur à droite:
S'il n'est pas affiché:
Appuyez sur le bouton Office .
Appuyez sur le bouton Options Excel
(en bas à droite).
Dans le menu Standard, sélectionnez
la 3e case à cocher: Afficher l'onglet Développeur dans le ruban.
Appuyez sur le bouton Visual Basic.
Du menu Insertion, sélectionnez module: |
Changez le nom du module dans la zone de texte (Name) en bas à gauche. RemplacezModule1 par un nom significatif ne contenant pas d'espace ApprentissageVBA par exemple. |
|
Tapez (ou copiez-collez!) le code VBA suivant dans la zone de texte à droite.
Cela devrait donner le résultat ci-dessous. |
Testez votre code:
Placez le curseur sur la première ligne (SUB).
Appuyez sur la touche F8.
La ligne se colore en jaune.
VBA exécute une ligne à chaque fois que
vous enfoncez la touche F8, en répétant
les instructions encadrées par For et Next
pour chaque cellule de la feuille Excel active.
Vérifiez les changements dans la feuille Excel. Remarquez que la barre d'état d'Excel indique l'adresse de la cellule traitée par VBA.
Pour terminer l'exécution du programme, cliquez sur les boutons.Continuer
Le programme s'exécutera pour chaque cellule. Si le sablier tarde à disparaître, arrêtez le programme en enfonçant ensembles les touches Ctrl-Pause/Arrêt (ou Break).
ou
Réinitialiser:
le programme s'arrêtera.
ATTENTION: vous devez terminer l'exécution d'un programme VBA selon la procédure ci-dessus avant d'en exécuter un autre. En effet, si un programme est en débogage, VBA est en pause.
Rendez le programme disponible en Excel. Retournez dans la feuille Excel, onglet développeur. |
Dessinez un bouton dans la feuille active. |
Verrouillez quelques cellules jaunes, déverrouillez-en d'autres.
Cliquez sur le bouton pour que les cellules déverrouillées se colorent en jaune.
Quelques commentaires sur ce programme:
Il illustre l'un des 3 types de programme qu'on peut réaliser avec VBA: une procédure SUB.Dans ce second exemple, on veut pouvoir écrire dans une cellule Excel la formule: =fnNbCellulesCouleur(A1:D3,D1) et ainsi afficher dans cette cellule le nombre de cellules de la plage A1:D3 dont la couleur est identique à la couleur de la cellule D1. Évidemment, on veut pouvoir remplacer A1:D3 et D1 par toute autre référence à une plage ou une cellule valide.
Démarrez Excel avec un classeur vierge (ou utilisez le classeur créé pour
l'exemple précédent).
Colorez l'arrière-plan de quelques cellules.
Démarrez l'éditeur VBA (voir l'exemple précédent).
Créez un module ou utilisez un module existant.
|
Tapez (ou copiez-collez!) le code VBA suivant dans la zone de texte à droite. Le résultat devrait être comme l'image ci-dessous. |
VBA n'offre pas de moyen de tester directement une fonction. Procédons indirectement. Placez le curseur sur la ligne SUB TEST. Appuyez sur la touche F8. La ligne se colore en jaune. |
VBA exécute une ligne à chaque fois que vous enfoncez la touche F8 |
Puis en exécutant les lignes de la fonction. |
Appuyez sur la touche F8 pour exécuter |
Pour terminer l'exécution de la fonction, cliquez sur les boutons.
Continuer: la fonction s'exécutera pour chaque cellule de la plage.
Si le sablier tarde à disparaître, arrêtez la fonction en enfonçant ensembles les touches Ctrl-Pause/Arrêt (ou Break).
OU
Réinitialiser: la fonction s'arrêtera.
ATTENTION:
Vous devez terminer l'exécution d'une fonction VBA selon la procédure ci-dessus avant d'exécuter un autre programme VBA. En effet, si un programme est en
débogage, VBA est en pause.
Utilisez la nouvelle fonction dans Excel.
Dans une feuille du classeur Excel, colorez l'arrière plan de quelques
cellules (A2, B1 et D1 par exemple). |
Quelques commentaires sur le programme:
Il illustre l'un des 3 types de programme qu'on peut réaliser avec VBA: une fonction personnalisée.
Il contient aussi une maladresse de programmation: si l'utilisateur
entre des paramètres erronés
(=fnNbCellulesCouleur(A1:D3,vbYellow ou =fnNbCellulesCouleur(A1:D3) par
exemple), le message d'erreur n'est pas explicite.
Il contient aussi une procédure Sub (Sub Test) qui sert à tester
la fonction VBA à partir de l'environnement VBA.
Dans ce troisième exemple, on veut qu'une fenêtre d'accueil s'affiche automatiquement lors de l'ouverture d'un classeur Excel.
Démarrez Excel et ouvrez un classeur (vierge ou non).
Démarrez l'éditeur VBA (voir le premier exemple).
Créez un formulaire:
Du menu Insertion, sélectionnez UserForm: |
Changez le nom du formulaire dans la zone de texte (Name) en bas à gauche. Remplacez UserForm1
par un nom significatif ne contenant
pas d'espace |
||
Changez aussi le titre du formulaire, inscrit dans la zone de texte Caption, un peu plus bas |
||
Du menu Affichage, sélectionnez : Dans la boîte à outils, sélectionnez un intitulé: |
||
Dessinez un libellé sur le formulaire: |
||
Cliquez dans le libellé et changez son contenu.
|
||
Dans la Boîte à outils, sélectionnez un bouton |
||
Cliquez dans le bouton et changez son libellé |
||
Changez le nom du
bouton dans la zone de texte (Name) en bas à
gauche. Remplacez |
||
Double-cliquez sur le bouton Ok. Une fenêtre VBE s'ouvre
|
||
|
Tapez (ou copiez-collez!) le code VBA dans la zone de texte à droite. |
|
Il faut maintenant testez le formulaire.
Double-cliquez sur frmAccueil pour vous assurer Appuyez sur la touche F5 pour exécuter la boîte de dialogue. Appuyez sur le bouton pour la fermer. |
Associez l'ouverture du formulaire à l'ouverture du classeur Excel:
Dans l'explorateur de projet, double-cliquez sur ThisWorkbook: |
Dans la liste déroulante (général), choisir Workbook: La seconde liste déroulante affiche Open. |
Dans la zone de texte, inscrire frmAccueil.Show |
Fermez Visual Basic, sauvegardez le classeur Excel et fermez-le.
Ouvrez à nouveau le classeur. Il est probable que vous devrez
activer les macros.
L'écran d'accueil s'affichera
alors automatiquement.
Vous pouvez le fermer en appuyant sur OK. |
Quelques commentaires sur le programme:
Il illustre le dernier des 3 types de programme qu'on peut réaliser avec VBA: une boîte de dialogue (ou formulaire).Ce tutoriel est destiné à des étudiants de niveau universitaire en administration, n'ayant pas de connaissance en programmation, mais maîtrisant Excel.
Certains aspects de VBA ont été volontairement omis parce que jugés inutiles à cet auditoire.
Pour une description complète du langage, consultez un bon livre!
Sites Web:
http://support.microsoft.com/default.aspx?kbid=163435 Centre de support VBA
de Microsoft
http://office.microsoft.com/fr-fr/excel/CH062528391036.aspx Formation
Microsoft sur les macros Excel
http://www.cathyastuce.com Cathy
Astuces: astuces, cours, exercices sur Office et Windows.
http://www.admexcel.com
Excel par l'exemple
http://ericrenaud.fr/
Astuces et code VBA pour Excel
http://www.misfu.com/cours-et-tutoriaux-tableur-excel.html Cours / Formation
Excel
http://www.excel-online.net Le site
pour maitriser le tableur Excel
http://pagesperso-orange.fr/bernard.cordier/index.htm Ressources STG sur
Office
http://www.vbfrance.com/ Visual Basic Codes Sources. Les pages sont longues à
charger.
VB & VBA in a Nutshell: The Language, par Paul Lomax: Un des meilleurs livres de référence VBA. Pour programmeurs.
Vous avez apprécié cette page? Ajoutez-la dans vos favoris en utilisant l'un des métaoutils
ci-dessous. Cliquez sur l'un des boutons. Vous |
Abonnez-vous à l'infolettre Abonnez-vous à l'infolettre du site pour recevoir le manuel " 150 fonctions Excel expliquées ". Vous recevrez aussi les prochaines infolettres sur les nouveautés du site et des formations détaillées que vous ne trouverez nulle part ailleurs. |
|