-Accueil informatique- / -Logiciels utiles- / -Gifs animés / -Un PC loisir au travail-
-Logiciels faits main- / -Didacticiel VBA 1- / - Didacticiel VBA 2- / -Code VBA libre-
Livre d'or
--Plan du site- -Accueil
Vous maîtrisez correctement Excel, vous voulez aller un peu plus loin avec ce formidable outil.
Vous avez exploré tout au plus 10% de ce logiciel.
Je vous propose une introduction, un petit cours pour découvrir et apprendre en douceur à utiliser les macros et VBA (Visual Basic Application) pour Excel
Ceci n'a rien d'académique, en la matière, je suis autodidacte. Alors ce que je vous propose là n'est qu'une méthode simple, une introduction. Un petit début pour que vous puissiez voler vite de vos propres ailes. La maîtrise, la vraie, ne viendra qu'avec la pratique
Vous retrouverez tout les exercices et exemples de ce didacticiel, tutorial, dans le fichier suivant : exovba.xls (enregistrer la cible sous …)
Qu'est ce qu'une macro
Une macro c'est l'enregistrement d'une action réalisée dans Excel, n'importe quelle action. C'est un programme
Réalisez l'action suivante:
-allez dans outils/macro/sécurité choisissez niveau de sécurité faible sinon le vba est désactivé
-ouvrez Excel sauvegardez le classeur ou vous voulez sous le nom "exovba.xls"
-sélectionnez la cellule C5
-Allez dans outils/macro/nouvelle macro"
-Tapez "exo_a" comme nom pour cette macro puis OK
-Tapez 25 puis "entrée"
-Allez dans outil/macro/arrêter l'enregistrement
Vous avez réalisé un mini programme qui tape 25 dans la cellule sélectionnée puis sélectionne la cellule C6 chaque fois qu'on l'exécute
Essayons le:
-Sélectionnez la cellule E10
Allez dans outil /macro /macros
-Choisissez la macro "exo_a" puis OK
-Miracle, ça marche!!!! Sans le savoir vous avez écrit vos premières lignes de code, votre premiers programme ou « Sub »
-allez dans outil/macro/Visual basic editor un programme d'aspect un peu rébarbatif s'ouvre
-En haut à gauche dans la fenêtre "Project VBA Project", développez le dossier module, c'est ici que s'enregistrent vos mini programmes
-Double cliquez sur "Module 1" dans la fenêtre principale votre programme apparaît
-Si vous n'etes pas totalement inapte en anglais vous comprenez alors vite
-Remplacez "25" par "azerty" puis retournez dans Excel
-sélectionnez une cellule et exécutez la macro "exo_a" et la pas besoin d'insister plus avant vous avez compris ce qu'est la programmation
En fait ce que je dis là est le plus important, si vous ne devez retenir qu’une chose ce doit être celle là.
Je ne cous présente dans ce didacticiel que des fonctions simples et surtout que vous ne retrouverez pas avec la méthode suivante. Si je ne vous présente rien de plus c’est que C’EST INUTILE !!!!!
Vous avez remarqué que vous avez écrit du code sans connaître la moindre touche de langage. On peut faire pareil pour tout, vous enregistrez une macro « à la main » puis vous observez le code correspondant. Toutes les fonctions qui vous seront utile pour aller plus loin s’y trouveront et n’attendent plus que vous les modifiiez à votre convenance
-allez dans outil/macro/Visual basic editor un programme d'aspect un peu rébarbatif s'ouvre
-En haut à gauche dans la fenêtre "Project VBA Project", développez le dossier module, c'est ici que s'enregistrent vos mini programmes
-Double cliquez sur "Module 1" dans la fenêtre principale
-en bas tapez sub Nomdesub
-En bas apparaît la fonction EndSub automatiquement, vous pouvez écrire votre programme entre ces 2 lignes
Choisir une cellule XLS :
Vous avez vu : Range("C6")
il y a beaucoup plus pratique la fonction Cells(n° de ligne, n° de colonne)
L’équivalent est donc Cells(6,3)
Sélectionner une cellule : fontion select
Cells(6,3).select On applique la fonction sélectionner à la cellule C6
Lui attribuer une valeur :
Selection.Value="qsdf" met le texte (toujours entre guillemet pour du texte…) dans la sélection ici C6
ou
Selection.Value=100 met la valeur 100 dans la sélection ici C6
Enfantin non ?
Ecrivez un petit programme qui met dans la cellule A1 la valeur 20 et dans la cellule A2 le texte bingo puis sélectionne la cellule B1. Dans une sub nommée « exo_b »
Une variable est un endroit où on peut stocker toutes sortes de choses comme des chiffres, du texte… et avec lesquelles il est possible d’effectuer des opérations. On lui donne le nom qu’on veut.
Créer une sub nommée « exo_c » pour réaliser les instructions suivantes :
Mettre la valeur de la cellule A2 dans la variable nommée (arbitrairement) truc
truc=cells(2,1)
mettre dans la variable chose 3 fois la variable truc
chose=3*truc
mettre la valeur de chose dans la cellule A3
Cells(3,1).Value=chose
Les fonctions que je vous présente là ne peuvent être découverte avec la methode mentionnée dans le chapitre 2. Ce sont elles qui font la différence entre le simple utilisateur de macro et le programmateur.
Ce sont des tests logiques réalisant une série d’action si ils sont concluant et une autre dans le cas inverse.
C’est la fonction :
If « condition » then
« instruction si la condition est réalisée »
else
« instruction dans le cas contraire »
endif
Les plus simples opérateur de condition sont : = ; > ; < ; >= ; <=
-taper 1 dans la cellule A5
-allez dans outil/macro/Visual basic editor un programme d'aspect un peu rébarbatif s'ouvre
-En haut à gauche dans la fenêtre "Project VBA Project", développez le dossier module, c'est ici que s'enregistrent vos mini programmes
-Double cliquez sur "Module 1" dans la fenêtre principale
-en bas tapez sub exo_d
-En bas apparaît la fonction EndSub automatiquement, vous pouvez écrire votre programme entre ces 2 lignes
Taper le code suivant :
bidule=cells(5,1) met la valeur de A5 dans la variablebidule
if bidule=1 then teste si bidule est bien egale à 1
cells(5,2).select selectionne la cellule B5
Selection.value=”La cellule A5 est bien egale à 1” Met le texte La cellule A5 est bien egale à 1 dans la cellule séléctionnée
else sinon
cells(5,2).select selectionne la cellule B5
Selection.value=” La cellule A5 n’est pas egale à 1” Met le texte La cellule A5 n’est pas egale à 1 dans la cellule séléctionnée
Endif fin des conditions
Essayons :
-Executez la macro exo-d
-remplacer 1 par 1234 dans la cellule A5 puis exécutez à nouveau exo_d
Indispensable pour répéter une action un grand nombre de fois :
For « variable » = « valeur de debut » to « valeur de fin »
« Instructions à répéter »
Next « variable »
-allez dans outil/macro/Visual basic editor un programme d'aspect un peu rébarbatif s'ouvre
-En haut à gauche dans la fenêtre "Project VBA Project", développez le dossier module, c'est ici que s'enregistrent vos mini programmes
-Double cliquez sur "Module 1" dans la fenêtre principale
-en bas tapez sub exo_e
-En bas apparaît la fonction EndSub automatiquement, vous pouvez écrire votre programme entre ces 2 lignes
-tapez le code suivant :
For i=1 to 100 ligne1
Cells(i,4).select ligne 2
Selection.value=i ligne 3
Next I ligne 4
Ce code effectue les actions suivantes:
-ligne1 : ajoute 1 a la valeur de la variable i (1 la premiere fois, puis 2 puis 3…jusqu'à 100
-ligne 2 selectionne la cellule D « valeur de i »
-ligne3 met la valeur de i dans la cellule sectionnée
-ligne 4 renvoie à la ligne 1 jusqu'à ce que i ai la valeur 100
-Sur la Feuil2 du classeur créer un tableau de 2 colonnes avec pour titre « Prénom » dans la colonne A et « sexe » dans la colonne B
-Dans la colonne prénom taper une série de 10 prénom de votre choix et leur sexe dans la colonne d’a coté sous la forme « h » pour homme et « f » pour femme
Faite un tableau de deux colonnes avec comme titre « Femmes » dans la colonne E et « Homme » F
Créer une sub nommée exo_f
cette sub devra parcourir le tableau de la ligne 2 à la ligne 11 (pas le titre) et écrire le nom de la personne dans la bonne colonne (Homme ou femme) en fonction de son sexe
Je sais cet exercice n’est pas évident mais tentez le coup, cassez vous le crâne et si vous n’y arrivez pas regardez le corrigé…exovba.xls
Si ce didacticiel vous à plu, visitez la leçon n°2