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 :

Procédure et paramètres en sortie


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de magicbisous-nours
    Inscrit en
    Octobre 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 277
    Par défaut Procédure et paramètres en sortie
    Bonjour,
    Je suis en train de développer une macro qui rempli des tableaux de stats à partir de tableaux de données situés dans d'autre feuilles de calculs du même fichier.
    J'ai besoin de faire une procédure qui a plusieurs paramètres en sortie j'ai donc googlé un peu et j'ai trouvé le ByRef.... Sauf que mes variables, après avoir été passée en paramètre ByRef à ma procédure, est vide....

    Voici mon code :
    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
    Sub calcStats
     
    Dim nbFoyers
    Dim nbEnfants
     
    ' Nombre de foyers pour les Vacances Familiales pour la tranche < 401
    CompteNbFoyers 0, 400, "VF", nbFoyers, nbEnfants
    MsgBox nbFoyers, 64
    MsgBox nbEnfants, 64
    [...]
    End Sub
     
    Sub CompteNbFoyers(ByVal QFMin As Integer, ByVal QFMax As Integer, ByVal typeVac As String, ByRef nbFoyers As Integer, ByRef nbEnfants As Integer) As Integer 
    [...]
    	nbFoyers = 0
    	nbEnfants = 0
    [... super code qui marche bien (vérifié avec des MsgBox) ]
     
    End Sub
    Quelqu'un saurait comment je peux récupérer les valeurs de mes deux variables nbEnfants et nbFoyers dans ma procédure principale (calcStats) ?

    Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Par défaut
    Bonjour,

    Comme ceci, ça fonctionne.

    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
     
    Sub calcStats()
        Dim nbFoyers As Integer
        Dim nbEnfants As Integer
        CompteNbFoyers 0, 400, "VF", nbFoyers, nbEnfants
        MsgBox nbFoyers, 64
        MsgBox nbEnfants, 64
    End Sub
     
    Sub CompteNbFoyers(ByVal QFMin As Integer, ByVal QFMax As Integer, _
        ByVal typeVac As String, _
        ByRef nbFoyers As Integer, ByRef nbEnfants As Integer)
        nbFoyers = 10
        nbEnfants = 50
    End Sub
    ctac

  3. #3
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Le mieux serait peut etre d'utiliser la portée des variables plutôt que d'esayer de les passer en paramètres

    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
     
    Dim nbFoyers As Integer
    Dim nbEnfants As Integer
     
    Sub calcStats()
        CompteNbFoyers 0, 400, "VF"
        MsgBox nbFoyers, 64
        MsgBox nbEnfants, 64
    End Sub
     
    Sub CompteNbFoyers(ByVal QFMin As Integer, ByVal QFMax As Integer, _
        ByVal typeVac As String)
        nbFoyers = 10
        nbEnfants = 50
    End Sub
    A étudier aussi l'utilisation des fonctions à la place d'une procèdure (pour CompteNbFoyers)

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Ce que propose ctac est ce qu'il y a de plus simple mais il est aussi possible d'en faire une fonction tableau :
    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
     
    Sub calcStats()
     
        Dim T() As Long
     
        T = CompteNbFoyers(0, 400, "VF")
     
        MsgBox "Nombre de foyers : " & T(1) & vbCrLf & "Nombre d'enfants : " & T(2)
     
    End Sub
     
    Function CompteNbFoyers(ByVal QFMin As Integer, _
                            ByVal QFMax As Integer, _
                            ByVal typeVac As String) As Long()
     
        Dim T(1 To 2) As Long
     
        T(1) = 10
        T(2) = 50
     
        CompteNbFoyers = T
     
    End Function
    Hervé.

  5. #5
    Membre éclairé Avatar de magicbisous-nours
    Inscrit en
    Octobre 2005
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 277
    Par défaut
    Bonjour,
    tout d'abord merci à tous pour vos réponses...
    J'ai essayé ce que propose JFontaine et cela fonctionne...
    La fonction tableau ce qui me "repousse" un peu c'est que je vais avoir besoin de BEAUCOUP de données à passer (10 ou 15) et à récupérer en sortie... du coup je trouve qu'utiliser des variables globales est plus simple...

    Merci beaucoup

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

Discussions similaires

  1. [2014] Procédure stockée : Paramètre de sortie
    Par matthieu93410 dans le forum Développement
    Réponses: 2
    Dernier message: 20/02/2015, 14h21
  2. procédure avec paramètre de sortie
    Par Ashin dans le forum C
    Réponses: 11
    Dernier message: 18/03/2008, 17h20
  3. Réponses: 1
    Dernier message: 22/06/2006, 11h08
  4. [Débutant]Procédure avec paramètres entrée / sortie
    Par jeromejanson dans le forum Langage
    Réponses: 13
    Dernier message: 10/10/2005, 08h30
  5. Récupération des paramètres en sortie d'1 procédure stockée
    Par navis84 dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/12/2004, 11h40

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