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 :

retour de function vba


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Homme Profil pro
    ingénieur essais électronique
    Inscrit en
    Mai 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur essais électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 144
    Par défaut retour de function vba
    Bonjuor,

    Vous allez dire "OHHH le newbie!!!!" mais bon je me lance.

    Je ne sait pas créer une fonction qui renvoie deux variable string.

    Je sait que pour renvoyer une variable issue d'une fonction, on nomme la fonction avec le nom de variable de retour (en définissant son type).

    Meis je ne sait pas le faire lorsque l'on a une fonction qui renvoie deux varaiable de même type (string).

    Tout cela pour récupérer deux variables string avec la liste des valeur de chaques colonnes d'une zone de liste.

    ex :

    reference monte
    4306592F1 1
    3014221X1 3

    la premiere variable me renverra '4306592F1','3014221X1'
    la deuxième variable me renverra '1','3'

    voila vous savez tout.

  2. #2
    Membre émérite Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 599
    Par défaut
    Bonjour sylv20 le newbie

    Pour cela, utilise la notation typée
    ex :

    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
    Type mon_type
       Ma_Var1 as string
      ma_var2 as string
    end type
     
    dim ma_vartype as mon_type
     
    ...
     
    function ma_fonction (input1 as string, input2 as string) as mon_type
    dim ma_vartype as mon_type
    ...
    <instructions de la fonction>
    ex : ma_vartype.ma_Var1 = input1 + 1
    ma_vartype.ma_Var2 = input2 * 2
    ...
     
    ma_fonction = ma_vartype
    end function

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    La solution de sylv20 est celle que je préfère mais il en existe une autre que tu rencontreras sans doute un jour : utiliser les paramêtres de la procédure ou fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private sub TaProcedure(byRef pmOutChaine1 as string, byRef prmOutChaine2 as string)
      '
      ' ici le corps de ta procédure
      '
      prmOutChaine1=TaValeur1
      prmOutChaine2=TaValeur2
      '
    end sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private sub Test_TaProcedure()
       dim p1 as string
       dim p2 as string
     
       call TaProcedure(p1, p2)
     
       debug.print p1 'Ici apparaitra la valeur assigné à P1 dans TaProcdure
       debug.print p2 'Ici apparaitra la valeur assigné à P1 dans TaProcdure
     
    end sub
    Le mot important est ByRef qui veut dire que tu 'passes' la variable à la procédure/fonction et qu'elle peut en faire ce qu'elle veut. C'est aussi la fâçon par défaut de passer les paramêtres :-(.

    Si on met ByVal à la place, alors on passe une copie du contenu de la variable et la procédure/fonction ne peut pas changer ce contenu globalement. Elle peut l'altérer localement mais cela ne sort pas de la procédure appelée.

    Note qu'il est recommander de ne pas utiliser cela sauf si l'action sur les paramêtres est évident (ex une procedure qui s'appelerait AssignerValeurP1P2 indiquerai clairement qu'elle va changer les valeurs de P1 et P2) car elle a tendance à tromper l'esprit humain et peut conduire à des bugs asez vicieux.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. [XL-2003] Supprimer un retour chariot via VBA
    Par illight dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/05/2010, 11h23
  2. [A-03] Retour à ligne sur VBA
    Par Gabrieel dans le forum VBA Access
    Réponses: 7
    Dernier message: 05/11/2008, 18h51
  3. Function VBA recopiant un range à un autre endroit que la fonction
    Par oliv1105 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/07/2008, 14h15
  4. Pb Automatisation calcul "function" vba
    Par alexbabey dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/01/2008, 10h28
  5. une function avec un retour de function
    Par skillipo dans le forum VBA Access
    Réponses: 4
    Dernier message: 05/12/2007, 16h51

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