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 :

Pb lorsque j'ajoute un argument à une fonction qui marche bien sans. "erreur de compilation: Attendu : =" [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Antilles Néerlandaises

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2014
    Messages : 73
    Par défaut Pb lorsque j'ajoute un argument à une fonction qui marche bien sans. "erreur de compilation: Attendu : ="
    Bonjour à tous,

    J'ai deux fonctions:

    1°) Fonction que je vais appelé dans ma deuxième fonction. Elle marche si j’enlève l'argument MonDelim et que je renseigne mon paramètre en brut directement dans ma fonction (ex: délimiteur = "\"). Mais je voulais utiliser un argument pour pouvoir choisir le délimiteur que je veux dans mon autre fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Function ExportCatOxaAvcTest(MaCategorie As Variant, MonDelim As Variant)
        ' Quelques variables
        Dim rst As DAO.Recordset
     
        If IsNull(MaCategorie) Then
        MaCategorieSplit = Split(" \ \ ", "\")
        Else
        MaCategorieSplit = Split(MaCategorie, MonDelim)
        End If
    2°) Lorsque j'utilise mon argument, VBA me met le message d'erreur suivant : "erreur de compilation: Attendu : ="
    Lorsque j'enlève le paramètre et que j'utilise "\" en brut dans ma fonction ça marche. J'avais au début utilisé un argument de type String mais ça me fait le même résultat. J'ai donc essayé avec un Variant en désespoir de cause
    Je suis sur que le problème est tout bête mais je ne vois pas trop d'où ça peut provenir.

    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
     
    Public Function LectureTBL2()
     
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("Donnees FTP")
    rs.MoveLast
    While Not rs.BOF
        ExportCatOxaAvcTest((rs.Fields("Classif1")), "\")
        ExportCatOxaAvcTest((rs.Fields("Classif2")), "\")
        ExportCatOxaAvcTest((rs.Fields("Classif3")), "\")
        ExportCatOxaAvcTest((rs.Fields("Classif4")), "\")
        ExportCatOxaAvcTest((rs.Fields("Classif5")), "\")
    rs.MovePrevious
    Wend
     
    rs.Close
    Set rs = Nothing
    End Function
    Si quelqu'un a une idée je veux bien un petit coup de main.

    Merci d'avance et bonne journée

  2. #2
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Antilles Néerlandaises

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2014
    Messages : 73
    Par défaut
    En fouinant un peu sur le forum je me suis rendu compte qu'il suffit d'utiliser call devant la fonction que j'utilise pour l'appeler lorsqu'elle ne renvoie pas de valeurs.

    Je n'ai pas vraiment compris pourquoi mais l'essentiel c'est que ça fonctionne.
    J'espère que çà servira à d'autres dans le même cas que moi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("Donnees FTP")
    rs.MoveLast
    While Not rs.BOF
        Call ExportCatOxaAvcTest((rs.Fields("Classif1")), " > ")
        Call ExportCatOxaAvcTest((rs.Fields("Classif2")), " > ")
        Call ExportCatOxaAvcTest((rs.Fields("Classif3")), " > ")
        Call ExportCatOxaAvcTest((rs.Fields("Classif4")), " > ")
        Call ExportCatOxaAvcTest((rs.Fields("Classif5")), " > ")
    rs.MovePrevious
    Wend

  3. #3
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 137
    Par défaut
    Bonjour,
    Si je comprend bien tu veux utiliser un paramètre optionnel dans le contrat de ta fonction.

    Il y a 2 approches possibles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Function ExportCatOxaAvcTest(MaCategorie As Variant, optional MonDelim As Variant)
    Puis pour tester si le paramètre a été passé on utilise la fonction ismissing() comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ismissing(MonDelim) then
       mondelim = "\"
    endif

    2ème approche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Function ExportCatOxaAvcTest(MaCategorie As Variant, optional MonDelim As String ="\")
    dans ce cas pas de ismissing puisque par défaut le paramètre sera égal à "\" et pas de variant mais un string directement.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 137
    Par défaut
    2 écritures possibles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call mafonction( monparametre1, monparametre2 )
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mafonction monparametre1, monparametre2
    Par contre une fonction (Function) doit retourner quelque chose sinon c'est une procédure (Sub).

    Dans de rare cas on peut avoir besoin de créer une fonction qui ne retourne rien. Mais ça reste exceptionnel.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Antilles Néerlandaises

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2014
    Messages : 73
    Par défaut
    Merci pour les précisions Loufab. je vais transformer ma fonction en Sub du coup.
    A bientôt sur le forum !

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

Discussions similaires

  1. Ajout d'arguments à une fonction
    Par shaiHulud dans le forum Général Python
    Réponses: 3
    Dernier message: 02/01/2014, 23h25
  2. Une fonction qui marche 8 fois mais pas 9
    Par Swarley dans le forum Prolog
    Réponses: 1
    Dernier message: 04/12/2008, 10h21
  3. [Surnaturel] Une fonction qui marche en débug, pas en release
    Par 10_GOTO_10 dans le forum C++Builder
    Réponses: 6
    Dernier message: 04/07/2006, 14h22
  4. [class] Ajouter class devant une fonction
    Par Pedro dans le forum Langage
    Réponses: 12
    Dernier message: 07/03/2005, 13h11
  5. Passer une fonction comme argument à une fonction
    Par Cocotier974 dans le forum Général Python
    Réponses: 4
    Dernier message: 29/06/2004, 13h41

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