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 Discussion :

[VBA] Mettre un tableau de variable en paramètre


Sujet :

VBA

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 183
    Points : 125
    Points
    125
    Par défaut [VBA] Mettre un tableau de variable en paramètre
    Bonjour, j'ai des fonctions qui font les mêmes traitements sur des tableaux de variables alors que ceux-ci sont différent. Or je n'arrive pas à passer un tableau en paramètre d'une fonction.

    Y a t-il un quelquonque moyen de réaliser cette tache en VBA ?
    LikeZone
    Le meilleur du like

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub PasserTableauEnParamètre()
    MT = Array("Viens ", "chez moi ", "j'ai ", " du ", "bon... ", "café")
    JeSuisEnManque (MT)
    End Sub
    Sub JeSuisEnManque(LeTableau)
    For i = 0 To UBound(LeTableau)
        Msg = Msg + LeTableau(i)
    Next
    MsgBox Msg
    End Sub
    Si ça peut t'aider

    A+

  3. #3
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Oui, c'est ça. J'ai pas mal galéré la première fois pour trouver la bonne syntaxe. Il ne faut pas mettre les parenthèses du tableau, et je crois que ça ne marche qu'en ByRef (ou qu'en ByVal, je ne sais plus... )

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Comme tu parles de variable, tu peux faire ça

    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
    Sub PasserTableauEnParamètre()
    MT = ""
    Mot1 = "Viens "
    Mot2 = "j'ai "
    Mot3 = "chez moi "
    Mot4 = " du "
    Mot5 = "café"
    Mot6 = "bon... "
    MT = Array(Mot1, Mot3, Mot2, Mot4, Mot6, Mot5)
    JeSuisEnManque (MT)
    End Sub
    Sub JeSuisEnManque(LeTableau)
    Msg = ""
    For i = 0 To UBound(LeTableau)
        Msg = Msg + LeTableau(i)
    Next
    MsgBox Msg
    End Sub
    A+

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 183
    Points : 125
    Points
    125
    Par défaut
    Merci tu m'as fait avancer plus avant néamoins le mieux que j'ai réussi à faire c'est ça :

    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
    Sub PasserTableauEnParamètre()
     
        Dim MT As Variant
        MT = Array("Viens ", "chez moi ", "j'ai ", " du ", "bon... ", "café")
        JeSuisEnManque MT(0), MT(1), MT(2), MT(3), MT(4), MT(5)
     
    End Sub
     
    Sub JeSuisEnManque(ParamArray LeTableau() As Variant)
     
        Dim i As Integer
     
        For i = 0 To UBound(LeTableau())
            MsgBox LeTableau(i)
        Next
     
    End Sub
    Et ça ne me convient pas du tout. En effet, passer directement MT en paramètre ne marche pas. Or si une telle chose n'est pas possible alors je n'aurais plus d'intérêt à faire la fonction puisque je serais limité de par son appel (je ne connais pas le nombre d'index que possède les tableaux envoyés en paramètres).

    Si tu as d'autres idées merci de m'en faire pars mais de toute façon tu m'as déjà pas mal aidé.
    LikeZone
    Le meilleur du like

  6. #6
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Je ne comprend pas pourquoi tu dis que ça ne marche pas? Ou vois-tu une erreur dans le code d'Ouskel'n'or? Il marche très bien.

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    C'est UBound(MonTableau) qui te donne la taille de ton tableau et donc le nombre de paramètres ou d'index. Mais respecte ma syntaxe, la tienne ne peut pas marcher.
    Par contre, tu parles de fonction. Une fonction retourne un résultat ce qui n'est pas le cas dans mon exemple qui est une sub. Une sub fait ce qu'on lui demande en fonction de paramètres passés.
    Explique exactement ce que tu veux faire, il y aura certainement une solution.

    A+

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 183
    Points : 125
    Points
    125
    Par défaut
    Quand je disais fonction en fait je voulais parler de sous programme donc procédure ou fonction le problème est le même.

    Je ne comprend pas pourquoi tu dis que ça ne marche pas? Ou vois-tu une erreur dans le code d'Ouskel'n'or? Il marche très bien.
    Pas chez moi

    En fait quand je passe le tableau en paramètre le tableau renvoyé n'a pas de valeur c'est pourquoi il m'indique une erreur et pourquoi j'ai alors modifié en conséquence mais peut être n'ais je pas déclaré comme il se doit les variables et tableaux ?!

    EDIT : nous parlons bien de Visual Basic pour Application (dans mon cas avec Excel) n'est-ce pas ?
    LikeZone
    Le meilleur du like

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    J'ajoute que tu as une autre solution si tu ne connais pas le nombre de paramètres à passer
    Je suppose (à défoaut d'indications précises) que tu es dans une boucle et que tu veux récupérer les variables à passer en paramètre
    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
    Sub RécupérerLesDonnées()
    Dim MT()
    For i = 65 To 90
          ReDim Preserve MT(i)
          MT(i - 64) = Chr(i)
    Next
    AfficherTableau (MT)
    End Sub
     
    Sub AfficherTableau(LeTableau)
    Dim msg As String
    For i = 0 To UBound(LeTableau)
        msg = msg + LeTableau(i)
    Next
    MsgBox msg
    End Sub
    Si ça ne te convient pas, tu dis... Mais dis-le nom de gu !

    A+

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 183
    Points : 125
    Points
    125
    Par défaut
    Apparement j'avais mal testé et finalement ça marche comme je le veux :

    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
    Sub PasserTableauEnParamètre()
     
    Dim MT(6) As String
     
    MT(0) = "Viens "
    MT(1) = "chez moi "
    MT(2) = "j'ai "
    MT(3) = "du "
    MT(4) = "bon... "
    MT(5) = "café"
     
    JeSuisEnManque (MT)
    End Sub
     
    Sub JeSuisEnManque(LeTableau)
    MsgBox LeTableau(1)
    Dim msg As String
    Dim i As Integer
    msg = ""
    For i = 0 To UBound(LeTableau)
        msg = msg + LeTableau(i)
    Next
    MsgBox msg
    End Sub
    EDIT : merci
    LikeZone
    Le meilleur du like

  11. #11
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Haaaaa, quand même.
    De toute façon, depuis un certain post d'hier, je n'ai plus de cheveux à m'arracher, mais quand même...
    Allez, un petit click sur "Résolu", et on n'en parle plus...

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

Discussions similaires

  1. [Vba Access] Création tableau a longeur variable
    Par 57Steph dans le forum VBA Access
    Réponses: 4
    Dernier message: 06/09/2007, 08h34
  2. [VBA-E] Comment accéder à une variable tableau située dans un autre module
    Par jeanpierreco dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/02/2007, 13h15
  3. [VBA-E] récupération selection tableau dans variable
    Par garsdu51 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/02/2007, 08h04
  4. [VBA-E]Recherche dans une variable tableau
    Par illight dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/12/2006, 17h50
  5. [VB6] Déclaration d'un tableau avec variable en paramètre.
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 23/10/2005, 12h21

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