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 :

Fonction et variables tableaux


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 44
    Par défaut Fonction et variables tableaux
    Bonjour,

    Je voulais savoir comment faire pour qu'une fonction renvoie une variable tableau ?

    Pour simplifier voici le genre de chose que j'aurais besoin de faire

    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 test()
     
    Dim monTab(3) as String 
     
    Call monTab
     
    Call uneFonction(monTab, "blabla...")
     
    End Sub
     
     
    Function monTab()
     
    monTab(0)="test"
    monTab(1)="nimporte quoi"
    monTab(2)="autre chose"
     
    End Function
    Biensur dans les faits ma variable tableau est à deux dimensions et de grande taille. Je pourrais aussi utiliser une autre fonction et utiliser monTab comme sa variable ByRef mais bon ça m'arrange moins.

    Bref le problème c'est que le code que je viens de vous écrire ne marche pas et que je reçois le message "Erreur d'exécution : Espace pile insuffisant".

    J'en profite pour poser une autre question annexe :
    si monTab est bien une variable tableau et que je veux l'utiliser dans une autre fonction est-ce que cette fonction devra être définie ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function uneAutreFunction(monTab as String)
    '....
    End Function
    ou alors qqch comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function uneAutreFunction(monTab(3) as String)
    '....
    End Function
    Désolé si mes questions ne sont pas d'un niveau bien élevé mais bon là je bloque et je n'ai pas vraiment trouvé les réponses que je voulais sur les tutos ou sur google.

    Merci d'avance pour votre aide précieuse !

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Une fonction ne s'appelle pas avec call

    mais en l'appelant directement

    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
    Sub test()
     
     
    y = monTab
     
    MsgBox (y(0))
     
     
    End Sub
     
     
    Function monTab()
    Dim x(0 To 2)
     
    x(0) = "test"
    x(1) = "nimporte quoi"
    x(2) = "autre chose"
     
    monTab = x
     
    End Function

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 44
    Par défaut
    d'accord merci.
    Du coup quand j'ai besoin dans mon main d'une fonction/procédure qui ne renvoie rien (mais juste modifie mon tableau excel par ex) est-ce que je dois utiliser "function" ou "private sub" ?

    dans ton code tu ne définie pas le type de variable de y dans la procedure test, c'est volontaire ?

    en fait je n'arrive pas à trouver sur le tuto ou le FAQ de vba du site developpez.com des explications sur les différences entre function, sub, private, public, call... en Visual Basic. Pourtant je suis certain que ça doit se trouver

    je vais pas vous cacher que ça fait quelques mois que je code en VBA, je commence à réussir à faire pas mal de choses (et qui marche) mais je voudrais maintenance essayer d'améliorer mon code, de l’optimiser et le rendre plus. Et c'est pas évident je trouve (de faire des beaux codes propres). Par exemple jusqu'à présent j'appelais toutes les "function" avec Call (et ça marchait).

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Alors simple:

    Un sub est une procédure, elle fait des choses et ne renvoit rien, elle peut avoir des arguments et changer des variables globales

    Une fonction est une fonction elle renvoit une variable ou pas, elle peut ou pas avoir d'arguments, elle est utilisable sur les fiches excel.

    Une fonction ou une routine publique peut être appellée dans tout ton projet la fonction ou routine privée ne peut être appellée que dans le mondule

    pour appeller une procédure toto() :
    Pour appeller une fonction toto(a,b,c) as variant
    Si ta fonction ne renvoit rien, pourquoi fais tu une fonction ?

    Si tu la calles, où vient se mettre ta variable ? à moins que tu bouges des variables globales...

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 44
    Par défaut
    Merci pour ton aide.

    Du coup dans quel cas utiliser une function plutot qu'une procédure si on ne veut rien renvoyer ?

    Autre question, dans les quelques lignes de code que tu m'as écrit, quand tu écris y=monTab, c'est quoi le type de y ? si on ne le définit pas et qu'on regarde avec la fonction varType on voit que c'est du array of variant mais si on souhaitait le définir ça serait quoi (si on travail en option explicit) ?

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Dans aucun...

    C'est un array de strings

Discussions similaires

  1. [Tableaux] Style en fonction de variables
    Par louroulou dans le forum Langage
    Réponses: 8
    Dernier message: 01/08/2007, 19h23
  2. appels de fonctions et variables intermediaires
    Par TabrisLeFol dans le forum Langage
    Réponses: 7
    Dernier message: 07/03/2006, 13h37
  3. variables tableaux
    Par kernel57 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 19/12/2005, 11h03
  4. Réponses: 5
    Dernier message: 19/09/2005, 20h58
  5. Réponses: 9
    Dernier message: 24/05/2005, 16h34

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