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 :

Type d'argument ByRef incompatible


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Par défaut Type d'argument ByRef incompatible
    Bonjour,

    j'ai un message d'erreur à l'exécution de mon code mais je ne comprends pas pourquoi. Est-ce que quelqu'un a une idée pour résoudre ce problème ?

    Merci d'avance.

    Voici l'erreur que j'ai à l'exécution de mon code :
    "Erreur de compilation:
    Type d'argument ByRef incompatible"

    Et voici mon code qui est assez simple :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    Option Explicit
     
    Type RF
        site As String
        tranche As String
    End Type
     
    Type Action
        equipement As RF
        position As String
    End Type
     
    Sub Export(ByRef config As Action)
        'Ecrit dans le fichier txt
        Dim chemin As String
        Dim ligne As Integer
     
        chemin = "C:\Users\utilisateur\Desktop\Export.csv"
        Open chemin For Output As #1
        For ligne = 0 To UBound(config)
            Print #1, config(ligne).position,
        Next ligne
        Close #1
        MsgBox ("Export effectué avec succès !")
    End Sub
     
    Sub main()
        Dim equipement1 As RF
        Dim equipement2 As RF
        Dim config(2) As Action
     
        equipement1.site = "SITE1"
        equipement1.tranche = "TRANCHE1"
     
        equipement2.site = "SITE2"
        equipement2.tranche = "TRANCHE2"
     
        config(0).equipement = equipement1
        config(0).position = "POSITION1"
     
        config(1).equipement = equipement2
        config(1).position = "POSITION2"
     
        Call Export(config)
    End Sub

  2. #2
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut type d'argument byref incompatible
    Bonsoir,

    C'est quoi "config" nul part défini ?

    EDIT: autant pour moi, je n'avais pas vu que sub meain etait exécuté en premier.

    Cordialement.

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    normalement rien qu'en lisant l'aide du message d'erreur (tout dépend de la version) …

    Ou encore curseur sur ByRef (sinon Sub) puis touche puis lire, solution dans l'aide intégrée !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Je vais peut être dire une bétise, mais en principe, dans les Sub/fonctions les " Types Personnels " doivent toujours être passer en ByVal, jamais en ByRef dans les fonctions.

    Mais à confirmer cependant. C'est en tout cas valable pour les API (Byref pour les Type ) alors c'est surement pareil à l'inverse pour les sub/fonctions.

    EDIT:
    Dernière modification par Invité ; 20/09/2013 à 22h30.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 161
    Par défaut
    Bonjour à tous,
    Marc-L je regardais moi aussi ce poste mais mon niveau ne me permet pas de comprendre comment résoudre cette difficulté j'ai suivie tes conseils mais l'aide non plus je ne la comprend pas ce serait bien si tu pouvais développer un peu sur ce problème et nous mettre sur la voie cordialement

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Maintenant Nouveau2 a donné la réponse …

    Pourtant c'est indiqué en clair dans l'aide, deux types de passages d'argument, donc quand c'est pas l'un, c'est l'autre …

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 161
    Par défaut
    Bonjour à tous,
    J'avais suivi les conseils de Nouveau2 avant de relancer le post mais je reçois un message d'erreur
    Un type défini par l'utilisateur ne peut être passé par valeur (ByVal)
    j'ai essayé de suivre l'aide et de déclarer en dim "config" mais rien n'y fait
    Les types définis par l'utilisateur peuvent être passés uniquement par référence (par défaut), et non par valeur. L'erreur n'est signalée que lors de l'appel. Cause et solution de cette erreur :

    Vous avez utilisé un mot clé ByVal dans la définition d'un paramètre représentant un type défini par l'utilisateur.
    Retirez le mot clé ByVal. Pour éviter que des modifications soient répercutées au demandeur, déclarez (Dim) une variable temporaire du type et passez-la dans la procédure.
    cordialement

Discussions similaires

  1. [XL-2007] type d'arguments ByRef incompatible
    Par issoram dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 14/04/2019, 19h31
  2. [XL-2010] Erreur de compilation; Type d'argument ByRef incompatible
    Par Toug19 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/05/2015, 16h01
  3. Type d'argument Byref incompatible
    Par Glherbier dans le forum VBA Access
    Réponses: 13
    Dernier message: 02/11/2010, 10h30
  4. [AC-2007] Type d'argument ByRef incompatible dans un module
    Par KIK83 dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/12/2009, 15h01
  5. [VB]type d'arguments byref incompatibles
    Par kantelise dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 30/04/2006, 08h56

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