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 :

passage des arguments aux fonctions


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Points : 58
    Points
    58
    Par défaut passage des arguments aux fonctions
    bonjour,

    j'ai une erreur de type : Type d'argument ByRef incompatible

    je debute pas en programmation pure mais en dev script microsoft ouais

    l'appel se fait de la maniere suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox fonction_pere ("toto titi tutu tete")
    la signature de la fonction pere est la suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function fonction_pere (Text as String)as String
      Tableau = split(Text, " ")
      fonction_pere = fonction_fils(TableauEspace(0)) & fonction_fils(TableauEspace(1)) ' s'il a deux mots, sinon boucle, mais c'ets pas le pb
    end function
    la signature de la fonction fils est la suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function fonction_fils(Text as String) as String
      fonction_fils = left(Text, 1) ' peu importe...
    end function
    merci d'avance

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour,
    Une erreur détectée et un argument Byref invalide, pour y remédier..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function fonction_pere(Text As String) As String
    Tableau = Split(Text, " ")
    fonction_pere = fonction_fils(Tableau(0)) & fonction_fils(Tableau(1)) ' s'il a deux mots, sinon boucle, mais c'ets pas le pb
    End Function
     
    Function fonction_fils(ByVal Text As String) As String
    fonction_fils = Left(Text, 1) ' peu importe...
    End Function
    A+

    PS: Si tu voulais mettre les balises CODE pour les parties codes ce serrait plus lisible # dans l'éditeur.

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Points : 58
    Points
    58
    Par défaut
    Pour la balise code, c'est promis !!!
    sinon merci pour le ByRef mais j'aimerais savoir a quoi ca correspond (pointeur non ?)

    sinon j'ai un probleme plus serieux, ceci concerne le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    tableau = split ("toto", " ")
    If UBound(Tableau) = 0 Then MsgBox "un seul element dans le tableau"

    ca me fait une erreur "l'indice n'appartient pas a la selection", en gros un outOfBoundExeption mais rassurez moi les indices de tableaux vont bien de 0 a taille-1...


    re-merci d'avance

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Bonjour,

    mais rassurez moi les indices de tableaux vont bien de 0 a taille-1...
    Oui l'indice inférieur par défaut est 0, mais il peut etre modifié.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Option Base 1 'A placer en tete du module
    Et il est également possible de définir cet indice à la déclaration.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Tableau (1 To 10)
    'voire même
    Dim Tableau(-10 To 10)
    Pour ce qui est de l'erreur je pense que ta variable tableau devrait être déclarée avec le type variant.

    cordialement,

    Tirex28/

    PS:Bienvenue chez les fous.

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Byref signifie que tu transmet l'argument par référence (adresse en mémoire) en d'autre termes si la fonction modifie l'argument, tu peu récupérer l'argument modifié sans transfert de variable, un petit exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    A=10 : B = 20
    Swap A,B
    au retour A = 20 , B = 10
     
    function Swap(Byref V1 as variant, Byref V2 as variant)
    Dim Buff as variant
        Buff = V1 : V1 = V2 : V2 =Buff
    end function

    ByVal signifie que tu transmet par valeur (le contenu de la variable)

    Split ne génére pas un tableau s'il n'y a qu'un seul élément.
    J'ai pas tester mais essaye de déclarer ta variable par T()
    A+

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Points : 58
    Points
    58
    Par défaut
    merci a vous tous

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

Discussions similaires

  1. [UML CLASSES TABLES] Passage des classes aux tables
    Par Trompette83 dans le forum Diagrammes de Classes
    Réponses: 1
    Dernier message: 05/08/2007, 17h53
  2. Passage des arguments par valeur
    Par mpereg dans le forum Général Python
    Réponses: 4
    Dernier message: 13/03/2007, 17h12
  3. Procédure paramétrée : Passage des arguments
    Par romrai dans le forum Access
    Réponses: 3
    Dernier message: 26/04/2006, 15h17
  4. Passage des arguments par le shell
    Par panda31 dans le forum C
    Réponses: 8
    Dernier message: 09/11/2005, 11h53
  5. [JAVASCRIPT] passage d'argument à une fonction
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/06/2005, 18h17

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