Académique Documents
Professionnel Documents
Culture Documents
Présentation générale
Principaux éléments de
programmation
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
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
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
AA+ 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
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
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
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
08/10/2017 20
Programmation
Eléments de programmation
Instructions exécutables : entrée de données
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
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])
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
...
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
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
08/10/2017 37
Programmation
Eléments de programmation
Structures de contrôle : itération
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
08/10/2017 40
Programmation
Eléments de programmation
Structures de contrôle : itération
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
08/10/2017 48
16