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 :

Synthaxe passage de variables [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 28
    Par défaut Synthaxe passage de variables
    Bonjour,

    J'avais une macro Excel un peu lourde et qui était écrite tout en "enfilade", que je voudrais séparer proprement par modules.

    Mon idée c'est d'avoir une procédure principale qui appelle ensuite différente procédures en fonction de la réponse à une checkbox userform.


    Voici grossièrement l'architecture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Main()
     
        Call SelectFile ' Cette procédure doit retourner plusieurs variables comme "FileName" and "Path"
     
        Call UserForm(FileName, Path) 'Cette procédure se sert des variables de la précédentes et doit en renvoyer d'autres, "x1","x2","x3"
     
        If x2=True Then
           Call Import(FileName,x1)
     
        If x3=False Then
           Call Average(Path, FileName, x2) 'etc etc
    Voilà le principe, je veux transmettre des variables de procédures à procédures en repassant par la procédure principale.

    Malheureusement je bute complètement dessus, je ne vois pas par quel outil passer.


    Merci par avance,

    baba89

  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
    Passe par des variables globales qui seront utilisées par tes subs ou alors passe par des fonctions

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonsoir,

    tu peu aussi passer des variables par référence

    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 Main()
     Dim stFileName As String
     Dim stPath As String
      SelectFile stFileName, stPath ' Cette procédure doit retourner plusieurs variables comme "FileName" and "Path"
       UserForm stFileName, stPath
    End Sub
     
     
    Sub SelectFile(ByRef stNomFichier As String, ByRef stRep As String)
        stNomFichier = ThisWorkbook.Name
        stRep = ThisWorkbook.Path
    End Sub
     
    Sub UserForm(ByRef st1 As String, ByRef st2 As String)
        MsgBox st2 & "\" & st1
    End Sub

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 28
    Par défaut
    Merci pour vos réponses.

    EngueEngue, je ne veux pas trop passer par des variables globales car j'en ai beaucoup et qu'en fonction des réponses de l'userForm, je ne me sers pas tout le temps des mêmes.
    L'approche par fonction semble pas mal, mais si j'ai bien compris, ça n'utilise et ne renvoie qu'une seule variable ?

    bbil, si je comprends bien ton code, la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SelectFile stFileName, stPath
    appelle la procédure SelectFile et modifie les valeurs des deux arguments dans la procédure Main ?

    Je vais tester ça, merci encore

  5. #5
    Invité
    Invité(e)
    Par défaut Bonsoir,
    les fonction retournent des valeurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
    MsgBox FonctionTest("Test")
    End Sub
    Function FonctionTest(Valeur) As String
    FonctionTest = "la veleur retournée est : " & Valeur
    End Function
    utilises des variables globales si tu n'as pas d'autre possibilité. passer le variable en références est plus facilement gérable.

    de plus si tu passe des valeurs par référence, tu peux les modifier. su tu n'utilise pas toutes les variables tu peux les déclarer en optionnel.
    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
    Sub test()
    Dim txt As String
    MyTest 1, txt
    MsgBox txt
    MyTest 2, B:=txt
    MsgBox txt
    End Sub
    Sub MyTest(Opreration As Integer, Optional A As String, Optional B As String)
    Select Case Opreration
            Case 1
                A = "TOTO"
            Case 2
                 B = "TITI"
    End Select
    End Sub
    Dernière modification par Invité ; 06/10/2013 à 20h28.

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

Discussions similaires

  1. [langage] Probleme passage de variables entre modules
    Par Ludo167 dans le forum Langage
    Réponses: 4
    Dernier message: 13/08/2004, 12h25
  2. Passage de variable dans un lien asp
    Par VirginieGE dans le forum ASP
    Réponses: 4
    Dernier message: 27/07/2004, 10h06
  3. [Kylix] passage de variable en Libc
    Par zheng dans le forum EDI
    Réponses: 11
    Dernier message: 06/05/2004, 14h14
  4. Passage de variable par methode post ?
    Par oazar dans le forum Flash
    Réponses: 33
    Dernier message: 16/10/2003, 17h03
  5. [langage] Passage de variables...
    Par martijan dans le forum Langage
    Réponses: 8
    Dernier message: 30/07/2003, 09h48

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