Vba Exceld
Vba Exceld
Vba Exceld
§ Le VBA (Visual Basic for Applications) est un langage de programmation proche du
langage du Visual Basic qui nécessite une application hôte pour s’exécuter (Excel
dans notre cas)
§ Grâce au VBA nous allons pouvoir réaliser à peu près tout ce que l’on souhaite avec
Excel
INTRODUCTION
Avantages:
§ Automatiser les tâches répétitives.
§ Contrôler la quasi-totalité de l'IHM (Interface Homme-Machine): les boites de dialogue, les
formulaire, …etc.
§ Il est rapide: manipuler plusieurs fichier Excel au même temps
§ Contrôler une application à partir de l’autre.
Inconvénients:
§ Nécessiter une application hôte pour s'exécuter comme Excel, Word, Power Point, …etc
§ Le recalcule, affichage et graphisme dans Excel peut prendre, dans certain cas, énormément du
temps;;
ENVIRONNEMENT DE DÉVELOPPEMENT
Onglet développeur:
§ Version 2010-2013-2016: Cliquer sur Fichier > Options > Personnaliser le Ruban puis cocher « Développeur »
ü Le code est écrit entre les mots clé Sub et End Sub
ü Les arguments sont facultatifs
ü Les commentaires (texte non interprété) commencent par une apostrophe (les commentaires sont en vert)
Exécuter une macro
§ Dans VBE
Étapes à suivre
§ Cliquer sur « Enregistrer une macro » puis OK
§ Exécuter les opération sans interruption
§ Cliquer sur « Arrêter l’enregistrement »
§ Remplissez la colonne B et D et cliquer sur le bouton pour exécuter la macro
PREMIÈRE MACRO
Avantages de l’enregistreur de macros
§ Ne nécessite pas de connaissances préalable du langage VBA
§ Aide à améliorer les connaissance en langage VBA pour les débutants
ACCÈS AUX
FONCTIONNALITÉS D’EXCEL
DEPUIS VBA
OBJETS
Modèle d’objets de l’application:
§ Les applications de MICROSOFT OFFICE sont organisés en modèle d’objets
§ Chaque application possède un ensemble d’objets clairement définis, organisés en fonction des relations qui les
unissent.
Les objets en Excel:
§ Les objets manipulés sont des classeurs, des feuilles de calcul, des plages, des cellules, …
§ VBA est un langage de programmation orienté objet.
§ Un objet est une entité nommée possédant des caractères propres (propriétés) et actions propres (méthodes).
§ Exemples d’objets:
ü Excel est un objet Application
ü Un classeur est un objet Workbook
ü Une feuille de calcul est un objet Worksheet
ü Une plage de cellules est un objet Range
ACCÈS AUX OBJETS
Sélection absolue des cellules: Range
§ On peut afficher la liste des possibilités que l'on peut associer à un objet, ajoutez un point à l’objet:
PROPRIÉTÉS ET MÉTHODES DES OBJETS
Exemple de propriétés:
§ Propriété Value : désigner la valeur de l’objet (optionnelle)
Exercice 3 :
§ Solution:
PROPRIÉTÉS ET MÉTHODES DES OBJETS
LES COULEURS :
Il y a deux possibilité pour attribuer une couleur:
Remarque: Toute couleur est un mélange des nuances des couleurs Rouge, Verte et Bleu
è RGB(nuance Rouge, nuance Verte, nuance Bleu)
PROPRIÉTÉS ET MÉTHODES DES OBJETS
Exercice 4 : Les couleurs:
But de l’exercice: Colorier les bordures « Borders » , Colorier le fond des cellules « Interior »
Créer une macro pour chaque question:
§ Question 1: Créer une macro qui donne une couleur à la bordure de la cellule active (avec ActiveCell)
§ Question 2:
§ Créer une macro qui va ajouter une bordure aux cellules sélectionnées (avec Selection)
§ Modifier l’épaisseur de cette bordure
§ Donner une couleur à cette bordure
§ Question 3: Créer une macro qui colorie le fond des cellules sélectionnées (utiliser Selection)
PARTIE 2
VERS LA PROGRAMMATION
AVANCÉE
VARIABLES
q Une variable permet de stocker une valeur pouvant être modifiée au cours de l’exécution d’un
programme.
Syntaxe: Dim nom_variable As Type_de_donnee
q Une constante: permet de stocker une valeur qu'on ne peut pas modifier:
Syntaxe: Const nom_constante As Type_de_donnee = valeur
q Une structure de donnée: créer notre propre type de donnée
Syntaxe: Type nom_structure
Ensemble des attributs
End Type
VARIABLES
Les types de variables:
Type Nom Détails Symbole
Byte Nombre entier de 0 à 255.
ATTENTION:
La numérotation des cases commence de 0
=
VARIABLES
La porté des variables:
La portée d’une variable définit quelles procédures (macros) ou fonctions peuvent utiliser cette variable.
Variable local:
Une Variable déclarée à l'intérieur d'une procédure / fonction ne sera utilisable qu'à l'intérieur de celle-ci.
Variable accessible à l’ensemble des procédures et des fonctions d’un module:
Elle doit être déclarée au haut du module à l’extérieur de toute procédure et de toute fonction.
Exemple:
Résultat:
Solution:
INSTRUCTION DE CONTRÔLE
Les instructions de contrôle servent à effectuer des actions en fonction de critères (conditions) précis
Syntaxe:
S’il y a plusieurs instruction ElseIf, il est possible de gérer les conditions par Select case
INSTRUCTION DE CONTRÔLE
Opérateurs de comparaison
Opérateur de comparaison Signification
= Égalité
> Supérieur à
< Inférieur à
>= Supérieur ou égale à
<= Inférieur ou égale à
<> Différent de
Opérateur pour des conditions multiples: AND et OR
ü L’opérateur AND exige que toutes les conditions soient vrai
ü L’opérateur OR exige au moins une des conditions soit vrai
Exemple: a = 4 , b = 2
INSTRUCTION DE CONTRÔLE
Quelques fonctions utiles:
ü IsEmpty()
ü IsNumeric()
ü IsDate()
ü …
Solution:
BOUCLES
Les boucles permettent de répéter des instructions un certain nombre de fois, ce qui peut être un gain de temps
considérable.
VBA fournit deux structures pour répéter en boucle les mêmes instructions :
ü l’instruction For...Next
ü l’instruction Do...Loop
BOUCLES : DO … LOOP
La boucle Do...Loop est utilisée lorsque l’on veut que la répétition des instructions s’arrête quand une condition
donnée est vérifiée.
On distingue plusieurs syntaxes possibles:
Avec ces deux boucles, les instructions peuvent ne jamais être exécutées. Pour qu’elles soient
exécutées au moins une fois, on peut utiliser l’une des deux syntaxes suivantes :
BOUCLES : DO … LOOP
Exemples:
Ø Avec la boucle : Do … While / While … Wend
§ Tant que la condition est vraie, les instructions sont exécutées
en boucle
Ø Tant que la condition est fausse, les instructions sont exécutées
en boucle
ATTENTION: attention à ne pas créer une boucle infinie è il ne faut pas oublier d’incrémenter le compteur
BOUCLES : FOR … NEXT
La boucle For... Next est utilisée lorsque l’on connait à l’avance le nombre de fois où l’on veut que les instructions
soient répétées.
Syntaxe:
Remarque:
ü Par défaut, le pas d’incrémentation de i est 1. Si on veut changer le pas, il faut utilisé le mot-clé Step.
Exemple:
BOUCLES : FOR … NEXT
La boucle For Each...Next : permet d’accéder aux éléments d’un tableau ou les objets d’une collection.
Syntaxe:
Exemples:
ü Afficher les éléments d’un tableau dans des boites de dialogue
ü Afficher le nom des feuilles du classeur dans des boites de dialogue
BOUCLES : FOR … NEXT
La boucle For Each...Next
Exercice 3:
1. Considérer la plage des cellules de A1 à C5
2. Colorier le fond chaque cellule de cette plage avec une couleur (ColorIndex) ET écrire dans la cellule la valeur
de la couleur utilisée
Rappel: ActiveCell.Interior.ColorIndex = 1
Résultat
Solution:
BOUCLES
Remarque:
Quitter une boucle prématurément:
Il est possible de quitter une boucle For prématurément grâce à l'instruction suivante : Exit For
Il est possible de quitter une boucle Do..Loop prématurément grâce à l'instruction suivante : Exit Do
FONCTIONS
Une fonction est un bloc de code regrouper par un nom et qui retourne une valeur à la fin de l’exécution. On peut
passer aucun, un ou plusieurs arguments à une fonction.
Exemple:
Une fonction qui calcul le carre d’un nombre
è Spécifier le type de l’argument et/ou du retour è
q Les fonctions peuvent être utilisées sur la feuille comme n'importe quelle fonction Excel.
FONCTIONS
Fonction Privée et publique
q Toutes les procédures et fonctions sont déclarées par défaut publique « public ».
q Si une fonction /procédure est publique, alors elle est accessible dans tous les modules de
l'application.
q Si une fonction / procédure est privée « private », alors elle n’est accessible qu’à l’intérieur du
module.
FONCTIONS
Exercice 4:
1. Écrire une fonction qui prend en paramètre les références de cellules (lignes et colonne) et calcule la
moyenne des valeurs sur cette plage.
Solution:
FONCTIONS
Exercice 4 (suite):
2. Écrire une fonction utilisant la fonction de la question précédente et permettant de calculer l'écart
type sur une plage de données.
$ %
Rappel: 𝜎" = ∑).$(𝑥) −𝑚)-
%
Astuce: Utiliser la fonction sqr pour calculer la racine carrée : sqr(x) = 𝑥
1. Proposer une fonction qui renvoie vrai si le nombre entier passé en paramètre est un nombre premier.
Remarque:
ü Un nombre est premier s’il n’est divisible que par 1 et lui même
ü 0 et 1 ne sont pas premier
ü Le reste de la division de a par b è r = a mod b
Solution:
2. En déduire une fonction permettant d'obtenir la liste des n premiers nombres premiers. (retourner un tableau)
3. Écrire une procédure qui :
ü Demande à l’utilisateur d’entrer le nombre n
ü Affiche les éléments du tableau dans des cellules
FONCTIONS
Exercice 5 (suite):
EXCEL
VBA ET L’IHM
Exemple:
BOITES DE DIALOGUE : MSGBOX
Les différentes possibilités pour
l’argument [Boutons] de MsgBox
BOITES DE DIALOGUE : MSGBOX
Exemples:
• Choisir les boutons
• Choisir l’icône
• Créer une boucle qui demande à l’utilisateur s’il aime Excel ou pas, la seul réponse acceptée est « oui »
BOITES DE DIALOGUE : INPUTBOX
La fonction InputBox
ü demande à l’utilisateur de saisir une valeur,
ü renvoie le contenu de la zone de texte sous la forme d'une chaîne de caractère.
Exemple:
FORMULAIRES
§ C’est un objet Excel qui facilite la saisie, la manipulation et extraction des données d’une ou plusieurs feuille
Excel.
§ Ils peuvent être utilisés pour contrôler les données avant les enregistrées dans un classeur ou une base de
données.
§ Il est construit par des éléments qu’on appel contrôleur: textBox, case à cocher, …
Les évènements
§ À partir l'éditeur de macros du « UserForm », on trouve:
§ La liste des différents contrôles ainsi que l'UserForm.
§ La liste des événements disponibles
FORMULAIRES
Exemple:
§ Créer le formulaire suivant, et ajouter un événement pour que la valeur entrée
sera enregistrée dans la cellule A1
§ ÉTAPES:
1. Créer le formulaire en glissant les contrôles (label, textBox, CommandBouton)
de la boite à outils
Solution:
FORMULAIRES
Exercice 1 (suite):
3. Écrire une fonction qui teste la validité des données du formulaire remplis par l’utilisateur en
retournant True ou False
ü Le type des données
ü Vérifier que l’utilisateur a rempli tous les champs
ü En cas d’erreur, mettre le label en rouge : NomDuLabel.ForeColor = RGB(255, 0, 0)
FORMULAIRES
Remarque: Opérateur « like »
§ L’opérateur « like » est utilisé pour comparer deux chaines de caractères.
pattern
[abc] a ou b ou c
[a-d] a ou b ou c ou d
[369] 3 ou 6 ou 9
[2-5] 2 ou 3 ou 4 ou 5
[!a2c] Tout caractère sauf a et 2 et c
[?*#] ? ou * ou #
FORMULAIRES
Exercice:
Solution:
FORMULAIRES
Exercice 2:
1. Créer le formulaire, y placer les contrôles nécessaires et nommer ces contrôles;;
Remplir le formulaire à partir de la feuille de calcul:
2. Ecrire un code qui initialisera le formulaire: Remplissez la liste des pays
3. Ecrire un code qui: à chaque changement de pays, la liste des villes de ce pays s’affiche
4. Ecrire un code qui affiche la ville choisie par l’utilisateur
FORMULAIRES
Exercice 2 (suite):
1. Créer le formulaire, y placer les contrôles nécessaires et nommer ces contrôles;;
Remplir le formulaire à partir de la feuille de calcul:
2. Ecrire un code qui initialisera le formulaire: Remplissez la liste des pays
3. Ecrire un code qui: à chaque changement de pays, la liste des villes de ce pays s’affiche
4. Ecrire un code qui affiche la ville choisie par l’utilisateur