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

VBA Discussion :

Variable super globale au projet


Sujet :

VBA

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Par défaut Variable super globale au projet
    Bonjour!

    J'aurais besoin dans mon projet Vba d'une variable (un entier) accessible a toutes les procedures et modifiable a tout moment.
    Je l'ai declaré de cette facon dans la partie "General" d'un module standard:

    Et je l'initialise a l'ouverture du workbook:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Private Sub Workbook_open()
    i=16
    End sub

    Ensuite dans des boutons d'userforms, j'ai des incrementations du type i = i + 1

    Je lance ce userform, je clique sur le bouton, c'est bon la valeur de i a bien ete incrementee de 1. Jusque la je suis heureux. C'est ensuite que ca se corse. Je relance le userform, je reclique sur le bouton, et pouf! le i s'est mis a zero, comme ca tout seul, sans qu'on lui aie rien dit. En regardant la valeur de i a chaque etape, j'ai vu que c'est sur la ligne " Private Sub Userform_initialize() " que i se met a 0, alors qu'il n'y a aucune action de realisee!
    Etant loin d'etre une superstar du Vba, je fais appel a votre experience et vos competences pour m'aider.
    Merci d'avance et bon week end!

    PS: n'ayant pas Internet le we je ne pourrais vous repondre avant Lundi...

    --
    Flo

    [Edit] bbil : Penser à rajouter les balises de codes, utiliser le bouton

  2. #2
    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
    rajout une ligne

    en haut de tes modules... cela t'obligeras à déclarer les variables.. et évitera des erreurs à des endroits ou tu crois avoir déclaré une variable et celle ci est hors de portée...

  3. #3
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Par défaut
    Oui mais je veux que cette variable soit utilisable dans tout le projet donc il faut que la declare qu'une seule fois non? Parce que le Option explicit il sert a quoi exactement? Moi je croyais qu'il rendait une variable utilisable dans toute une procedure.

  4. #4
    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
    Option explicit, "t'oblige" à déclarer toutes tes variables.. donc si tu en utilise une dans un endroit ou elle n'est pas accessible ... tu as un message d'erreur ... et VB.. ne te "génére" pas tout seul cette variable (sans aucun lien avec une autre variable de même nom)

  5. #5
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Par défaut
    Alors j'ai essayé de mettre "Option Explicit" dans les modules ou j'utilisais mon i mais cela ne change rien. Penses tu que je m'y prend correctement pour declarer cette variable globale?

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 151
    Par défaut
    j'ai vu que c'est sur la ligne " Private Sub Userform_initialize() " que i se met a 0
    Tu n'utilise pas la variable i dans la phase d'initialisation? t'es sûr?
    Peux etre que tu fais appel a une fonction qui met i à 0?
    Tu utilise peux etre le i dans une boucle for d'une fonction appelé dans " Private Sub Userform_initialize() "?

    Vérifie tous ça!!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/10/2008, 12h30
  2. Réponses: 2
    Dernier message: 20/10/2008, 13h38
  3. Variables super-global ?
    Par meliandah dans le forum Langage
    Réponses: 8
    Dernier message: 13/05/2007, 16h14
  4. Rendre super-globale une variable
    Par thanaos dans le forum Langage
    Réponses: 13
    Dernier message: 09/06/2006, 11h05
  5. [.NET] [C#] Variable super global ?
    Par choas dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/04/2005, 15h27

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