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

VBA Access Discussion :

Passage de paramètre pour appel de procédure


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2010
    Messages : 42
    Points : 25
    Points
    25
    Par défaut Passage de paramètre pour appel de procédure
    bonjour,

    jusqu'à maintenant lorsque je procédais à un appel de procédure je passais les paramètre en même temps que l'appel de procédure
    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call TOTO (paramX,paramY,paramZ)
    et ensuite la sub était de genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public sub TOTO (paramX as integer,paramY as integer,paramZ as integer)
    dim x as integer
     
    x=paramX
     
    end sub
    maintenant j'aimerais faire un modul de déclaration uniquement des variables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public paramx as integer
    même chose pour paramY et paramZ

    et faire mon appel de prcédure ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    call TOTO
     
     
    public sub TOTO()
    dim h as integer
     
    h= paramx
     
    end sub
    etc...
    j'ai essayé cela marche, mais ....

    le feriez-vous ou bien cela peut me créer une incohérence de résultat, de par le fait d'avoir un variable disponible pour tout les modules, si je l'utilise autrement, par exemple pour un autre appel de procédure qui effectue autre chose?

    me conseillez vous de remettre ma variable public à zéro?

    merci pour vos impression

  2. #2
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    Bonjour,

    Tout dépend de ce que tu veux faire de tes variables paramX, paramY et paramZ.

    Pour la visibilité: Si elles doivent être "communes" à tous les modules il faut les déclarer en Public, si elles ne sont "communes" qu'au module en Private.
    Ensuite si la valeur de ces variables est censée être fixe tu ajoutes Const pour déclarer des constantes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const PARAMX as Integer = 0
    Pour la déclaration de ta fonction j'utiliserais les arguments optionnels
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Const PARAMX as Integer = 0
    Public Const PARAMY as Integer = 0
    Public Const PARAMZ as Integer = 0
     
    Public Sub TOTO(Optional ByVal pX as Integer = PARAMX ,(Optional ByVal pX as Integer = PARAMX,Optional ByVal pY as Integer = PARAMY, (Optional ByVal pZ as Integer = PARAMZ)
    Cela te permet les 2 types d'appel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TOTO  'ou Call TOTO
    TOTO(1,1,1)  'ou Call TOTO(1,1,1), etc.
    Mais avant tout, il faut vraiment que tu poses la question de ce que tu veux faire avec tes 3 variables avant d'opter pour une solution.

    Cordialement

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2010
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    merci pour ta réponse,

    en fait je voulais faire cela pour faire un module vba général de calcul

    et mon but était d'éviter d'écrire ce qu'il y entre ()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Sub TOTO(Optional ByVal pX as Integer = PARAMX ,(Optional ByVal pX as Integer = PARAMX,Optional ByVal pY as Integer = PARAMY, (Optional ByVal pZ as Integer = PARAMZ)
    car des fois je passe que quelque paramètre et si je les écrits dans la parenthèse je dois réecrire tout les paramètre de l'autre côté

    exemple:
    l'appel ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Heure2(Forms!FrmChauffeur!SfrmFiche![Date], Forms!FrmChauffeur!SfrmFiche![H_Depart], Forms!FrmChauffeur!SfrmFiche![H_Arrivee], Forms!FrmChauffeur!SfrmFiche![No_Chauffeur], Forms!FrmChauffeur!SfrmFiche![No_Tournee], Forms!FrmChauffeur!SfrmFiche![Lavage], [lavageT], [T], [TJ], [TN], [T10Suppl], [tdeparr])
    et de l'autre côté:

    la sub....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Sub Heure2(Date1 As Date, ByVal H_Depart As Date, ByVal H_Arrivee As Date, No_Chauffeur As Integer, No_Tournee As Integer, Lavage As Variant, lavageT As Double, T As Double, TJ As Double, TN As Double, T10Suppl As Double, tdeparr As Double)
    donc avec ce que je me demandais c'était pour simplifier l'écriture, car dans ma sub je ne vais pas utiliser forcément tout les variab le passée, alors lorsque je fais

    Call Heure2, cela m'éviterais de devoir tout retapper, si je ne les utilise pas

    en fait l'exemple que tu me donnes:

    je comprends bien que byval c'est uniquement pour passé la valeur dans la procédure sans que sa valeur de base soit modifiée de fait dans la mienne, j'ai une partie des paramètre qui servent à calculer et ensuite
    par exemple me sert pour ressoritr de cette sub avec une valeur calculée qui em sert à alimenter une table avec d'autre donnée qui ne sont pas calculé...

    merci encore pour tes réponses

Discussions similaires

  1. Passage de paramètre pour procédure stockée
    Par dumser1 dans le forum Oracle
    Réponses: 10
    Dernier message: 08/08/2007, 19h24
  2. Passage de paramètres pour Reporting services
    Par Jé@Zoom dans le forum ASP.NET
    Réponses: 6
    Dernier message: 27/04/2007, 16h58
  3. passage de paramètre pour actualiser
    Par sissi25 dans le forum ASP
    Réponses: 30
    Dernier message: 12/07/2006, 15h04
  4. pb de passage de paramètre pour ActiveX
    Par cedyouyou dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/12/2005, 14h30
  5. Réponses: 7
    Dernier message: 10/02/2005, 13h44

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