Appel de fonction stocké dans des modules [Résolu]

Signaler
Messages postés
161
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
11 février 2013
-
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
-
Bonjour,

Je suis en train de créer un programme assé long et qui fais appel plusieurs fois aux mêmes fonction, avec quelques variables qui diffèrent selon les actions que je leur demande .

J'ai donc choisis de programmer mes fonctions dans des modules afin de les appeler que l'osque j'en aurais besoin.

Le problème est que je n'arrive pas à les appeler de mon form pour les exécuter...

Connaissez vous la démarche à suivre? les codes à entrer pour choisir de mon Form d'exécuter ma fonction qui est programmé dans un de mes modules?

11 réponses

Messages postés
107
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
4 mai 2013

Bonjour,

Le message d'erreur doit dire "Argument not optional" pas optimal

Tout ça pour te faire comprendre que tu as défini une méthode chargement_csv qui prend 1 paramètre et donc que l'appel à cette méthode doit spécifié ce paramètre.

Maintenant dans le corps de ta fonction tu n'utilises pas ce paramètre, donc fait une fonction sans paramètre (ou utilise-le ^^):
'exemple sans paramètre
Public Function chargement_csv() As Boolean
'...


De plus ta fonction ne renvoie aucune valeur, donc soit tu renvoies une valeur (du type défini, ici Boolean) soit fait une Sub plutôt qu'une fonction, exemple:
'sans paramètre
Public Sub chargement_csv()
'...

'avec paramètre
Public Sub chargement-csv(ByVal parametre As String)
'...


Cordialement !
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
Bonjour,

Dans tes modules il faut déclarer tes foncions en Public.

Pour les appeler depuis n'importe quelle Form :
Call maFonction(paramètres à passer)

Cheyenne
Messages postés
161
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
11 février 2013

Ca ne fonctionne pas :s

Peu tu me donner le code de déclaration de la fonction pour ta méthode pour l'exemple d'une fonction qui n'a pas besoin de variable (pour faire simple) afin que je vois ci c'est à cause de ca...
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
Public Function maFonction()
   '   code
End Function



@Cheyenne
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
Re,

Rectification :

Public Function maFonction() As ...
' code
End Function

Les 3 points représentent la nature de ta fonction, String, Integer, Boolean, etc ...

Cheyenne
Messages postés
161
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
11 février 2013

En suivant tes conseils je me retrouve avec le message d'erreur quand je l'exécute : "Expected variable or procédure, not module"

Dans mon module :
Public Function chargement_csv(ByVal parametre As String) As Boolean
'affichage de la fenêtre de recherche du fichier de relevé
  CommonDialog1.CancelError = True
  CommonDialog1.InitDir = "C:"
  CommonDialog1.Flags = cdlOFNHideReadOnly
  CommonDialog1.Filter = "Fichiers csv " & _
  "(*.csv)|*.csv"
  CommonDialog1.ShowOpen
'stocker l'emplacement du fichier dans "fiche_name"
fich_name = CommonDialog1.FileName
End Function


Dans mon forme:
Private Sub cmd_charger_Click()

Call chargement_csv

End Sub
Messages postés
161
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
11 février 2013

Désolé j'avais mis le même nom pour mon module que ma fonction, une fois les nom changés, le message d'erreur devien :
"Argument not optimal"
Messages postés
161
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
11 février 2013

ok merci,
et si je comprend bien, parametre est une variable c'est bien ca? je peu donc programmer :
Public Sub chargement-csv(ByVal var_1 As String,ByVal var_2 as single)
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
Bonjour,

> Sehnsucht. Oui, tout à fait. A quoi bon créer une fonction si celle-ci ne renvoie pas de valeur.

> JSilvere. J'ai l'impression que tu confonds les routines avec les fonctions.

Une fonction sert par nature à retourner une valeur.

Par exemple, voici une fonction qui te retourne un nopmbre pseudo-aléatoire :
Private Function fnRND(vMIN As Integer, vMAX As Integer) As Integer
   fnRND = Int(Rnd * (vMAX - vMIN + 1)) + vMIN
End Function


Emploi : (entre autres)
a = fnRND(4,64)
ou
if fnRND(50,100) > 75 then ...

Cheyenne
Messages postés
161
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
11 février 2013

ok donc moi je n'ai besoin que de sub ;)
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
Si une des réponses précédentes te convient, penses à la valider. Merci.

Bonne soirée,

Cheyenne