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 de variables d'un classeur vers un autre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2014
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2014
    Messages : 72
    Par défaut Passage de variables d'un classeur vers un autre
    Bonsoir à vous,

    J'ai deux classeurs xlsm, l'un nommé "appelant", l'autre "appelé".
    pour le VBAprojet appelant, outils->référence -> VBAprojet appelé est coché

    Dans "appelant" j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public p As Integer
    Public h As Integer
     
    Static Sub Init()
     p = 25
     h = 30
    End Sub
     
    Sub Test_Appel()  
        Call Init
        Call Appel_Exterieur
    End Sub
    dans le classeur "appelé" ce trouve ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Sub Appel_Exterieur()
        MsgBox (p & " - " & h)    
    End Sub
    Excel retourne une boite de dialogue contenant uniquement " - ".
    Si je déclare les variables p et h dans thisworkbook de appelant, résultat identique.

    Quelqu'un peut-il me dire pourquoi et comment faire pour avoir le bon résultat.
    En vous remerciant.
    PLH81

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Il faut que les 2 classeurs se référence mutuellement.
    Là, seul le 1er référence le 2ème apparemment ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public p As Integer
    Public h As Integer
     
    Static Sub Init()
     p = 25
     h = 30
    End Sub
     
    Sub Test_Appel()  
        Call Init
        Call Appel_Exterieur(p,h)
    End Sub
    dans le classeur "appelé" ce trouve ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Sub Appel_Exterieur(p,h)
        MsgBox (p & " - " & h)    
    End Sub

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je pensais que c'était pour tester la communication entre projet qu'il avait fait un tel code.
    Dans ce cas, les variables public n'ont plus d'intérêt.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Exactement!

    Bien sur les variables public sont utiles mais dans la mesure du possible je préfère métriser et fournir le contexte à la méthode!
    Dernière modification par AlainTech ; 07/10/2015 à 07h16. Motif: Suppression de la citation inutile

  6. #6
    Membre confirmé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2014
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2014
    Messages : 72
    Par défaut
    Bonjour à vous,
    Merci pour ces réponses rapides.
    J'ai testé le référencement mutuel mais excel interdit celui-ci ( référencement circulaire)
    Dans le projet réel, il n'y a pas deux variables à passer, mais beaucoup plus. Je voulais justement éviter de les passer en paramètres comme indiqué par Rdurupt, d'où le public.
    Sur cette méthode, le fait de les passer en paramètre ainsi ne crée t-il pas deux "couples" variables p et h, public p, privé p de la méthode, public h, privé h de la méthode, risque de confusion et de bug pour excel ? Résultat, si public p change de valeur, privée p ne pointant pas vers la même adresse mémoire, ne change pas. Me trompe-je ?

    S'il y a une autre méthode, je suis preneur (je ne dénigre pas pour autant la solution de Rdurupt, en l'adaptant avec un tableau de variables en paramètres ou avec une variable type crée).

    bonne journée

    PLH81

  7. #7
    Invité
    Invité(e)
    Par défaut
    Tu pointe l’index sur les limites des variables publics ! D’une manière comme une autre, je les proscrits de mes code !

    Il est préférable de métriser la chaîne de commandement ! Je ne vois pas de solution sérieuse sans une refonte de ton code !

    Le chemin de l’enferre est parsemé de bonnes intentions !

    c'est encore en modifiant ton appel de fonction comme je te l'ai expliqué que tu aura le moins de modification car le reste du code ne change pas !
    Dernière modification par Invité ; 29/09/2015 à 12h44.

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

Discussions similaires

  1. Passage de variables d'une activité vers une classe
    Par ruyeken dans le forum Android
    Réponses: 2
    Dernier message: 18/02/2013, 13h37
  2. Passage de variables d'une api vers un formulaire
    Par loribac dans le forum Langage
    Réponses: 17
    Dernier message: 23/11/2012, 19h02
  3. [VBA-E]Importer une ligne d'un classeur vers un autre
    Par khiat dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/02/2006, 14h15
  4. Réponses: 3
    Dernier message: 09/01/2006, 09h44
  5. [Cookies] passage de variable d'une page a l'autre
    Par BernardT dans le forum Langage
    Réponses: 1
    Dernier message: 15/11/2005, 01h50

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