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 :

Créer une fonction VBA, erreur de syntaxe [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Créer une fonction VBA, erreur de syntaxe
    Bonjour,

    J'ai un soucis l'appel à une fonction VBA que je viens de créer.
    Voici ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Function decouper_parametre(chaineAdecouper As String,
        autreChaine As String) As Variant
     -MON CODE -
    End Function
    J'appelle ma fonction de cette manière decouper_parametre("pierre;richard",";") en passant les 2 chaines de caratères que je veux mais ça ne fonctionne pas il me dit que j'ai une erreur de syntaxe. Manifestement, je ne sais pas passer plusieurs paramètres à une fonction. Un petit coup de main svp ?

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Salut,

    En fait c'est les conventions VBA qui sont (très) perturbantes lorsqu'on à quelques notions de programmations dans d'autres langage courant. (C++, Java ...)

    Sous VBA, les appels de fonctions peuvent se faire sans mettre de parenthèses entre la fonction et les arguments.
    Cette possibilité devient obligation lorsqu'il y a plus d'un argument.
    Donc decouper_parametre("pierre;richard",";") doit s'écrire decouper_parametre "pierre;richard" , ";".
    Si toutefois tu es trop perturbé par le fait de ne pas pouvoir mettre de parenthèses, tu peux faire précéder l'appel de fonction par le mot clé Call.
    ex : Call decouper_parametre("pierre;richard",";")

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Ah ok merci de l'info. Mais j'ai un autre problème maitenant que j'arrive à envoyer mes paramètres à ma fonction je n'arrive pas à retourner le résultat de ma fonction (encore erreur de syntaxe de ma part) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Function decouper_parametre(chaineAdecouper As Variant, separateur As String) As Variant
           Dim resulat as Variant
    'le reste de mon code... et 
            decouper_parametre = resultat
    End Function
    Dans ma procédure principal j'ai ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim listeParam as Variant
    listeParam= decouper_parametre Me.OpenArgs, ";"
    C'est la récupération dans la variable listeParam qui pose problème, VBA me dit : "Attendu : fin d'instruction"

    Merci d'avance de ton aide.

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Re.

    Ahh ... un cas que j'avais oublié.
    Dans le cas où tu affecte le résultat d'une fonction à une variable, il faut mettre les parenthèses entre le nom de fonction, et les paramètres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim listeParam as Variant
    listeParam= decouper_parametre(Me.OpenArgs, ";")

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Que de mélanges dans les termes, il ne faut confondre une fonction et une routine.

    Une fonction est faite pour retourner une valeur que l'on attribue en général à une variable.
    Donc on n'appelle pas une fonction.

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function Multi(lngValeur as long) as Long
         Multi = lngValeur*2
    End Function
    et on l'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Result as long
    Result = Multi(2)
    Voilà comment on utilise une fonction.

    Une routine (ou Sub) est faite pour réaliser des traitements.

    Soit on l'appelle par Call avec les paramètres entre parenthèses, soit sans Call et sans parenthèse pour les paramètres.

    Voilà.

    Un petit tuto à lire : http://mhubiche.developpez.com/vba/f...axes/bases/#LI

    Philippe

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    D'accord merci beaucoup pour ses informations messieurs, je lirai le lien avec attention.

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Bonjour,

    Citation Envoyé par Philippe JOCHMANS Voir le message
    Que de mélanges dans les termes [...]
    Une fonction est faite pour retourner une valeur que l'on attribue en général à une variable.
    Donc on n'appelle pas une fonction.
    [...]

    Une routine (ou Sub) est faite pour réaliser des traitements.
    Soit on l'appelle par Call avec les paramètres entre parenthèses, soit sans Call et sans parenthèse pour les paramètres.
    Pour moi la seule différence entre une fonction et une routine est que la fonction est faite pour retourner un résultat.
    Mais comme on le voit dans les exemples suivants, la différence s'arrête là.

    En effet :
    - Rien n'empêche une fonction de faire du traitement.
    Le cas le plus courant où une fonction fait du traitement, est lorsqu'une fonction renvoie un code d'erreur
    après avoir effectué un traitement.

    - On peut aussi bien faire un appel (Call)à une fonction qu'a une routine.
    En effet, toujours dans le cas où une fonction retourne un code d'erreur, suivant ce que l'utilisateur souhaite faire,
    il pourra très bien :
    ...appeler la fonction en récupérant le code d'erreur erreur = MaFonction("commande",3).
    ...appeler la fonction sans récupérer le code d'erreur Call MaFonction("commande",3).

    Lorsque je parle "d'appel à une fonction", je parle au sens généralement utilisé en informatique.

    Plus généralement, le VBA est suffisamment souple pour supporter différentes conventions d'écriture.
    Peut être même trop souple (ex : il est possible de déclarer une fonction function sans spécifier de paramètre de retour, même avec Option Explicit).
    L'important étant de se fixer des règles d'écritures et de s'y tenir afin que le programme dans son ensemble soit homogène,
    surtout s'il est écrit/maintenu par plusieurs personnes.

    A+

    [Edit] Pour les appels de fonction et routine voir cours VBA §Instruction et règle d'appel. page 32.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Erreur lors de l'appel d'une fonction VBA à partir d'Excel
    Par Romain92 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/09/2014, 11h21
  2. Créer une fonction SQL (syntaxe)
    Par bugland dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 02/03/2014, 17h01
  3. [2005] Erreur syntaxe pour créer une fonction
    Par abd75web dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/01/2014, 09h25
  4. [E-00][VBA] Créer une fonction et ses arguments
    Par tiyolx dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/07/2013, 09h43
  5. Créer une fonction mathématique pendant l'exécution
    Par zeprogrameur dans le forum Langage
    Réponses: 5
    Dernier message: 09/07/2004, 11h36

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