Chapitre 1 : Langage VB
J. Introduction
Visual Basic (V13) est un langage de programmation développé par Microsoft, conçu pour être
facile à apprendre et à utiliser. li est particulièrement populaire pour le développement
d'applications Windows grâce à son interface graphique intuitive et sa syntaxe simple. Ce
chapitre introduit les bases du langage Visual Basic, en couvrant la structure d'un programme,
les types de données, les instructions de base, el l'interface de programmation.
NB : avant de commencer à coder dans le logiciel vba, il faut afficher la page du développeur.
Pour se faire il faut activer l' onglet DEVELOPPEUR:
Fichier> option> personnaliser le ruban> cocher Développeur dans les onglets
principaux
...
,,1, .......
-. ,..... ... _.--. .,
-,......,.. -
,., ;;"'-..,.
."""'
,...,........
rt=-~~
,1 ,, ._
1 ,t....
..... ,,ooc.. 1
'
1
·--
..,_..........
1 ......
· ·· ~
. """
1·: ,- :. .,u..:-
1~"" ...... ....
M•·~- ~• - -- :, , . c...i.- • r'u
r:: ~ ,...,.._...,... . t
1·"---"
.·"~
1
,.. c....... ......
! ut-- 11.._,. _.._ r
1•""'---
- ____ ,__ •-
1 .,,r-,...,.,.__,
•I n.-. .... - ........ 11s~.._.,...,
.......... -
.......... ..,._..,....
1,. ,., .... . ....
,l.:it....,_..
~
~ -•~ l
- -- ;.._
~~I
1
.,
Ci ~ ......
Il. A ,1uoi ressemble un code vba
Un code vba ressemble à une procédure qui a un nom
J. Syntaxe:
Sub mon_code()
// instructions
End sub
Scanné avec CamScanner
7
Ill. Déclaration des yariablcs en Visual Basic
En Visual Basic (VB), les \'ariablcs sont utilisées pour stocker des données temporaires
pendant l'exécution du programme. La déclaration des variables est une étape essentielle pour
définir leur type et leur portée.
l. Syntaxe de déclaration d'une variable
La déclaration d'une variable se fait à l'aide du mot-clé Dim (abréviation de "Dimension").
La syntaxe générale est la suivante :
Dim nomVariable As TypeDeDonnee
• nomVariable: Nom de la variable (doit respecter les règles de nommage).
• TypeDeDonncc : Type de données que la variable peut stocker (par
exemple, Jnteger, String, Double, etc.).
Exemples:
Dim age As lnteger
Dim nom As String
Dim solde As Double
IV. II. Règles de nommagc des variables
1. Caractères autorisés :
• Les noms de variables peuvent contenir des lettres, des chiffres et des
underscores LJ.
• Ils doivent commencer par une lettre.
2. Sensibilité à la casse :
• Visual Basic n'est pas sensible à la casse. Ainsi, nom et Nom sont considérés comme
identiques.
3. Mots réservés :
• Les noms de variables ne peuvent pas être des mots réservés du langage (par
exemple, Dim, As, Jnteger, etc.).
4. Longueur maximale :
• Les noms de variables peuvent contenir jusqu'à 255 caractères.
Exemples
Dim prenom As String
Dim note ) As Double
Dim _ total As Decimal
Scanné avec Cam Scanner
S. lnitinlisntion des ,•nrinblc!i
Une vurinblc peut être initioli ée (c'csl-ù-dire recevoir une valeur initiale) au moment de sa
déclaration ou plus tard dans Il! programme.
6. 1nith,lisation lors de la déclnrntion :
Dim age t\.s lntcgcr = 25
Dim nom As String = "Alice"
7. Initialisation ultérieure:
Dim solde As Double
Solde = 1000.50
V. Types de données et les opérations applicables en Visual Basic
En Visual Basic (VB), les types de données définissent le genre de valeurs qu'une variable
peut stocker, tandis que les opérations applicables déterminent les actions que vous pouvez
effectuer sur ces données.
a) Types de données en Visual Basic
Visual Basic prend en charge plusieurs types de données, classés en catégories principales :
a) Types numériques :
Integer: Entier signé sur 32 bits (de -2 147 483 648 à 2 147 483 647).
Dim age As Integer = 25
Long : Entier signé sur 64 bits (plus grande plage que Integer).
Dim population As Long = 7800000000
Single : Nombre à virgule flottante simple précision (32 bits).
Dim temperature As Single= 23.5
Double: Nombre à virgule flottante double précision (64 bits).
Dim pi As Double = 3.14159
Decimal : Nombre décimal sur 128 bits, idéal pour les calculs financiers précis.
Dim salaire As Decimal = 2500.75
j
Scanné avec CamScanner
Il , J . •• N', • ,,,, ,.
h) lyprs textuels :
String : Séquence de caractères (texte).
· = "Jean Dupon· l 11
Dim nom As Strmg
Char : Un seul caractère Unicode.
Dim initiale As Char= "J"
c) Types booléens :
Boolcan : Représente une valeur vraie (True) ou fausse (False).
bim estActif As Boolean =True
d) Types dates :
Date : Stocke une date et une heure.
Dim aujourdHui As Date= #12/31/2023 [Link]#
e) Types objets :
Object : Peut contenir n'importe quel type de données.
Dim valeur As Object = "Ceci est un objet"
f) Autres types :
Byte: Entier non signé sur 8 bits (de Oà 255).
Dim octet As Byte= 255
Short: Entier signé sur 16 bits (de -32 768 à 32 767).
J?im petitNombre As Short = 1000
II. Opérations applicables en Visual Basic
Les opérations applicables dépendent du type de données.
1. Opérations arithmétiques (pour les types numériques) :
• Addition(+): resultat = nombrel + nombre2
• Soustraction(-): resultat = nombrel - nombre2
• Multiplication(*): resultat = nombrel * nombre2
• Division(/): resultat = nombrel / nombre2
• Division entière(\): resultat = nombrel \ nombre2
• Modulo (Mod): reste= nombrel Mod nombre2
• Exponentiation("'): resultat = nombrel "'nombre2
Exemple:
Dim a As Integer = 10
Dim b As Integer = 3
Dim somme As Integer = a + b ' Résultat : 13
Scanné avec CamScanner
,J
pim reste A':> lntcgcr c a Mod b' Résultat : 1
2. Opérutions de comp:m1ison {pour tous les types) :
• Égalité(=): If a = b Thcn
• Inégalité(<>): If a <> b Thcn
,
I
• Supérieur à(>): If a > b Thcn
• lnféricurà(<):lfa < bThen
• Supérieur ou égal à(>=) : If a>= b Thcn
• Inférieur ou égal à(<=) : If a<= b Then
Exemple:
If age>= 18 Thcn
msgBox ("Majeur")
Else
msgBox ("Mineur")
End If
3. Opérations logiques (pour les types booléens) :
• ET logique (And) : If condition! And condition2 Tuen
• OU logique (Or) : If condition} Or condition2 Tuen
• NON logique (Not) : If Not condition Tuen
• OU exclusif (Xor) : If condition 1 Xor condition2 Tuen
Exemple:
Dim estEtudiant As Boolean = True
Dim estMajeur As Boolean =True
If estEtudiant And estMajeur Then
msgBox("Étudiant majeur")
End If
4. Opérations sur les chaînes de caractères (pour les types String) :
• Concaténation (& ou +) : nomComplet = prenom & " " & nom
• Longueur d'une chaîne : longueur= [Link]
• Extraction de sous-chaîne : sousChaine = [Link](0, 3)
• Recherche : position= [Link]üf("Dupont")
Scanné avec CamScanner
,..
L: arrp,- .
• n:-, = "'Je;::n"'
Dinl rrcnom As tn"''-
[)iJD nom A s [Link] = "'Dupo 1•
"· ' R' ~ : '"Je::n ~ ...
Dim nomCompl t As trin~ = pren rn & .. '" o: ruim
5. Opérations sur les dates (pour le type D:11"' :
• Ajout de jours : nouYelteD:11e = 11jou.rtlHui_i\ddD:1~ 10
• Comparaison de dates : If datel > date2 Th n
• Extraction de compos:ints : annee = aujourdHui.Y~
[Link]:
Dim aujourdHui As Date = [Link]
Dim dans J OJours As Date = [Link]( l 0)
msgBo · ("Dans 10 jours:" & danslOJours)
JII. Connrsion de types
VisuaJ Basic pennet de convertir un type de données en un autre à l'aide de fonctions de
conversion :
• Clntü : Com·ertit en lnteger.
• CDblO : Convertit en Double.
• CStrQ : Convertit en String.
• CBoolO : Convertit en Boolean.
• CDatc() : Convertit en Date.
Exemple:
Dim nombre As String = "123"
Dim valeur As lnteger = Clnt(nombre)' Conversion en lnteger
IV. Les commandes d'entrée et de sortie de données
En VBA (Visual Basic for Applications), les commandes d'entrée et de sortie de données
permettent d'interagir avec l'utilisateur via des boites de dialogue ou la console.
Scanné avec CamScanner
1. INPUTBOX
.' La fonction lnputllox est une boîte de dialogue gui pcnnet ù l'utilisateur de saisir des
données. Elle retourne la valeur saisie par l'utilisateur sous forme de chaîne de caractères
(String).
Syntaxe:
Dim nom As String
nom= lnputBox("Entrez votre nom :", "Saisie du nom")
• Le premier argument est le message affiché dans la boîte de dialogue.
• Le deuxième argument est Je titre de la boîte de dialogue.
• La valeur saisie par ]'utilisateur est stockée dans la variable nom.
Exemple
Sub DemanderNomO
Dim nom As String
nom= InputBox("Entrez votre nom :", "Saisie du nom")
MsgBox "Bonjour," & nom & "!"
End Sub
[Link]
La fonction MsgBox est utilisée pour afficher une boîte de dialogue avec un message à
l'utilisateur. Elle peut également inclure des boutons (comme "OK", "Oui/Non", "Annuler") et
des icônes (information, avertissement, erreur).
Syntaxe:
MsgBox "Opération terminée avec succès!", vblnfom1ation, "Information"
• Le premier argument est le message à afficher.
• Le deuxième argument (optionnel) spécifie les boutons et l'icône (par
exemple, vblnformation, vbExclamation, vb YesNo).
• Le troisième argument (optionnel) est le titre de la boîte de dialogue.
Exemples:
Boîte simple avec un bouton "OK" :
MsgBox "Bonjour, monde!"
Scanné avec Camscanner
Boîte avec des boutons "Oui/Non" :
Dim reponse As VbMsgBoxResult
reponse = MsgBox(''Voulez-vous continuer?", vb YesNo +vbQuestion, "Confinnation")
If reponse = vb Yes Then
MsgBox "Vous avez choisi Oui."
Else
MsgBox "Vous avez choisi Non."
End If
3. PRINT
En VBA, la commande PRINT est utilisée pour afficher des infonnations dans la fenêtre de
débogage (Immediate Window) ou sur une feuille Excel. Elle est souvent utilisée pour le
débogage ou l'affichage de résultats.
Syntaxe :
11
[Link] "Bonjour, & nom
Ce code affiche "Bonjour, " suivi de la valeur de la variable nom dans la fenêtre Immcdiate
Window (accessible via Ctrl + G dans l'éditeur VBA).
Scanné avec Cam Scanner
CHAPITRE 2 : LES STRU CTURES CONDITIONNELLES
lntrodnction
b 1VOJ\ (Vi suul IJnsic for Applications), les ~tructures co11ditio1111cll cs pcrrncllcnt de conlrblcr
le tlux <l'cxl'.cution du code en fonction de cc rtnincs conditions. Les principales structures
conditionnelles en VBJ\ sont :
1. 1f...Then ... Elsc
La strncturc lf.. .Then... Elsc est la plus couramment utilisée pour exécuter un bloc de code si
une condition est vraie cl éventuellement un autre bloc si lu condition est fau sse.
'
:a) Syntaxe de base :
If condition Then
' Code à exécuter si la condition est vraie
Else
' Code à exécuter si la condition est fausse
End If
b) Exemple:
Dim age As Integer
age= 20
If age >= 18 Tuen
MsgBox "Vous êtes majeur."
Else
MsgBox "Vous êtes mineur."
1
End If
[Link] avec Elself:
Vous pouvez ajouter plusieurs conditions avec Elself:
Syntaxe:
If conditionl Tuen
' Code si condition 1 est vraie
0
Elself condition2 Then
' Code si condition2 est vraie
'Else
' Code si aucune des conditions n'est vraie
Sca nné avec CamSca nn er
E11dlf
n) Exemple:
Dim score As Intcger
score = 85
1f score >= 90 Thcn
MsgBox "Excellent!"
Elsclf score >= 75 Then
MsgBox "Ilien!"
El self score >= 50 Then
MsgBox "Passable."
Else
MsgBox "Insuffisant."
End If
2. Select Case
La structure Select Case est utile lorsque vous avez plusieurs conditions à vérifier sur une
même variable ou expression. Elle est souvent plus lisible qu'une série de If... Elself.
a) Syntaxe:
Select Case expression
Case valeurl
' Code à exécuter si expression = valeur 1
Case valeur2
' Code à exécuter si expression = valeur2
Case Else
' Code à exécuter si aucune des valeurs ne correspond
End Select
b) Exemple:
Dun jour As String
jour= "Lundi"
Select Case jour
Case "Lundi"
MsgBox "C'est le début de la semaine."
10
Scanné avec Cam Scanner
Cn c "\h:n<lrcdi"
tvlsglJox "C'est bientôt le Wl:ck-cnd l"
Case Elsc
·MsglJox "C'est un autre jour de ln semaine."
End Select
3. llf (Fonction comlitionnelle)
La fonction IIf est une fonction conditionnelle qui pcm1ct d'évaluer une expression et de
retourner une valeur en fonction du résultat de l'évaluation.
a) Syntaxe:
resultat = IIf(condition, valeur_si_vrai, valeur_si_faux)
b) Exemple:
Dim age As Integer
age= 20
Dim statut As String
statut= IIf(age >= 18, "Majeur", "Mineur")
MsgBox statut
4. Choix entre If...Then ... Else et Select Case
• Utilisez lf...Then... Else lorsque vous avez des conditions complexes ou lorsque vous
devez évaluer plusieurs expressions différentes.
• Utilisez Select Case lorsque vous avez une seule expression à évaluer et que vous avez
plusieurs valeurs possibles à vérifier.
5. Nested If (If imbriqués)
Vous pouvez imbriquer des structures If pour gérer des conditions plus complexes.
Dim x As Integer
Dim y As lnteger
x= 10
y=20
lfx> 5 Then
Ify > 15 Then
MsgBox "x est supérieur à 5 et y est supérieur à 15"
Else
MsgBox "x est supérieur à 5 mais y est inférieur ou égal à 15"
11
Scanné avec CamScanner
\
\
End If
Else
MsgBox "x est inférieur ou égal à 5"
End If
Conclusion
Les structures conditionnelles en VBA sont essentielles pour créer des programmes
dynamiques qui réagissent différemment en fonction des données ou des entrées utilisateur.
Le choix entre If...Then ...Else et Select Case dépend de la complexité des conditions et de la
lisibilité du code.
12
Sca nné avec Ca m Sca nner
CHAPITRE 3 : LES STRUCTURES REPETITIVES
Introduction
En VBA (Visual Basic for Applications), les structures répétitives (ou boucles) pcnncllcnt
, d'exécuter un bloc de code plusieurs fois, en fonction d'une condition ou d'un nombre
d'itérations spécifié. Les principales structures répétitives en VBA sont :
1. Boucle For... Next
La boucle For... Next est utilisée pour répéter un bloc de code un nombre spécifié de fois. Elle
est souvent utilisée lorsque le nombre d'itérations est connu à l'avance.
a) Syntaxe:
For i = début To fin (Step pas]
' Code à répéter
Next i
• i: Variable qui sert d'indice pour la boucle.
• début : Valeur initiale du compteur.
• fin: Valeur finale de l'indice(compteur).
• pas (optionnel) : Incrément ou décrément du compteur (par défaut, Step 1).
b) Exemple :
For i = 1 To 5
MsgBox "Itération numéro " & i
Next i
2. Boucle For Each ...Next
La boucle For Each ...Next est utilisée pour parcourir tous les éléments d'une collection
(comme une plage de cellules, un tableau, etc.).
a) Syntaxe:
For Each élément In collection
' Code à répéter pour chaque élément
Next élément
b) Exemple avec une plage de cellules:
Dim cellule As Range
For Each cellule In Range("Al :Al 0")
If [Link]> 50 Then
[Link] = RGB(255, 0, 0) 'Colorer la cellule en rouge
13
Scanné avec CamScanner
End If
Ncst cclluk
3. Boudl' Do Whill' ... Loop
Ln boucle Oo Whilc ... Loop répctc un bloc de code tnnl qu'une condition est vraie. La
condition est v~riliéc nvunl chaque itérntion.
n) Synt11xe :
Do White condition
'Code à répéter
Loop
b) Exl'mple:
Dim compteur As lnlcger
compteur = 1
Do White compteur <= 5
MsgBox "Itération numéro" & compteur
compteur = compteur + compteur
Loop
4. Boucle Do Until ... Loop
La boucle Do Until...Loop répète un bloc de code jusqu'à ce qu'une condition devienne vraie.
La condition est vérifiée avant chaque itération.
a) Syntaxe:
Do Until condition
' Code à répéter
Loop
b) Exemple:
Dim compteur As Integer
compteur= I
Do Until compteur> 5
MsgBox "Itération numéro " & compteur
compteur = compteur + 1
Loop
14
Scanné avec Ca mScanner
S. Boucle Do ... Loop Whilc
La boucle Do ...Loop While répète un bloc de code tant qu'une condilion [Link] vrnic, mois Jo
condition est vérifiée nprès chaque itération. Ccln garantit que le hloc de code est exécuté ou
moins une fois.
a) Syntaxe:
Do
'Code à répéter
Loop White condition
b) Exemple:
Dim compteur As Integer
compteur == l
Do
MsgBox "Itération numéro " & compteur
compteur== compteur + l
Loop While compteur <== 5
6. Boucle Do ... Loop Until
La boucle Do... Loop Until répète un bloc de code jusqu'à ce qu'une condition devienne vraie,
mais )a condition est vérifiée après chaque itération. Cela garantit que le bloc de code est
exécuté au moins une fois.
a) Syntaxe:
Do
' Code à répéter
Loop Until condition
b) Exemple:
Dim i As Integer
i =1
Do
MsgBox "Itération numéro " & i
i =i +1
Loop Until i > 5
15
Scanné avec CamScanner
F
7. Sorlir d'une boucle :l\'cc Exil For ou Exit l>o
\
Vous pouvc1. quiller une boucle prématurément en ulili anl Exil For (pour le boucles For) \
ou Exil Do (pour les boucles Do),
n) Exemple 11\'cc Exit For:
Fori = 1 To 10
If i = 5 ·n1en
Exil For
End If
MsgBox "Itération numéro " & i
Ncxt i
b) Exemple avec Exit Do:
Dim i As lnteger
i=1
Do While i <= 10
If i = 5 Tuen
Exit Do
End If
MsgBox "Itération numéro " & i
i =i + 1
Loop
8. Boucles imbriquées
Vous pouvez imbriquer des boucles pour gérer des structures plus complexes.
a) Exemple:
For i = 1 To 3
For j = 1 To 2
MsgBox "i =" & i & ",j =" &j
Nextj
Next i
16
Scanné avec CamScanner
0 oc\usion
. c tures répétitives en VBA sont essentielles pour automatiser
e~ 'stru · d es ta~ches
. .répétitives et
ll3J1Jpuler des collections de données. Le choix de la boucle dépend de la situation :
• Utilisez For.... Next lorsque le nombre d'itérations est connu .
• Utilisez For Each ... Next pour parcourir des collections .
• Utilisez Do While ... Loop ou Do Until...Loop lorsque la condition de répétition est
dynamique.
17
Scanné avec CamScanner
CI-IAPITRE 4 : LES TABLEAUX
Introduction
En VB/\ (VisuaJ Basic for Applications). les tnbleaux (ou nrruys) ont des structun:s de
données qui pennettent de stocker plusieurs voleurs du m~mc type dons une seule variable.
Les tableaux sont très utiles pour manipuler des ensembles de données de manière efficace.
Il existe deux types de tableau : Tableau à une dimension (vecteur) et Tableau
multidimensionnel
1. Déclaration d'un tableau à une dimension (nctcur)
Un tableau peut être déclaré en spécifiant son nom. son type et sa taille.
a) Syntaxe de base :
Dim nom_du_tableau(taille) As Type
• nom_du_tableau: Nom de la variable tableau.
• taille : Nombre d'éléments dans le tableau (l'indice commence à Opar défaut).
• Type : Type de données des éléments du tableau (par exemple, lnteger, String, Double,
etc.).
Exemple:
Dim nombres(5) As lnteger' Un tableau de 6 éléments (indices 0 à 5)
2. Accéder aux éléments d'un tableau
Les éléments d'un tableau sont accessibles via leur indice. Les indices commencent à 0 par
défaut.
a) Exemple:
Dim nombrcs(5) As lntegcr
nombres(0) = 10
nombres(I) = 20
nombres{2) = 30
MsgBox nombres( 1) 'Affiche 20
3. Tableaux multidimensionnels
Les tableaux peuvent avoir plusieurs dimensions (par exemple, une matrice).
a) Syntaxe:
Dim nom_du_tableau(ligne, colonne) As Type
b) Exemple:
18
Scanné avec Cam Scanner
f)im matrice(2, 3) As lnteger' Un tableau 3x4 (3 lignes, 4 colonnes)
rnatrice(0, 0) = l
/
. matrice(0, l) = 2
matrice( l, 0) = 3
matrice(l, l) = 4
MsgBox matrice( l , 0) ' Affiche 3
4. Tableaux dynamiques
Les tableaux dynamiques pennellent de définir la taille du tableau au moment de l'exécution.
a) Syntaxe:
Dim nom_du_tableauO As Type
ReDim nom du tableau(taille)
• ReDim : Redéfinit la taille du tableau.
• Prescn•c : Pennet de conserver les données existantes lors du redimensionnement.
b) Exemple:
Dim nombresO As lnteger
ReDim nombres(5) 'Tableau de 6 éléments
nombres(O) = 10
nombres( 1) = 20
ReDim Preserve nombres(JO)' Redimensionne le tableau tout en conservant les valeurs
existantes
5. Fonctions utiles pour les tableaux
a. UBound
Retourne l'indice maximal d'un tableau.
Exemple:
Dim nombres(S) As Integer
MsgBox UBound(nombres) 'Affiche 5
b. LBound
Retourne l'indice minimal d'un tableau (généralement 0).
Exemple:
Dim nombres(5) As Integer
19
Scanné avec CamScanner
t-.1 gBox [Link](no111lm· ) 'Affiche O
c. Arn,y
Permet de cr~er cl d'inilioliscr un tnhleou en une cule ligne.
Exemple:
Dim jours A1-o Variant
jours = Array("Lundi", "Mor<li", "Mercredi", "Jeudi". "Vendredi")
MsgUox jours(2) 'Amehe "Mercredi"
6. Parcourir un tableau
Vous pouvez utiliser une boucle For...Ncxt ou For Each ... Next pour parcourir un tableau.
Exemple ~n·ee For... Ncxt :
Dim nombrcs(S) As Integer
Dim i As lnteger
For i =LI3ound(nombrcs) To UBound(nombres)
nombres(i) = i • 10
MsgBox nombrcs(i)
Next i
Exemple a,•ee For Eaeh ... Next :
Dim nombres(S) As Integer
Dim valeur As Variant
nombres(O) = 10
nombres(})= 20
nombres(2) = 30
For Each valeur In nombres
MsgBox valeur
Next valeur
7. Tableaux et plages Exeel
Les tableaux sont souvent utilisés pour manipuler des données provenant de plages Excel.
Exemple : Lire une plage dans un tableau
20
Scanné avec CamScanner
n iin donnecs As Variant
·d )tUlees = Rangc("A 1:C3").Valuc' Stocke les valeurs de la plage A 1:C3 dans un tableau
lsgBox donnees(2, 3) 'Atliche la valeur de la cellule C3
Exemple : Écrire un tableau dans une plage
Dim donnees(2, 2) As Variant
donnees(0, 0) == "A"
donnces(0, 1) = "B"
donnees(l , 0) = "C"
donnees( 1, 1) == "D"
Range("A 1:B2").Value == donnees' Écrit le tableau dans la plage Al :B2
8. Tableaux de collections
Vous pouvez également utiliser des collections pour stocker des ensembles de données
dynamiques.
Exemple:
Dim coll As New Collection
[Link] "Lundi"
[Link] "Mardi"
[Link] "Mercredi"
MsgBox coll(2) 'Affiche "Mardi"
Conclusion
Les tableaux en VBA sont des outils puissants pour manipuler des ensembles de données. Ils
peuvent être statiques ou dynamiques, à une ou plusieurs dimensions. Les tableaux sont
souvent utilisés en conjonction avec des boucles pour traiter des données de manière efficace,
notamment dans des applications Excel.
21
Scanné a vec Cam Scanner
CHAPITRE 5: LES FONCTIONS ET LES PROCEDURES
lntrocJurtion
En VDA (Visual Dasic for Application ), les fonction , et les procédures sonl des bloc de
code n:utilisahlcs qui penncttcnt d'organiser et de modulariser votre programme. Elle onl
c entidlcs pour éviter la répétition de code cl faciliter la maintenance.
1. Procédures (Sub)
Une procédure est un bloc de code qui exécute une tâche spécifique. Elle ne renvoie pas de
valeur.
a) Syntaxe:
Sub NornDeLaProcedurc([paramètres])
' Code à exécuter
End Sub
• NomDcLaProccdure: Nom de la procédure.
• paramètres (optionnels): Variables passées à la procédure pour qu'elle les utilise.
b) Exemple:
Sub AfficherMessage()
MsgBox "Bonjour, ceci est une procédure!"
End Sub
[Link] d'une procédure :
AfficherMessage 'Affiche "Bonjour, ceci est une procédure!"
Exemple avec paramètres :
Sub AfficherNom(nom As String)
MsgBox "Bonjour, " & nom & 11 !11
End Sub
[Link] avec paramètres :
AfficherNom "Alice" 'Affiche "Bonjour, Alice!"
2. Fonctions (Function)
Une fonction est similaire à une procédure, mais elle renvoie une valeur.
a) Syntaxe:
Function NomDeLaFonction([paramètres]) As Type
' Code à exécuter
22
Scanné avec CamScanner
- -romD Lalonction =valeur-retour
.
[Link] f [Link]
• NomDeLaFonction : Nom de la fonction.
• paramètres (optionnels): Variables passées à la fonction.
• Type : Type de données de la valeur retournée (par exemple, Integer. String, Double,
etc.).
• yalcur_rctour: Valeur que la fonction renvoie.
b) Exemple:
function Addition(a As Integer, b As lnteger) As Integer
Addition = a + b
End Function
[Link] d'une fonction:
Dirn resultat As lnteger
Nsultat = Addition(S, 3) 'resultat = 8
MsgBox rcsultat
3. Différences entre Sub et Fonction
Caractéristique Sub Function
Retourne une valeur Non Oui
Utilisation Pour exécuter une tâche Pour calculer et retourner une valeur
Exemple Sub AfficherMessageQ Fonction Addition(a, b)
4. Paramètres optionnels
Vous pouvez définir des paramètres optionnels dans une procédure ou une fonction. Ces
paramètres ont une valeur par défaut si aucune valeur n'est fournie.
a) Syntaxe:
Sub NomDelaProcedure(paraml As Type, Optional param2 As Type= valeur_par_defaut)
b) Exemple:
[Link](nom As String, Optional age As Integer = 18)
!':1sgBox "Nom:" & nom & ",Âge:" & age
23
Scann é avec CamScanner
Fnd Suh
c) Appel:
AOichcrlnfo "Alice"' Affiche "Nom : Alice, Âge : 18"
Allichcrlnfu "Bob". 25 'Aniche "Nom : llob, Âge : 25"
5. Pnssagc tic p:munèlrcs par référence (ByRcl) cl 1111r , 1 alcur (UyVal)
• ByRcf (par défaut) : Les modifications apportées au paramètre dans la procédure ou la
fonction alîcctcnt la variable d'origine.
• llyVnl : Une copie de la variable est passée, les modifications n'afTectcnt pas la
variable d'origine.
Exemple :
Sub ModifierValcur(ByRcf x As lntegcr)
X= X + 10
End Sub
Sub ExempleByRcfQ
Dim a As lntcger
a=5
ModificrValeur a
MsgBox a ' Affiche 15
End Sub
Sub ModifierValeur(ByVal x As Integer)
X= X+ 10
End Sub
Sub ExempleByVal()
Dim a As Integer
a=5
ModifierValeur a
MsgBox a 'Affiche 5 (la valeur originale n'est pas modifiée)
End Sub
24
Scanné avec CamScanner
onctions récursins
i: f, n lion récursive e tune fonction qui s'appelle cllc-rnémc.
em p \e : Calcul de la factorielle
ction Factorielle(n As lnteger) As lntegcr
lf n < = 1 l11en
Factorielle= 1
Else
Factorielle= n * Factoriclle(n - 1)
Endlf
End function
a) Appel de fonction récursive:
:MsgBox Factorielle(5) 'Affiche 120 (5! = 5 * 4 * 3 * 2 * 1)
7. Portée des procédures et fonctions
• Public : Accessible depuis tous les modules du projet.
• Priva te : Accessible uniquement dans le module où elle est définie.
Exemple:
Public Sub ProcedurePublique()
[Link] "Ceci est une procédure publique."
EndSub
Private Sub ProcedurePriveeQ
MsgBox "Ceci est une procédure privée."
End Sub
8. Utilisation dans Exccl
Les fonctions définies en VBA peuvent être utilisées directement dans les formules Excel.
Exemple:
Function TIC(ht As Double, tva As Double) As Double
TTC = ht * (1+ tva)
End Function
25
Scanné avec CamScanner
.....
Utilisation dans Exccl:
=TTC(l DO; 0.2) 'Retourne 120 si TVA = 20%
Conclusion
• Les procédures (Sub) sont utilisées pour exécuter des tâches sans retourner de valeur.
• Les fonctions (Function) sont utilisées pour retourner une valeur après un calcul ou
une opération.
• Les paramètres peuvent être passés par référence (ByRef) ou par valeur (ByVal).
• Les fonctions et procédures peuvent être publiques ou privées pour contrôler leur
portée.
• Les fonctions VBA peuvent être utilisées directement dans les formules Excel.
26
Scanné avec Cam Scanner