Vous êtes sur la page 1sur 16

Initiation à la programmation

Présentation générale
Principaux éléments de
programmation

08/10/2017 Ch. Sallaberry 1

Programmation
 Processusde
programmation

Programmation
Données

08/10/2017 2

Programmation

 Présentation générale
 La transcription d’un algorithme dans un langage
de programmation n’est pas toujours triviale, elle
nécessite parfois quelques adaptations

.  Exemple : (exemple cours suite.xls) .

Public Sub exemple2A()


Lire(A) Dim A As Integer
AA+1 A = Worksheets("Exemple2").Range("A1").Value
Ecrire (A) A=A+1
Worksheets("Exemple2").Range("B1").Value = A
. End Sub

08/10/2017 3

1
Programmation

 Présentation générale
 La transcription d’un algorithme dans un langage
de programmation n’est pas toujours triviale, elle
nécessite parfois quelques adaptations

.  Exemple : (exemple cours suite.xls) .

Public Sub exemple2B()


Lire(A) Dim A As Integer
AA+1 A = InputBox("Entrer une valeur :")
Ecrire (A) A=A+1
MsgBox ("Le résultat est :" & A)
. End Sub

08/10/2017 4

Programmation

 Présentation générale
 Principaux opérateurs :

Lire(A)
. A = InputBox("Entrer une valeur :")
A = Worksheets("Exemple2").Range("A1").Value

AA+ 1 A=A+1
Ecrire (A) MsgBox ("Le résultat est :" & A)
Worksheets("Exemple2").Range("B1").Value = A

+, -, =, <, … +, -, =, <, …

08/10/2017 5
.

Initiation à la programmation

Présentation générale
Principaux éléments de
programmation

08/10/2017 Ch. Sallaberry 6

2
Programmation

 Eléments de programmation
 Structure d’un programme VBA
Sub NomDuProgramme()
‘ Déclaration de données
Dim toto As Single
Déclaration
Dim titi As Integer
‘ Corps du programme
Range(« A2 »).Select
Instructions
End Sub

08/10/2017 7

Programmation

 Eléments de programmation
 Déclaration de données
Toutes les données : Entrées, Sorties,
Intermédiaires (pour les calculs), doivent être
déclarées dans la partie Déclaration

Ces données sont stockées en mémoire centrale


(vive, RAM)
1 Mo  1000 ko, 1ko  1000 octets, 1 octet  8 bits

08/10/2017 8

Programmation

 Eléments de programmation
 Déclaration de données
 Les constantes
Données dont la valeur est fixée pour toute la
durée du programme
Const NomDeLaConstante As <Type> = <Valeur>
Const pi as Single = 3.1418

pi = pi + 2

08/10/2017 9

3
Programmation

 Eléments de programmation
 Déclaration de données
 Les variables
Données dont on ne connaît pas la valeur à priori
et pouvant être modifiées pendant l’exécution du
programme
La valeur d’une variable peut-être modifiée tout au
long du programme

08/10/2017 10

Programmation

 Eléments de programmation
 Déclaration de données
 Les variables
Les variables doivent être déclarées et typées :
Dim NomDeLaVariable As <Type>
Dim Variable1 As Integer
Dim Variable2 As Double
Dim Variable3 As Date
Dim Variable4 As String
Dim Variable5 As Boolean
Autres type : Currency, Variant, Object, Date, Char, …

08/10/2017 11

Programmation

 Eléments de programmation
 Déclaration de données
 Types de données
Entiers : Byte (1 octet, [0, 255])
Integer (2 octets, [-32768, +32767])
Long (4 octets, [-2147493648, +2147483647])
Réels : Single (4 octets, [-3,402.1038, +3,402.1038])
Double (8 octets, [-1,797.10308, +1,797.10308])
Currency (8 octets, …)

08/10/2017 12

4
Programmation

 Eléments de programmation
 Déclaration de données
 Types de données
Chaîne : String (+sieurs milliers d’octets (caractères))
Booléen : Boolean (2 octets, True (>0) ou False (0))
Contrôle : Object (4 octets, adresse mémoire du contrôle)
Variable : Variant (16 octets, le type change selon le
contexte; à utiliser avec modération)

08/10/2017 13

Programmation

 Eléments de programmation
 Déclaration de données
 Test du type d’une variable
 IsNumeric(expression)
 IsArray(expression)
 IsDate(expression)
 IsObject(expression)
 IsEmpty(expression)
 IsNull(expression)
 Val(expression)

08/10/2017 14

Programmation

 Eléments de programmation
 Déclaration de données
 VBA est un langage « typé ». Le type définit
l’ensemble des valeurs que cette variable peut
prendre. Cela permet de mieux contrôler les
instructions :
DIM a AS Double
DIM b AS String
a = a * b  ERREUR !!!

08/10/2017 15

5
Programmation

 Eléments de programmation
 Déclaration de données
 Autre type de structure : les Tableaux
 Unidimensionnel, ou liste ou vecteur, dont les
éléments sont indexés par un entier naturel
Dim Mon_Tableau1(6) As char

mémoire L e c h a t
indice 0 1 2 3 4 5 6

08/10/2017 16

Programmation

 Eléments de programmation
 Déclaration de données
 Autre type de structure : les Tableaux
 Bidimensionnel, ou table ou matrice, dont les
éléments sont indexés par 2 entiers naturels
Dim Mon_Tableau2(3,3) As Integer

mémoire 1 0 2 4 0 Indice ligne


5 0 9 9 1
3 2 5 6 2
0 8 5 7 3
Indice colonne 0 1 2 3

08/10/2017 17

Programmation

 Eléments de programmation
 Déclaration de données
 Utilisation des tableaux
Sub Toto()
Dim monVecteur(9) As Integer
Dim maMatrice(9,9) As Integer
Dim res AS Integer
monVecteur(2) = 5
maMatrice(1,3) = 4
maMatrice(1,2) = monVecteur(2) * 5
res = monVecteur(2) * maMatrice(1,3)
End Sub

08/10/2017 18

6
Programmation

 Eléments de programmation
 Exemples de déclaration
Dim i As Integer
Dim ch1 As String
Dim etudiants(150) As String
Dim 1lettre As Char
Dim nombre-premier As Integer
Dim note info As Single
Dim if As Double

08/10/2017 19

Programmation

 Eléments de programmation
 Instructions exécutables : entrée de données
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
Renvoie une chaine de caractères
Public Sub testSaisie()
Dim rep As String
rep = InputBox("Quel est votre nom?", "Identification")
End Sub

(exemple cours suite.xls)

08/10/2017 20

Programmation

 Eléments de programmation
 Instructions exécutables : entrée de données

Public Sub testSaisie2()


Dim rep As String
‘ autre façon de récupérer des données
rep = Worksheets("Exemple2").Range("A15").Value
End Sub

08/10/2017 21

7
Programmation

 Eléments de programmation
 Instructions exécutables : affectation
NomDeLaVariable = nomDeConstante
nomDeVariable
expression

Ch1 = « coucou »
Etudiants(5) = « Dupont »
i = 17 * 2
Moyenne = somme / 4

08/10/2017 22

Programmation

 Eléments de programmation
 Instructions exécutables : affectation
Dim A As Char
Dim B As Integer
Dim C As Double C = 10
Dim D As Double D = 20
Dim E As Double
Echange du contenu
C=B+D de ces 2 variables ?
C=A+D

D=B+C
A=B+C

08/10/2017 23

Programmation

 Eléments de programmation
 Instructions exécutables : sortie de données
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
Renvoie un entier
Public Sub exemple2B()
Dim A As Integer
A = InputBox("Entrer une valeur :")
A=A+1 Traduire premiers algorithmes
(exosAES2pgm.xls)
MsgBox ("Le résultat est :" & A)
End Sub

(exemple cours suite.xls) Donner l’algorithme correspondant

08/10/2017 24

8
 Convertisseur  Convertisseur
Euros//Francs Degrés//Fahrenheit

08/10/2017 25

Programmation
 Eléments de programmation
 Instructions exécutables : sortie de données
MsgBox(prompt[, buttons] [, title] [, helpfile, context])

Public Sub testAffichage()


Dim rep As Integer
rep = MsgBox("Souhaitez-vous continuer?", vbYesNo, "Interface
utilisateur")
If rep = vbYes Then
MsgBox ("On continue")
Else
MsgBox ("Ok, on arrête")
End If
End Sub

(exemple cours suite.xls)

08/10/2017 26

Programmation

 Eléments de programmation
 Instructions exécutables : sortie de données
Public Sub testAffichage2()
Dim rep As String
Dim nbAnnees As Integer
Dim age As Integer
rep = InputBox("Quel est votre âge?", "Statistiques")
If rep = "" Or Not IsNumeric(rep) Then
MsgBox ("Réponse non valide!")
Else
age = CInt(rep)
nbAnnees = 60 - age
MsgBox ("Il vous reste : " & nbAnnees & " années de travail!")
End If
End Sub Traduire premiers algorithmes
(exemple cours suite.xls) (exosAES2pgm.xls)

08/10/2017 27

9
Programmation
 Eléments de programmation
 Instructions exécutables : opérateurs VBA et
priorité
 Arithmétiques - (unaire) > ^,() > *,/,\,Mod > +,-
→ 2^2 * (2+6) - 4*5 = 12
 Comparaisons : Ils renvoient une valeur de type Boolean.
=, Valeur1 = Valeur2, (égal à )
>=, Valeur1  Valeur2 (supérieur ou égal à)
<=, Valeur1  Valeur2 (inférieur ou égal à)
>, Valeur1 > Valeur2 (supérieur à)
<, Valeur1 < Valeur2 (inférieur à)
<>, Valeur1  Valeur2 (différent de)

08/10/2017 28

Programmation

 Eléments de programmation
 Instructions exécutables : opérateurs VBA et
priorité
 Concaténations : Pour concaténer n variables de
type String. Le résultat est de type String
 &, Adresse = ‘’avenue Foch’’ & ‘’64000’’ & ‘’Pau’’
 &, Adresse = Rue & CodePostal & Ville

08/10/2017 29

Programmation

 Eléments de programmation
 Instructions exécutables : opérateurs VBA et priorité
 Logiques : Ils renvoient un résultat de type Boolean
 And, Result = Expression1 AND Expression2
 Or, Result = Expression1 OR Expression2
 Not, Not Epression1
 Eqv, Result = Expression1 Eqv Expression2
 Xor, Result = Expression1 Xor Expression2

08/10/2017 30

10
Programmation

 Eléments de programmation
 Instructions exécutables : opérateurs VBA et priorité
 Composition des opérateurs logiques
Not (cond1 or cond2)  (not cond1) and (not cond2)
Not (cond1 and cond2)  (not cond1) or (not cond2)

 Exemple
Not (a = 1 or b > 10)
 (not (a = 1)) and (not (b > 10))
 (a <> 1) and (b <= 10)

08/10/2017 31

Programmation

 Eléments de programmation
 Instructions exécutables : fonctions
 Mathématiques
Valeur = Fonction(Param1;Param2)
 Abs(A) , valeur absolue

 Tan(A), Atn(A), tangente et arctangente

 Cos(A), Sin(A), cosinus et sinus

 Exp(A), Log(A), exponentielle et logarithme naturel

 Rnd(A), nombre aléatoire entier

 Sqr(A), racine carrée

 ...

08/10/2017 32

Programmation

 Eléments de programmation
 Instructions exécutables : fonctions
 Conversion de type : convertit une expression en
 var = Cbool(expression)  Boolean
 var = Cbyte(expression)  Byte
 var = Ccur(expression)  Currency
 var = Cdate(expression)  Date
 var = CDbl(expression)  Double
 var = CSng(expression)  Single
 var = CInt(expression)  Integer
 var = CLng(expression)  Long
 var = CStr(expression)  String

08/10/2017 33

11
Programmation

 Eléments de programmation
 Instructions exécutables : structures de contrôle
 Séquence
 Condition
 Itération

08/10/2017 34

Programmation

 Eléments de programmation
 Structures de contrôle : Condition

Public Sub exempleSI()


Lire(note)
Dim note As Integer
si (note>10) alors note = InputBox("Entrer la note : ")
« Admis » If (note>10) then
sinon MsgBox (" Admis ")
« Ajourné » Else
finSi MsgBox (" Ajourné ")
End If
. End Sub
(exemple cours suite.xls)

08/10/2017 35

Programmation

 Eléments de programmation
 Structures de contrôle : Condition
Public Sub exempleSIv2() Else
Dim note As Integer MsgBox (" Mention AB ")
note = InputBox("Entrer la note : ") End If
If (note>10) then End If
MsgBox (" Admis ") Else
If (note>=16) then MsgBox (" Ajourné ")
MsgBox (" Mention TB ") End If
Else End Sub
If (note>=14) then
MsgBox (" Mention B ")
(exemple cours suite.xls)

08/10/2017 36

12
Programmation

 Eléments de programmation
 Structures de contrôle : itération

somme, nb, note… Public Sub exempleTQ()


Dim somme As Double
Lire(note) Dim nb As Integer
TQ (note>=0) FAIRE Dim note As Single
nb  nb + 1 note = InputBox("Entrer la note : ")
somme  somme + note While (note >= 0)
nb = nb + 1 : somme = somme + note
Lire(note) note = InputBox("Entrer la note : ")
FTQ Wend
Ecrire (somme/nb) MsgBox (" Moyenne : " & somme / nb)
End Sub
(exemple cours suite.xls)

08/10/2017 37

Programmation

 Eléments de programmation
 Structures de contrôle : itération

Public Sub exempleRéPT()


somme, nb, note… Dim somme As Double
Dim nb As Integer
Répéter
Dim note As Single
Lire(note) Do
nb  nb + 1 note = InputBox("Entrer la note : ")
somme  somme + note nb = nb + 1 : somme = somme + note
Jusqu’à (note<0) Loop until (note < 0)
MsgBox (" Moyenne : " & somme / nb)
Ecrire (somme/nb) End Sub
(exemple cours suite.xls)

08/10/2017 38

Programmation

 Eléments de programmation
 Structures de contrôle : itération
Public Sub exempleRéPTv2()
somme, nb, note… Dim somme As Double
Répéter Dim nb As Integer
Lire(note) Dim note As Single
Si (note >= 0) Alors Do
note = InputBox("Entrer la note : ")
nb  nb + 1 If (note >= 0) Then
somme  somme + note nb = nb + 1 : somme = somme + note
Fsi End If
Jusqu’à (note<0) Loop until (note < 0)
MsgBox (" Moyenne : " & somme / nb)
Ecrire (somme/nb)
End Sub (exemple cours suite.xls)

08/10/2017 39

13
Programmation

 Eléments de programmation
 Structures de contrôle : itération

somme, nbNotes, note… Public Sub exemplePOUR()


Dim somme As Double
Lire(nbNotes) Dim nbNotes As Integer
POUR (i = 1 à nbNotes) FAIRE Dim note As Single
Lire(note) nbNotes = InputBox(" Combien de notes : ")
somme  somme + note For i=1 To nbNotes
note = InputBox("Entrer la note : ")
FPOUR somme = somme + note
Ecrire (somme/nbNotes) Next
MsgBox (" Moyenne : " & somme / nbNotes)
End Sub
(exemple cours suite.xls)

08/10/2017 40

Programmation

 Eléments de programmation
 Structures de contrôle : itération

somme, nbNotes, note… Public Sub exempleTQv2()


Dim somme As Double
Lire(nbNotes); i  1 Dim nbNotes As Integer
TQ (i <= nbNotes) FAIRE Dim note As Single: Dim i As Integer : i = 1
Lire(note) nbNotes = InputBox(" Combien de notes : ")
somme  somme + note While i <= nbNotes
note = InputBox("Entrer la note : ")
ii+1 somme = somme + note : i = i + 1
FTQ Wend
Ecrire (somme/nbNotes) MsgBox (" Moyenne : " & somme / nbNotes)
End Sub
(exemple cours suite.xls)

08/10/2017 41

Programmation

 Eléments de programmation
 Structures de contrôle : itération
Public Sub exemplePOURv2()
Dim somme As Double
somme, nbNotes, note… Dim nbNotes As Integer
POUR (cellules B2:B15) FAIRE Dim c As Object
Lire(cellule) For Each c In
Worksheets("Exemple2").Range("B2:B15").Cells
somme  somme + cellule
c.Select
nbNotes  nbNotes + 1 somme = somme + c.Value
FPOUR nbNotes = nbNotes + 1
Ecrire (somme/nbNotes) Next
MsgBox (" Moyenne : " & somme / nbNotes)
End Sub
(exemple cours suite.xls)

08/10/2017 42

14
Programmation

 La « bonne » boucle ?
Nombre Nombre
d’itérations d’itérations
connu inconnu
La boucle doit
être exécutée au POUR REPETER
moins une fois
La boucle peut
ne pas être TANT QUE
exécutée

08/10/2017 43

Programmation

 Structures de contrôle
 Exemple : calcul de ≠ moyennes
Données : …
Traitements : …
pour chaque cellule c de la feuille « AES2Info », dans la plage
(« d2:d175 ») faire :
si (valeur dans la cellule (c) = « cs ») alors
CalculMoyenneCS
sinon si (valeur dans la cellule (c) = « oa ») alors
CalculMoyenneOA

08/10/2017 44

Programmation
Public Sub moyProjParCorrecteur()
Dim c As Object
Dim cptCS …  Structures de contrôle
… Dim sommeLH As Double
cptCS = 0: cptOA = 0: cptLH = 0
sommeCS = 0: sommeOA = 0: sommeLH = 0  Calcul de ≠ moyennes
For Each c In Worksheets("AES 2 INFO").Range("D2:D154").Cells
c.Select
If c.Value = "cs" Then
cptCS = cptCS + 1
sommeCS = sommeCS + c.Offset(0, 1).Value
Else
If c.Value = "oa" Then
cptOA = cptOA + 1
sommeOA = sommeOA + c.Offset(0, 1).Value
Else
If c.Value = "lh" Then
cptLH = cptLH + 1
sommeLH = sommeLH + c.Offset(0, 1).Value
End If
End If
End If
Next
MsgBox ("CS : " & sommeCS / cptCS & " OA : " & sommeOA / cptOA & " LH : " & sommeLH / cptLH)

08/10/2017 45

15
Programmation
 Eléments de programmation
 Structures de contrôle : Itération
« Pour les éléments de début à fin par pas
de incrément »
FOR compteur = début TO fin STEP
incrément
Instructions
EXIT FOR
Instructions
NEXT
« Pour chaque élément de la collection »
FOR EACH élément IN group
Instructions
EXIT FOR
Instructions
NEXT

08/10/2017 46

Programmation
 Eléments de programmation
 Structures de contrôle : Itération
« (Tant que | jusqu’à ce que) la condition est vraie »
DO WHILE condition DO
Instructions Instructions
EXIT DO EXIT DO
Instructions Instructions
LOOP LOOP WHILE condition
DO UNTIL condition DO
Instructions Instructions
EXIT DO EXIT DO
Instructions Instructions
LOOP LOOP UNTIL condition

08/10/2017 47

Programmation

 Eléments de programmation
 Structures de contrôle : Itération

« Tant que la condition est vraie »


WHILE condition
Instructions
WEND

08/10/2017 48

16

Vous aimerez peut-être aussi