IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Function+ Sub Versus Sub


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2016
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Function+ Sub Versus Sub
    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

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    je peux mettre de l'eau dans un verre, mais tout le monde boit dans le même verre! je peux avoir un bouteille, dans ce cas je peux avoir plusieurs verres et le convives se servent à la bouteille!


    en d'autre termes, factoriser en plusieurs méthodes permet la ré-utilisabilité de ces méthodes dans d'autre méthodes voir d'autres programmes!

    de plus un programme spaghetti est totalement illisible!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub pricipale()
      Call jeFaisÇa1
      Call jeFaisPuisÇa2
      Call jeFaisPuisÇa3
      Call jeFaisPuisÇa3(Fonction1)
      Call jeFaisPuisÇa4
      Call jeReFaisPuisÇa1
      Call jeFaisPuisÇa5
      Call jeFaisPuisÇa6
      Call jeReFaisPuisÇa3
      Call jeFaisPuisÇa7
    End Sub

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour

    Je dirais personnellement qu'une telle question relève plus généralement de la conception (forum conception).
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2016
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Merci
    Merci pour la réponse qui éclaire ma lanterne.

    Stéphane

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passer un Sub à un Sub puis à un EventHandler
    Par Jayme65 dans le forum VB.NET
    Réponses: 6
    Dernier message: 11/05/2015, 19h51
  2. [XL-2010] Portée des variables: variables locales ou public; sub, private sub et Option Explicit
    Par RicardoBxl dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/02/2011, 20h34
  3. Sub appelle Sub recup valeur
    Par Hoareau dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/05/2007, 10h01
  4. [VB] Problème de function / sub (tableau comme paramètre)
    Par elhosni dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 10/05/2006, 20h34
  5. Réponses: 5
    Dernier message: 10/03/2006, 17h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo