Bonjour,

J'aimerais vous poser une question : Quel est l'intérêt de créer une fonction + une procédure alors que je peux le réaliser qu'avec une seule procédure ?
Je m'explique à l'aide de l'exemple suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Option Explicit
 
Dim MesBonbon As Long    ' Variable numérique qui contiendra le nombre de bonbons
Dim MesScoubidou As Long ' Variable numérique qui contiendra le nombre de scoubidous
 
Sub CompterLesac()
Dim Ligne As Long ' Variable numérique pour balayer les lignes de la feuille.
Dim Colonne As Long
 
Ligne = 1 ' Initialise Ligne à 1
Colonne = 3
MesBonbon = 0: MesScoubidou = 0 ' Variables mises à zéro par sécurité.
 
While Cells(Ligne, Colonne) <> ""  ' Tant Que cellule(y,x) n'est pas vide.
 
 
    If Cells(Ligne, Colonne) = "x" Then MesBonbon = MesBonbon + 1         ' Les bonbons.
    If Cells(Ligne, Colonne) = "s" Then MesScoubidou = MesScoubidou + 1   ' Les scoubidous.
    Ligne = Ligne + 1 ' Passe à la ligne suivante.
 
Wend
 
 
MsgBox "J'ai " & MesBonbon & " bonbons et " _
        & MesScoubidou & " scoubidous dans mon cartable."
 
End Sub
Ci-dessus un code n'utilisant qu'une procédure.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Option Explicit
 
Dim MesBonbon As Long    ' Variable numérique qui contiendra le nombre de bonbons
Dim MesScoubidou As Long ' Variable numérique qui contiendra le nombre de scoubidous
 
Sub CompterLeCartable()
 
Call CompterPoche(3)  ' Alimente MesBonbon et MesScoubidou
 
MsgBox "J'ai " & MesBonbon & " bonbons et " _
        & MesScoubidou & " scoubidous dans mon cartable."
 
End Sub
 
Function CompterPoche(MaColonne As Long) As Long
 
Dim Ligne As Long               ' Variable numérique pour balayer les lignes de la feuille.
Ligne = 1                       ' Initialise Ligne à 1
MesBonbon = 0: MesScoubidou = 0 ' Variables mises à zéro par sécurité.
 
While Cells(Ligne, MaColonne) <> ""  ' Tant Que cellule(y,x) n'est pas vide.
 
    CompterPoche = CompterPoche + 1 ' Incrémente le nombre d'éléments trouvés.
    If Cells(Ligne, MaColonne) = "x" Then MesBonbon = MesBonbon + 1         ' Les bonbons.
    If Cells(Ligne, MaColonne) = "s" Then MesScoubidou = MesScoubidou + 1   ' Les scoubidous.
    Ligne = Ligne + 1 ' Passe à la ligne suivante.
 
Wend
 
End Function
Ci-dessus le code répondant au même "besoin" mais faisant appel à une fonction + une procédure.

Pourriez-vous m'expliquer l'intérêt d'utiliser les fonctions ?

Je vous remercie,
Bien à vous,
Stéphane Drihem

PS: l'exemple pris correspond à l'apprentissage de Laurent Ott sur le lien suivant : http://laurent-ott.developpez.com/tu...ba-tome-1/#LIV