Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
● Introduction
● Les variables
● Les opérateurs
● Programmation : Structure : Alternative (simple)
● Programmation : Structure : Alternative (imbriquée)
● Programmation : Structure : A choix multiple
● Programmation : Structure : Itérative ou répétitive
● Programmation : Structure : Répéter … Jusqu'à
● Programmation : Structure : Pour
● Programmation : Fonctions et procédures
● Programmation : Les boîtes de Dialogue
● Programmation : Instructions et Opérateurs divers
DCG - unité 08-------------------------------------------------------------------------
Programmation - VBA
2021- 2022
12A
12-01 Programmation VBA : Introduction
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.Les Shadoks
Dans le cadre de la programmation !
Dans la symbiose homme-machine, c’est l’homme qui doit s’adapter
parce que la machine ne peut pas.
N’ayez pas de bonnes idées si vous n’êtes pas prêt à en être
responsable.
Si vous avez une fonction avec 10 paramètres, vous en avez
probablement oublié.
d’Alan Perlis
Théoriquement, ça marche !!
Je comprends pas! ça marchait très bien !!
Tant que mes chefs font comme si je gagnais beaucoup,
Je fais comme si je travaillais beaucoup.
Pourquoi faire de la programmation en VBA (Visual Basic pour Applications – Visual Basic for Applications) ?
La vocation de la programmation en VBA est d'automatiser des tâches qui sont généralement répétitives entre l'utilisateur et
l'ordinateur.
Cela passe par la création de fonctions ou de procédures personnalisées permettant l'exécution de tâches liées fréquemment à
un contexte particulier.
Donc, un programme est un ensemble d'opérations écrites par une personne dans un langage sous forme de Code.
12-01 Programmation VBA : Introduction
Une macro, c'est quoi ?
● Une macro, c'est un concept qui est puissant,
● C'est une suite d'instructions que l'on exécute quand on le souhaite,
● Pour exécuter ces instructions, il faut appeler la macro par son nom.
.
Nota : Ce nom ne doit contenir ni
accent ni espace
● Le VBA est un langage de programmation orienté objets.
● VBA signifie Visual Basic For Applications. Dans notre cas présent, l'application est Excel.
● C'est pourquoi il existe aussi le VBA Word, Powerpoint ou encore Access.
● Le langage de programmation est le Visual Basic.
● Pour fonctionner le programme VBA doit être intégré dans une application Microsoft Office : Excel, Access,
PowerPoint.
12-01 Programmation VBA : Introduction
Nous devons avoir tous les outils de développement à disposition.
Commençons par afficher le ruban Développeur puis Démarrer avec un nouveau classeur vierge dans Excel,
● Cliquer sur Fichier en haut à gauche de la fenêtre puis sur Options dans la liste,
● Dans la boîte de dialogue, choisir la catégorie Personnaliser le ruban,
● Dans la liste de droite, cocher la case Développeur,
● Puis cliquer sur Ok pour valider,
● En passant par Fichier puis Enregistrer sous, enregistrer ce classeur au format .xlsm,
Important :
Ce format .xlsm prend en charge les macros et leur code.
Si l'enregistrement se fait au format.xls classique, les macros sont perdues. Cette manière de faire est essentiellement
orientée pour la sécurité.
Les macros étant codées dans un langage de programmation, vous pourriez très bien y trouver des codes malveillants
venant de tierces personnes. VBA Excel est en effet très puissant.
Avertissement :
Il faudrait des centaines de pages de documentation et beaucoup de patience pour explorer et maitriser le VBA dans son
intégralité.
Ce cours nous permet juste la découverte des bases de la programmation en VBA.
Comprendre la logique de construction d'un programme, d'une fonction, générer des algorithmes et utiliser les principales
instructions du langage VBA.
Nous conseillons pour ceux qui veulent approfondir leur connaissance de s'orienter vers des ouvrages, vers l'aide Microsoft
etc.
12-01 Programmation VBA : Les variables
Byte 1 octet Numérique Numérique Compteur allant de 0 à 255
Boolean 2 octets Boolean Retourne Vrai (True -1) ou Faux False (0)
Integer 2 octets Numérique Compteur allant de -32 768 à 32 767
Long 4 octets Numérique Compteur allant de -2 147 483 648 à 2 147 483 647
Double 8 octets Numérique Pour gérer des données à virgule.
Single 4 octets Numérique Virgule flottante allant de 1, 401298E-45 et 3,4028235E + 38
Currency 8 octets Numérique Monétaire, pour gérer des devises, avec 4 chiffres après la virgule.
Date 8 octets Date Pour les dates, du 1er janvier 100 au 31 décembre 9999
String Longueur chaîne Pour les chaînes de caractères de 1 à environ 2 milliards (231) caractères.
Variant 16 ou 24 octets Quand on ne sait pas quel type sera retourné par la fonction appelée ou que la
fonction peut retourner Null, False, True. Tout type de donnée type par défaut
si pas déclarée).
Dim MaVariable As Integer
Dim Déclaration de la variable
MaVariable Nom choisi pour cette variable (sans espaces)
As Déclaration du type de la variable
Integer Type de la variable
Cette première ligne de code est la déclaration de la variable (généralement placée en début de procédure).
On peut voir la diversité
de déclarations au
niveau du Numérique !
12-01 Programmation VBA : Les variables
Comme tout programme, celui-ci commence par son nom.
Le programme (Procédure) doit commencer par :
● Sub suivi du nom du programme et de parenthèses () et se termine par : End Sub
Pour les fonctions le programme doit commencer par :
● Function Suivi de son nom et entre parenthèse le nom d'une Variable et se termine par : End Function
Exemple d'une Procédure :
Sub CalculTTC ()
…
…
End Sub
Exemple d'une Fonction :
Function Cube (Nombre)
Cube = Nombre ^ 3
End Function
Avertissement :
La parenthèse dite Angl-Saxonne (quote) ( ' ) permet d'introduire un commentaire dans votre programme afin de le
rendre compréhensif et de le documenter
Ce commentaire apparait en vert et qui est sans aucun effet sur le programme.
Ne pas confondre avec la double quote : "
Exemple : Dim TTC As Single ' Variable indiquant la valeur TTC
Une Fonction est un programme exécutant une
suite d'instruction et renvoyant une et une seule
valeur.Une Procédure est un programme
mais ne renvoyant pas de valeur.
12-01 Programmation VBA : Les opérateurs
Dans VBA nous retrouvons ce que nous avons appris dans les algorithmes c’est-à-dire :
+ Addition
- Soustraction
* Multiplication
/ Division
^ Puissance
Opérateurs mathématiques : Opérateurs de comparaison :
> Supérieur
< Inférieur
>= Supérieur ou égal
<= Inférieur ou égal
<> Différend
= Affectation d'une valeur dans une variable
Opérateurs Logiques :
AND ET A ET B Test Vrai si A et B Vrai
OR OU A OU B Test Faux si A et B Faux
NOT NON A NOT B Test réussi si A est présent sans B
B NOT A Test réussi si B est présent sans A
12-01 Programmation VBA : Structure alternative (Simple) - (IF THEN ELSE END IF)
Structure alternative simple :
Une séquence alternative (on dit aussi : conditionnelle) représente un choix entre deux possibilités.
֎ Si la réponse à la condition est Vraie, la première possibilité est exécutée.
֎ Dans le cas contraire (condition fausse), la deuxième possibilité est exécutée.
֎ Dès qu'une des 2 possibilités est exécutée, la séquence est terminée et on continue la suite.
La condition alternative se présente de la manière suivante :
SI Condition ALORS
Action 1
SINON
Action 2
FINSI
Explication :
Si la condition vaut Vrai
alors le bloc Action 1 sera exécuté, le bloc Action 2
sera ignoré,
sinon le bloc Action 2 sera exécuté, le bloc Action 1
sera ignoré.
La condition alternative se présente de la manière suivante :
IF Condition THEN
Bloc d'instructions si la condition est vraie
ELSE
Bloc d'instructions si la condition est fausse
END IF
NOTA :
Le mot-clé ELSE peut ne pas exister. De ce fait, il existe un
bloc d'instructions soumis à une seule condition et pas
d'alternative.
Ecriture VBAEcriture Algorithmique
12-01 Programmation VBA : Structure alternative (Imbriquée) – (IF THEN ELSEIF ELSE ENDIF)
La condition alternative imbriquée se présente de la
manière suivante :
SI Condition1 ALORS
Action 1
SINON
SI Condition2 ALORS
Action 2
SINON
Action 3
FINSI
FINSI
Explication :
Si la condition vaut Vrai
alors le bloc Action 1 sera exécuté, le bloc
Action 2 sera ignoré,
sinon le bloc Action 2 sera exécuté, le bloc
Action 1 sera ignoré.
La condition alternative imbriquée se présente de la manière
suivante :
IF Condition1 THEN
Bloc d'instructions si la condition1 est vraie
ELSE
IF Condition2 THEN
Bloc d'instructions si la condition2 est vraie
ELSEIF
Bloc d'instructions si la condition2 est fausse
END IF
END IF
Ecriture VBAEcriture Algorithmique
12-01 Programmation VBA : Structure à choix multiple - (SELECT CASE … END SELECT)
֎ Il peut arriver dans un programme que nous ayons toute une série de : IF ELSE END IF qui s’emboite.
֎ Cela devient presque incompréhensible et la maintenance devient pénible
֎ Pour l’éviter, utiliser une structure que l’on nomme : Sélection à choix multiples : SELECT CASE … END SELECT
La structure à choix multiple se présente de la
manière suivante :
SUIVANT Var_Choix FAIRE
Valeur 1 : <Action 1>
Valeur 2 : <Action 2>
…..
Valeur n : <Action n>
SINON
<Action Par Défaut>
FINSUIVANT
FIN
SELECT CASE Variable
CASE Valeur 1
Bloc d'instructions
CASE Valeur 2
Bloc d'instructions
CASE Valeur 3
Bloc d'instructions
CASE Valeur 3
Bloc d'instructions
……
CASE ELSE
Bloc d'instructions
END SELECT
Ecriture VBA
● Variable correspond à la variable de contrôle et elle peut être de n'importe quel type
en VBA y compris un réel ou une chaine de caractères.
● Valeur doit être impérativement de même type que Variable.
● La partie CASE ELSE est facultative.
Ecriture Algorithmique
12-01 Programmation VBA : Structure itérative ou répétitive – (DO WHILE … LOOP)
Introduction :
Une séquence itérative (on dit aussi : répétitive) reproduit un certain nombre de fois la même action ou série d'actions.
Une condition doit être impérativement posée.
֎ Si la réponse à la condition est Vraie, la série d'actions est exécutée.
֎ Dans le cas contraire (condition fausse), la séquence est terminée.
La structure itérative se présente de la manière suivante :
TANT QUE Condition FAIRE
Action 1
FIN TANT QUE
FIN
Nota : La condition compare deux variables à l'aide des
opérateurs de comparaison : >, <, =, <> (différent de).
DO WHILE Condition
Bloc d'instructions
….
….
LOOP
Remarque :
● Condition est un booléen. Opération de comparaison.
● L'exécution continue tant que DO WHILE est vraie, sinon on sort de la boucle.
● EXIT DO provoquer la sortie de la boucle prématurément.
● Si la condition est fausse dès le départ on ne rentre pas dans la boucle DO WHILE.
Ecriture VBAEcriture Algorithmique
12-01 Programmation VBA : Structure Répéter … jusqu'à - (DO … LOOP WHILE)
Fonctionnement :
C'est une formulation assez intuitive : Cela représente l'exécution d'une suite d’instructions, au moins une fois et on la répète
tant qu’une condition soit remplie. Cela donne.
֎ On exécute le corps
֎ On évalue la condition à la fin du corps, puis
֎ Si la condition est vraie : on quitte le DO …. LOPP WHILE
֎ Si la condition est fausse on recommence
DO
Bloc d'instructions
….
….
LOOP WHILE Condition
La structure Répéter … jusqu'à se présente de la
manière suivante :
REPETER
Action 1
Action 2
Action n
JUSQU'A Condition (vraie)
Suite d’instructions
Remarque :
● Faire répéter l'exécution d'un bloc d'instruction.
● Le nombre d'itérations est contrôlé par la Condition
● Cette structure permet de rentrer au moins une fois dans la boucle.
Ecriture VBAEcriture Algorithmique
12-01 Programmation VBA : Structure Pour … jusqu'à - (FOR … TO … STEP)
Fonctionnement :
C'est une structure itérative. C'est une boucle pour compter ! Répéter une suite d’instructions un certain nombre de fois.
Lors de l'utilisation de l’instruction FOR … TO .. STEP il faut :
֎ Initialiser une variable de boucle (le compteur)
֎ Incrémenter cette variable à chaque pas
֎ Vérifier que cette variable ne dépasse pas la borne supérieure.
FOR Indice = Valeur.Départ TO Valeur.Fin STEP Pas
Bloc d'instructions
….
….
NEXT Indice
Ecriture VBA
Remarque :
● Valeur.Fin doit être supérieur à Valeur.Départ si on veut rentrer dans la boucle.
● Si Pas est négatif, alors Val.Fin doit être inférieur à Val.Départ.
● Si Pas est omis alors Pas = 1.
● L'instruction EXIT FOR provoquer la sortie de la boucle prématurément.
● Le traitement ne doit pas en aucun cas modifier la variable de boucle (Indice).
Ecriture Algorithmique
12-01 Programmation VBA : Fonctions et Procédures
● Une fonction personnalisée est une fonction VBA qui peut être appelée dans un classeur Excel.● La Fonction prend en entrée des informations en provenance des feuilles du classeur (principalement)● La Fonction renvoie une valeur insérée dans une cellule (le plus souvent également).● Exemple d'appel de Fonction : Carré (Nombre)
Les Fonctions :
֎ On appelle Fonction (Function) un programme qui exécute une suite d'instructions et qui renvoie une et une seule valeur.
Function NomFonction (Paramètres) as Type de Données
Doit être unique (Identifiant)
Respecte la syntaxe VBA
Représente les informations
que prend en entrée la Fonction.
Type de la valeur retournée
par la Fonction.
Formalisme
● Un Classeur EXCEL contenant du code VBA doit être impérativement enregistrée au format XLSM.
● Ce classeur prend en charge les Macros.
● Sinon on perd le code !
12-01 Programmation VBA : Les Boites de Dialogue
Les boîtes de dialogue (ce sont des fonctions) permettent d’interagir avec l’utilisateur. L'interface étant des boîtes de dialogue.
● MsgBox () Cette instruction permet d'afficher un message. Ce message apparait au moyen d'une boîte de dialogue.
● InputBox () Cette instruction permet de récupérer des informations saisies par l'utilisateur à travers une boîte de dialogue
Sub QuestionVitale ()
Dim retour As Long ' on crée une MsgBox "Oui - Non ":
Retour = MsgBox ("Êtes-vous vraiment un Zér0 ?", vbYesNo, "Questions") ' Si cliqué sur Oui, on souhaite la bienvenue
If Retour = 6 Then
MsgBox ("Bienvenue !")
Else ' Sinon, on affiche un message moins amical
MsgBox ("Ouste !")
End If
End Sub
Réponse = MsgBox ( "Message", Type, "Titre" )Formalisme
● Réponse : Variable de type entier qui reçoit la valeur du bouton.
● Message : Texte affiché comme message dans la boîte de dialogue.
● Type : Bouton VBA qui contrôle les boutons et les icônes à afficher.
● Titre : Texte qui s'affiche dans la barre de titre de la boîte de dialogue.
Exemple de code : Veuillez étudier ce code !
La Variable Réponse :
● Prend la valeur 6 si la réponse = OUI
● Prend la valeur 7 si la réponse = NON
Voir l'aide Excel pour les différentes
valeurs
RéponseRetour = InputBox ( "Message personnalisé")Formalisme
12-01 Programmation VBA : Les Boites de Dialogue
Rappel :
● InputBox () Cette instruction permet de récupérer des informations saisies par l'utilisateur à travers une boîte de dialogue
Sub DonnerTVA ()
Dim Reponse As Long
Reponse = InputBox ("Donner le Taux de TVA")
If Reponse > 20 Then
MsgBox ("Mauvaise TVA !")
Else
Range ("A2") = Reponse
End If
End SubClic sur le bouton !
Exécution de
la procédure !
12-01 Programmation VBA : instructions et opérateurs divers
Instruction Range :
● Range ("Référence cellule") Cette instruction permet de désigner une cellule ou une plage de cellules par le mot Range
● Pour faire référence à une cellule (B1) on notera Range ("B1").
● Pour faire référence à une plage de cellules (A1: E5) on notera Range ("A1:E5").
Dans un programme il est souvent nécessaire d'effectuer des calculs.
De ce fait, ces calculs ont souvent besoin de faire référence à des cellules d'une feuille par exemple.
La syntaxe mobilisée est la suivante : ValHT = Range("A1") * Range("B1") - A1=HT, B1=TauxTva A1 et B1 = cellules Excel
Par la suite et après réalisation des différents calculs, il est aussi nécessaire de renseigner la feuille Excel.
De ce fait, l'écriture des calculs précédents vont renseigner les cellules Excel.
La syntaxe mobilisée est la suivante : Range("C3") = ValHT La cellule C3 reçoit le calcul réalisé par une procédure.
Sub CalculTTC ()
Dim Reponse As Long
Dim TTC As Single
Reponse = MsgBox ("Voulez-vous calculer le TTC", vbYesNo, "Calcul TTC")
If Reponse = 6 Then
TTC = Range ("A2") + (Range ("A2") * Range ("B2") / 100)
Range ("C2") = TTC
Else
MsgBox ("Vous ne voulez rien !!")
End If
End SubClic sur le bouton !
Exécution de
la procédure !
12-01 Programmation VBA : instructions et opérateurs divers
Instruction Cells :
● Cells ("IndexLigne, IndexColonne") Cette instruction permet de désigner une cellule par le mot Cells.
● Pour faire référence à une cellule (C2) on notera Cells (2, 3).
Cette instruction est utile et pratique lorsque l'on veut "générer" des résultats sur des lignes ou/et colonnes dans une boucle..
La syntaxe mobilisée est la suivante : TotalHT = Cells(2,1) * Cells(NB+1 , 4) Voir exemple Excel ci après.
Public Sub CalculTTC2 ()
Dim HT, TTC, TVA As Single
Dim TOTALHT, TOTALTTC As Single
Dim NB As Integer
TOTALHT = 0
TOTALTTC = 0
For NB = 1 To 7 Step 1
Cells (NB + 1, 5) = Cells (2, 1) * Cells (NB + 1, 4)
TOTALHT = TOTALHT + Range ("D" & NB + 1)
TOTALTTC = TOTALTTC + Range ("E" & NB + 1)
Next
Range ("D10") = TOTALHT
Range ("E10") = TOTALTTC
End SubClic sur le bouton !
Exécution de
la procédure !
12-01 Programmation VBA : instructions et opérateurs divers
Opérateur & (esperluette) : Signe typographique représentant le mot "et" (&)
● Cet opérateur est utilisé pour forcer la concaténation de chaîne de deux expressions comme du texte, ou des valeurs.
● Esperluète (nom féminin), également appelée perluette, perluète ou " et commercial " qui désigne le logogramme &
Public Sub CalculTTC2()
…
…
…
Range("D10") = TOTALHT
Range("E10") = TOTALTTC
MsgBox ("Le montant TTC est de : " & TOTALTTC & " €")
End Sub
12-01 Programmation VBA : Exercices