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 :

Récuperer des variables VBA dans un autre classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Points : 12
    Points
    12
    Par défaut Récuperer des variables VBA dans un autre classeur
    Salut, a tous!
    Je vais présenter succintement mon problème:
    J'ai une première série de classeurs (1 par projet) avec plusieurs modules et de nombreuses variables publiques. Un module permet d'initialiser ces variables en parcourant les feuilles du classeurs.
    J'ai un second classeur ou une macro doit ouvrir séquentiellement chacun des classeur de la première série, lancer la subroutine d'initialisation des ces classeurs et copier ces variables dans des variables du second classeur.

    Un pti exemple est surement plus parlant.
    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
     
    Public NombrePays As Integer, NombreRégions as Integer,...
    Public Sub RecupParams()
     
    Call InfosFichiers
    Dim i As Integer
    For i = 1 To Nombre_Classeurs
        Workbooks.Open Tableau(i), 3, , , "MC Wacko"
        Application.Run (Tableau(i) & "!InitParams") 'ca marche
        NombrePays = [Tableau(i)].Module7.NbPays 'ca bloque
        NombreRégions = [Tableau(i)].Module7.NbRégions 'pareil
        ....
        ....
    Next i
    End Sub
    Le nom de mes classeurs est stocké dans un tableau, je peux ouvrir chacun des classeurs. l'appel de la subroutine via le ApplicationRun ne pose pas de problème mais impossible de récuperer des variables d'un autre classeur initialisées avec InitParams avec la bien que celles ci soient publiques

  2. #2
    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,

    Tu peux modifier ta procedure pour lui passer des parametres:

    Dans la classeur A:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Public NombrePays As Integer, NombreRégions As Integer
     
    Public Sub RecupParams()
        NombrePays = 2
            Application.Run (Workbooks("ClasseurB").Name _
            & "!'InitParams " & NombrePays & "'")
    End Sub
    Dans le classeur B:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Public Sub InitParams(NbPays As Integer)
        MsgBox NbPays * 2
    End Sub
    Cordialement,

    Tirex28/

Discussions similaires

  1. Réponses: 7
    Dernier message: 08/03/2011, 08h33
  2. Récuperer des variables vbs dans une page php
    Par tese84 dans le forum VBScript
    Réponses: 18
    Dernier message: 19/06/2007, 10h28
  3. [VBA-E] copier une fiche active dans un autre classeur.
    Par Little-Freud dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 15/03/2006, 10h51
  4. [VBA] utiliser une macro contenue dans un autre classeur
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 01/02/2006, 18h46
  5. Réponses: 2
    Dernier message: 19/01/2006, 18h58

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