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 :

Perte variable avec workbook_open


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut Perte variable avec workbook_open
    Bonjour,

    J'ai une macro composée d'une procédure principale et de userforms.
    Cela fonctionne très bien mais si je mets la procédure principale dans Workbook_Open, je perds la connexion avce les variables récupérées dans les userforms :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public Str as string
    Private Sub Workbook_Open()
     
    monuserform.show
     
    'Dans monuserform on saisit un mot récupéré sous "str"
     
    thisworkbook.sheets(1).cells(1,1)=str
     
    'Et là, str=""...
     
    End Sub
    Merci de votre aide !

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    regarde si Str n'est pas défini à plusieurs endroits, par exemple aussi dans ton userform.

    Si c'est le cas, enlève le du userform et mets le en public en début de ton code.

    Sinon tu peux sauver dans ta cellule directement dans le code du userform.


    Correction : je suppose que ton userform est non modal, et donc que tu le ferme avant que le code de workbook_open ne continue et donc la variable n'est peut-être plus en memmoire. Donc, la solution de sauver dans la cellule depuis le userform me parait bonne.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut
    Merci de me répondre.

    1/ Non, la variable n'est pas déclarée plusieurs fois.
    2/ C'est la même si je mets la variable en public.
    3/ l'exemple que je mets n'est qu'un exemple, je récupère un 10 aine d'infos de tous types que je réutilise dans le code principal...

    Bizarre hein ?
    Tu as essayé de faire tourner le bout de code que je mets en exemple ?
    Voir si tu as la même chose...

    Encore merci !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Str est un mot réservé, c'est une fonction donc il ne faut pas l'utiliser comme nom de variable.

    De plus les variables Public doivent être déclarées dans un module standard et non dans un module du classeur ou d'une feuille.

    Starec

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut
    Je viens de lire la fin de ton post... désolé.
    Ceci dit si je remplace le

    par

    même problème ...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut
    Starec,

    J'ai mis "str" comme exemple, mes vrais noms de variable sont différents :

    StrMDB, StrFam...
    Donc ca ne vient pas de là.

    Comment faire pour déclarer les variable dans le module standard et les utiliser dans Workbook_Open ?

    Merci encore.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    A mon avis cela vient du fait que vous ne pouvez pas utiliser une variable portant le nom "Str" qui est un mot clé.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut
    jacques_jean,

    Cf mon précédent post.

    Merci de votre aide

  9. #9
    Invité
    Invité(e)
    Par défaut
    Re
    Citation Envoyé par House MD Voir le message
    Starec,

    J'ai mis "str" comme exemple, mes vrais noms de variable sont différents :

    StrMDB, StrFam...
    Donc ca ne vient pas de là.
    Comment peut-on savoir si vous ne mettez pas la réalité
    Comment faire pour déclarer les variable dans le module standard et les utiliser dans Workbook_Open ?
    Il suffit de les déclarer en Public comme tu as fait, et elles seront automatiquement reconnu dans toutes les procédures.

    Starec

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

Discussions similaires

  1. [VB.NET] Problem de récupération de variable avec une DLL
    Par ludovic85 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 19/01/2005, 11h37
  2. Réponses: 4
    Dernier message: 28/10/2004, 10h57
  3. Variable avec saut de ligne à l'intérieur
    Par MaTHieU_ dans le forum Langage
    Réponses: 2
    Dernier message: 09/08/2004, 22h39
  4. Generer des noms de variables avec une boucle
    Par moutanakid dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/07/2004, 17h45
  5. Désigner une variable avec une variable?
    Par littleman dans le forum Paradox
    Réponses: 4
    Dernier message: 12/08/2002, 11h21

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