21
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

12A DCG - unité 08

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 12A DCG - unité 08

● 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

Page 2: 12A DCG - unité 08

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.

Page 3: 12A DCG - unité 08

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.

Page 4: 12A DCG - unité 08

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.

Page 5: 12A DCG - unité 08

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 !

Page 6: 12A DCG - unité 08

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.

Page 7: 12A DCG - unité 08

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

Page 8: 12A DCG - unité 08

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

Page 9: 12A DCG - unité 08

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

Page 10: 12A DCG - unité 08

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

Page 11: 12A DCG - unité 08

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

Page 12: 12A DCG - unité 08

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

Page 13: 12A DCG - unité 08

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

Page 14: 12A DCG - unité 08

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 !

Page 15: 12A DCG - unité 08

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

Page 16: 12A DCG - unité 08

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 !

Page 17: 12A DCG - unité 08

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 !

Page 18: 12A DCG - unité 08

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 !

Page 19: 12A DCG - unité 08

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

Page 20: 12A DCG - unité 08

12-01 Programmation VBA : Exercices

Page 21: 12A DCG - unité 08