Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/06/2011, 15h55   #1
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

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

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
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.
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 16h06   #2
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Bonjour sylv20 le newbie

Pour cela, utilise la notation typée
ex :

Code :
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
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
si tout est OK, n'oubliez pas de cliquer sur
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 18h59   #3
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
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 :
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 :
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.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h36.


 
 
 
 
Partenaires

Hébergement Web