Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Appel fonction

9 réponses
Avatar
Dr Jekyll
Bonjour.

Je fais un test pour appeler une fonction toute simple. msgbox("essai")
Sous vba je lance cette fonction par call la fonction. rien ne marche. Je
pense ne pas savoir utiliser le call d'une fonction publique.

Merci de votre aide

9 réponses

Avatar
3stone
Salut,

Dr Jekyll wrote:
Je fais un test pour appeler une fonction toute simple.
msgbox("essai") Sous vba je lance cette fonction par call la
fonction. rien ne marche. Je pense ne pas savoir utiliser le call
d'une fonction publique.



La simple MsgBox (message avec juste un bouton Ok) s'appelle par

MsgBox "Ceci est un message..."

Si tu souhaites ou attends une réaction de l'utilisateur, il faut
bien sûr qu'elle puisse être récupérée :

Dim iReponse As Integer
iReponse = MsgBox("Vous souhaitez imprimer ?",vbYesNo,"Impression")

Cela peut également prendre la forme plus courante :
if MsgBox("Vous souhaitez imprimer ?",vbYesNo,"Impression") = vbYes Then
' il a dit oui...
else
' il a dit non
end if

Pour la liste des arguments possibles, voir l'aide sur la fonction, mais dans
les deux cas, le call n'est pas utile.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Dr Jekyll
Merci de la réponse. Je me suis certainement mal exprimé.

Public Function Essai()
Dim reponse
reponse = MsgBox("voulez-vous imprimer", vbYesNo)
If (reponse = vbYes) Then
MsgBox "vous avez dit oui"
Else
MsgBox ("vous avez dit non")
End If

End Function

Maintenant, quand je veux lancer la fonction "essai" dans un évènement, je
n'y arrive pas. J'ai tout essayé en ne mettant "essai" ou call essai, rien

Je n'arrive pas à récupérer la fonction soit sur des boutons soit sur des
champs après update

Merci
"3stone" a écrit dans le message de
news:
Salut,

Dr Jekyll wrote:
Je fais un test pour appeler une fonction toute simple.
msgbox("essai") Sous vba je lance cette fonction par call la
fonction. rien ne marche. Je pense ne pas savoir utiliser le call
d'une fonction publique.



La simple MsgBox (message avec juste un bouton Ok) s'appelle par

MsgBox "Ceci est un message..."

Si tu souhaites ou attends une réaction de l'utilisateur, il faut
bien sûr qu'elle puisse être récupérée :

Dim iReponse As Integer
iReponse = MsgBox("Vous souhaitez imprimer ?",vbYesNo,"Impression")

Cela peut également prendre la forme plus courante :
if MsgBox("Vous souhaitez imprimer ?",vbYesNo,"Impression") = vbYes Then
' il a dit oui...
else
' il a dit non
end if

Pour la liste des arguments possibles, voir l'aide sur la fonction, mais
dans
les deux cas, le call n'est pas utile.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)



Avatar
Gilbert
Bonjour,

Ta fonction est-elle bien dans un module standard et pas dans un module de
formulaire?

--
Cordialement,

Gilbert


"Dr Jekyll" a écrit dans le message de
news:00d18eac$0$23826$
Merci de la réponse. Je me suis certainement mal exprimé.

Public Function Essai()
Dim reponse
reponse = MsgBox("voulez-vous imprimer", vbYesNo)
If (reponse = vbYes) Then
MsgBox "vous avez dit oui"
Else
MsgBox ("vous avez dit non")
End If

End Function

Maintenant, quand je veux lancer la fonction "essai" dans un évènement, je
n'y arrive pas. J'ai tout essayé en ne mettant "essai" ou call essai, rien

Je n'arrive pas à récupérer la fonction soit sur des boutons soit sur des
champs après update

Merci
"3stone" a écrit dans le message de
news:
> Salut,
>
> Dr Jekyll wrote:
>> Je fais un test pour appeler une fonction toute simple.
>> msgbox("essai") Sous vba je lance cette fonction par call la
>> fonction. rien ne marche. Je pense ne pas savoir utiliser le call
>> d'une fonction publique.
>
> La simple MsgBox (message avec juste un bouton Ok) s'appelle par
>
> MsgBox "Ceci est un message..."
>
> Si tu souhaites ou attends une réaction de l'utilisateur, il faut
> bien sûr qu'elle puisse être récupérée :
>
> Dim iReponse As Integer
> iReponse = MsgBox("Vous souhaitez imprimer ?",vbYesNo,"Impression")
>
> Cela peut également prendre la forme plus courante :
> if MsgBox("Vous souhaitez imprimer ?",vbYesNo,"Impression") = vbYes Then
> ' il a dit oui...
> else
> ' il a dit non
> end if
>
> Pour la liste des arguments possibles, voir l'aide sur la fonction, mais
> dans
> les deux cas, le call n'est pas utile.
>
> --
> A+
> Pierre (3stone) Access MVP
> Perso: http://www.3stone.be/
> MPFA: http://www.mpfa.info/ (infos générales)
>



Avatar
Dr Jekyll
Oui elle est b ien dans un module et est public
"Gilbert" a écrit dans le message de
news:
Bonjour,

Ta fonction est-elle bien dans un module standard et pas dans un module de
formulaire?

--
Cordialement,

Gilbert


"Dr Jekyll" a écrit dans le message de
news:00d18eac$0$23826$
Merci de la réponse. Je me suis certainement mal exprimé.

Public Function Essai()
Dim reponse
reponse = MsgBox("voulez-vous imprimer", vbYesNo)
If (reponse = vbYes) Then
MsgBox "vous avez dit oui"
Else
MsgBox ("vous avez dit non")
End If

End Function

Maintenant, quand je veux lancer la fonction "essai" dans un évènement,
je
n'y arrive pas. J'ai tout essayé en ne mettant "essai" ou call essai,
rien

Je n'arrive pas à récupérer la fonction soit sur des boutons soit sur des
champs après update

Merci
"3stone" a écrit dans le message de
news:
> Salut,
>
> Dr Jekyll wrote:
>> Je fais un test pour appeler une fonction toute simple.
>> msgbox("essai") Sous vba je lance cette fonction par call la
>> fonction. rien ne marche. Je pense ne pas savoir utiliser le call
>> d'une fonction publique.
>
> La simple MsgBox (message avec juste un bouton Ok) s'appelle par
>
> MsgBox "Ceci est un message..."
>
> Si tu souhaites ou attends une réaction de l'utilisateur, il faut
> bien sûr qu'elle puisse être récupérée :
>
> Dim iReponse As Integer
> iReponse = MsgBox("Vous souhaitez imprimer ?",vbYesNo,"Impression")
>
> Cela peut également prendre la forme plus courante :
> if MsgBox("Vous souhaitez imprimer ?",vbYesNo,"Impression") = vbYes
> Then
> ' il a dit oui...
> else
> ' il a dit non
> end if
>
> Pour la liste des arguments possibles, voir l'aide sur la fonction,
> mais
> dans
> les deux cas, le call n'est pas utile.
>
> --
> A+
> Pierre (3stone) Access MVP
> Perso: http://www.3stone.be/
> MPFA: http://www.mpfa.info/ (infos générales)
>







Avatar
Gilbert
As-tu un message d'erreur?

--
Cordialement,

Gilbert


"Dr Jekyll" a écrit dans le message de
news:0106f0ea$0$17158$
Oui elle est b ien dans un module et est public
"Gilbert" a écrit dans le message de
news:
> Bonjour,
>
> Ta fonction est-elle bien dans un module standard et pas dans un module


de
> formulaire?
>
> --
> Cordialement,
>
> Gilbert
>
>
> "Dr Jekyll" a écrit dans le message de
> news:00d18eac$0$23826$
>> Merci de la réponse. Je me suis certainement mal exprimé.
>>
>> Public Function Essai()
>> Dim reponse
>> reponse = MsgBox("voulez-vous imprimer", vbYesNo)
>> If (reponse = vbYes) Then
>> MsgBox "vous avez dit oui"
>> Else
>> MsgBox ("vous avez dit non")
>> End If
>>
>> End Function
>>
>> Maintenant, quand je veux lancer la fonction "essai" dans un évènement,
>> je
>> n'y arrive pas. J'ai tout essayé en ne mettant "essai" ou call essai,
>> rien
>>
>> Je n'arrive pas à récupérer la fonction soit sur des boutons soit sur


des
>> champs après update
>>
>> Merci
>> "3stone" a écrit dans le message de
>> news:
>> > Salut,
>> >
>> > Dr Jekyll wrote:
>> >> Je fais un test pour appeler une fonction toute simple.
>> >> msgbox("essai") Sous vba je lance cette fonction par call la
>> >> fonction. rien ne marche. Je pense ne pas savoir utiliser le call
>> >> d'une fonction publique.
>> >
>> > La simple MsgBox (message avec juste un bouton Ok) s'appelle par
>> >
>> > MsgBox "Ceci est un message..."
>> >
>> > Si tu souhaites ou attends une réaction de l'utilisateur, il faut
>> > bien sûr qu'elle puisse être récupérée :
>> >
>> > Dim iReponse As Integer
>> > iReponse = MsgBox("Vous souhaitez imprimer ?",vbYesNo,"Impression")
>> >
>> > Cela peut également prendre la forme plus courante :
>> > if MsgBox("Vous souhaitez imprimer ?",vbYesNo,"Impression") = vbYes
>> > Then
>> > ' il a dit oui...
>> > else
>> > ' il a dit non
>> > end if
>> >
>> > Pour la liste des arguments possibles, voir l'aide sur la fonction,
>> > mais
>> > dans
>> > les deux cas, le call n'est pas utile.
>> >
>> > --
>> > A+
>> > Pierre (3stone) Access MVP
>> > Perso: http://www.3stone.be/
>> > MPFA: http://www.mpfa.info/ (infos générales)
>> >
>>
>
>



Avatar
db
Dr Jekyll a écrit :
Merci de la réponse. Je me suis certainement mal exprimé.

Public Function Essai()
Dim reponse
reponse = MsgBox("voulez-vous imprimer", vbYesNo)
If (reponse = vbYes) Then
MsgBox "vous avez dit oui"
Else
MsgBox ("vous avez dit non")
End If

End Function




Bonjour,

Si c'est une fonction, elle renvoie une valeur donc elle doit s'écrire :

Public Function Essai() As String
Dim reponse As Byte
reponse = MsgBox("voulez-vous imprimer", vbYesNo)
If (reponse = vbYes) Then
Essai = "vous avez dit oui"
Else
Essai = "vous avez dit non"
End If
End Function

Et dans l'appel :

dim s as string
s=Essai
msgbox s

db
Avatar
3stone
Salut,

Dr Jekyll wrote:
Merci de la réponse. Je me suis certainement mal exprimé.

Public Function Essai()
Dim reponse
reponse = MsgBox("voulez-vous imprimer", vbYesNo)
If (reponse = vbYes) Then
MsgBox "vous avez dit oui"
Else
MsgBox ("vous avez dit non")
End If

End Function

Maintenant, quand je veux lancer la fonction "essai" dans un
évènement, je n'y arrive pas. J'ai tout essayé en ne mettant "essai"
ou call essai, rien

Je n'arrive pas à récupérer la fonction soit sur des boutons soit sur
des champs après update




Comme le dit Gilbert, elle ne peut pas se retrouver "sous" un formulaire,
sinon elle n'est disponible que dans _ce_ formulaire.

De plus, ta fonction écrite de cette façon ne permet pas de
tranmettre de paramètres, ni d'avoir un retour de valeur.

Si tu exécutes et utilises ce code uniquement à cet endroit, il vaut
mieux l'écrire directement dans la Sub de l'événement concerné.

Sinon, il faut adapter la fonction :

Public Function fnEssai(strMessage As String, iBouton) As Integer
fnEssai = MsgBox(strMessage, iBouton)
End Function

Cela te permet de "passer" le message à la fonction
et de récuper la valeur attribuée en retour.

if fnEssai("Voulez-vous imprimer",vbYesNo) Then
...
...


Bien sûr, l'exemple ici ne sert qu'à l'illustration ;-))

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Dr Jekyll
Merci à tous. Je pense que je vais vous laisser respirer un peu.....
Salut Pierre
"3stone" a écrit dans le message de
news:
Salut,

Dr Jekyll wrote:
Merci de la réponse. Je me suis certainement mal exprimé.

Public Function Essai()
Dim reponse
reponse = MsgBox("voulez-vous imprimer", vbYesNo)
If (reponse = vbYes) Then
MsgBox "vous avez dit oui"
Else
MsgBox ("vous avez dit non")
End If

End Function

Maintenant, quand je veux lancer la fonction "essai" dans un
évènement, je n'y arrive pas. J'ai tout essayé en ne mettant "essai"
ou call essai, rien

Je n'arrive pas à récupérer la fonction soit sur des boutons soit sur
des champs après update




Comme le dit Gilbert, elle ne peut pas se retrouver "sous" un formulaire,
sinon elle n'est disponible que dans _ce_ formulaire.

De plus, ta fonction écrite de cette façon ne permet pas de
tranmettre de paramètres, ni d'avoir un retour de valeur.

Si tu exécutes et utilises ce code uniquement à cet endroit, il vaut
mieux l'écrire directement dans la Sub de l'événement concerné.

Sinon, il faut adapter la fonction :

Public Function fnEssai(strMessage As String, iBouton) As Integer
fnEssai = MsgBox(strMessage, iBouton)
End Function

Cela te permet de "passer" le message à la fonction
et de récuper la valeur attribuée en retour.

if fnEssai("Voulez-vous imprimer",vbYesNo) Then
...
...


Bien sûr, l'exemple ici ne sert qu'à l'illustration ;-))

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)



Avatar
severye
Dr Jekyll a écrit le 14/10/2009 à 09h49 :
Bonjour.

Je fais un test pour appeler une fonction toute simple.
msgbox("essai")
Sous vba je lance cette fonction par call la fonction. rien ne marche. Je
pense ne pas savoir utiliser le call d'une fonction publique.

Merci de votre aide


Moi j'ai une autre petite question

j'ai une zone de liste à choix multiple, j'aimerai que lorsque je clique sur les différentes propositions, cela m'affiche sur une autre zone de liste les choix des propositions cliquez précédemment exemple:

Ma première zone de liste sont les secteur d'activité et ma seconde liste c'est le libellé naf, un secteur d'activité peut avoir plusieurs naf, don c ce que j'ai fait c'est d'abord d'écrire la fonction suivante sous formulaire et même en module libre, donc voici ma focniton :

Public Function affichage() As String



Dim db As Database
Dim rs As Recordset
Dim chaine As String
Dim varI As Variant
Dim monFiltre As String
Set db = CurrentDb
For Each varI In Forms!ajout_prospects_dans_campagne!secteur.ItemsSelected
monFiltre = monFiltre & Chr(34) & Forms!ajout_prospects_dans_campagne!.Column(0, varI) & Chr(34) & ","
Next varI
monFiltre = Left(monFiltre, Len(monFiltre) - 1)
chaine = "Select NAF from prospect where activité in (" & monFiltre & ");"
affichage = chaine

End Function


En claire elle etabli sous forme de chaine les différents secteurs d'activités choisis, ensuite dans ma seconde zone de liste j'ai mis en contenu:
SELECT NAF FROM prospect WHERE activité In (liste¯fichage());


mais une erreur s'affiche en me disant qu'il ne trouvait pas la fonction affichage
Avez vous une solution/proposition à mon problème?

Merci de votre aide

Séverine