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

Macros et VBA Excel Discussion :

Problème lors de l'appel d'une fonction [XL-2000]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 611
    Points : 359
    Points
    359
    Par défaut Problème lors de l'appel d'une fonction
    Bonjour,

    Lorsque j'appelle une fonction depuis l'activation d'un bouton d'u formulaire, j'ai le message :
    "Erreur de compilation, type d'argument ByRef incompatible"

    J'ai consulté le tutoriel sur les fonctions sur ce site mais je ne vois pas mon erreur.

    Voici ce que j'ai codé :

    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
    Public Sub b_export_Click()
     
     
       Dim retour, rais_soc, ident_edi As String
     
       Dim id_fst As Long
     
     
           id_fst = l_fst.List(j, 1)
     
           rais_soc = l_fst.List(j, 0)
     
           ident_edi = l_fst.List(j, 2)
     
           retour = verif_fst(id_fst, rais_soc, ident_edi)
     
    Function verif_fst(id_fst As Long, rais_soc As String, ident_edi As String)
    L'appel à la fonction plante sur rais_soc.

    Julien.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 932
    Points : 28 927
    Points
    28 927
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En ligne 17, c'est la fonction que tu insères dans une procédure SUB et pas un appel à la fonction.
    Une procédure ne peut pas être imbriquée dans une autre et pour invoquer une fonction l'instruction peut ressembler à ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monResultat = maFonction(Argument_1, Argument_2)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "LeRésultat est " & maFonction(Argument_1, Argument_2)

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 611
    Points : 359
    Points
    359
    Par défaut
    Je n'ai pas placé l'intégralité du code.

    Ma fonction est appelée depuis la procédure. Il y a bien le end sub de la procédure avant la fonction.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 932
    Points : 28 927
    Points
    28 927
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Oui ainsi c'est difficile d'aider.
    Il faudrait savoir ce que la fonction fait et surtout l'argument rais_soc. N'y a-t-il pas conflit de type ?

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 611
    Points : 359
    Points
    359
    Par défaut
    Je ne vois pas de conflit de type dans la mesure où les 2 sont définis en string.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 932
    Points : 28 927
    Points
    28 927
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En ligne 4 du code publié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Dim retour, rais_soc, ident_edi As String
    Ta variable est déclarée de type Variant
    La bonne syntaxe pour la déclaration est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Dim retour as String, rais_soc as String, ident_edi As String
    Bonjour,
    Je te confirme que le problème vient certainement de là
    Le code ci-dessous renvoie bien le message d'erreur signalé dans ta question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Test()
      Dim T1, T2, T3 As String
      T2 = "Salut"
      MsgBox Hello(T2)
    End Sub
    µ
    Function Hello(T2 As String)
      Hello = "Hello " & T2
    End Function
    Si tu effectues la déclaration comme je te l'ai indiqué (Dim T1 As String, T2 As String, T3 As String), il n'y a plus d'erreur

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 611
    Points : 359
    Points
    359
    Par défaut
    Parfait, merci bien !

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

Discussions similaires

  1. Problème lors de l'appel d'une fonction
    Par FATENMRABET dans le forum Général Java
    Réponses: 4
    Dernier message: 19/09/2013, 13h55
  2. Problème lors de l'appel d'une fonction Tsql
    Par mobscene dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/07/2007, 15h56
  3. [MySQL] problème lors de l'appel d'une fonction
    Par jexl dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 27/06/2007, 09h53
  4. Réponses: 3
    Dernier message: 01/05/2007, 16h07
  5. [POO] Problème lors de l'appel d'une propriété d'un objet.
    Par akecoocoo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/08/2005, 08h51

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