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

  1. #21
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu as vérifié une remise à zéro de i... mais as-tu vérifié que tu n'aies pas une déclaration de i dans un module quelconque ? (Dim i)

    (Le pas à pas est effectivement une bonne solution Tu as la possibilité dans la fenêtre de débuggage de vérifier la valeur de tes variables )

  2. #22
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Points : 24
    Points
    24
    Par défaut
    Alors pour ce qui est d'un eventuel "Dim i" quelque part, je ne pense pas puisque j'ai lance une recherche dans tout le projet de la lettre i, exactement (pour ne pas me taper tous les mots contenant la lettre i!) donc la je pense que c'est bon. Car mon projet etant vraiment tres gros il est vrai que j'aurais pu oublier un ptit "Dim i" quelque part mais vraiment je ne pense pas...

    Quand a la verification pas a pas j'ai utilise F8, qui execute le code pas a pas et qui surligne en jaune pour dire ou il en est, tout en ayant un oeil sur la valeur de i a tout moment (Add Watch dans mon excel 2003 en anglais). C'est par cette méthode que j'ai pu dire que c'est sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Userform_Initialize()
    que mon i capricieux revient a 0.
    pouvez vous me confirmer que cette ligne n'execute aucun code? De toute facon, le code dans ce userform_initialize n'est pas bien complique, je vous l'ai mis sur la premiere page de cette discussion. Et il n'y a clairement pas de i dans cette procedure...
    Je continue de chercher...

  3. #23
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Comment ouvres-tu ton userform ? Je crois soupçonner que tu l'ouvres par un "Exécuter" sur l'userform lui-même...
    Tu dois l'ouvrir depuis un module, après la déclaration de ta variable en public
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub OuvrirLuserformMachin()
         Load userformMachin   'Je crois que cette ligne n'est pas indispensable en VBA 2003
    userformMachin.show    'mais celle-ci l'est !
    end sub
    En VBA 97 je ferais un truc comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public i as integer
     
    Private Sub Workbook_Open()
       ActiveWorkbook.RunAutoMacros Which:=xlAutoOpen
    End Sub
     
    Sub Auto_open()
        i = 16
        Load userformMachin 
        userformMachin.show    
    end sub
    Tu dis

  4. #24
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Points : 24
    Points
    24
    Par défaut
    Non mais mon Userorm il s'ouvre quand on clique sur un bouton qui est situé sur une feuille Excel. Donc le Userform.Show je l'ai mis dans le "_click()" de ce bouton.

  5. #25
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Alors ton workbook_open ne sert à rien !
    Tu dois déclarer la variable globale (Public) dans la feuille de code de ta feuille de calcul contenant le code ouverture de ton userform.

    NB - Je n'ai lu nulle part la précision que tu donnes dans ton dernier message. J'ai raté l'info ou tu ne l'as pas mise ? Parce que si tu ne l'as pas mise
    sinon...

  6. #26
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Points : 24
    Points
    24
    Par défaut
    Mais je veux que ma variable globale elle soit disponible dans tout le projet donc toutes les feuilles! en realite il y a plusieurs Userforms qui l'utiliseront! Je n'ai pas tres bien compris ton dernier message j'avoue Ouskel'n'or.

  7. #27
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Points : 24
    Points
    24
    Par défaut
    Je reprécise un peu la situation:

    Je veux que mon i a l'ouverture du classeur s'initialise a la valeur 16. Ensuite il ne sera plus jamais a 16... Ensuite il peut etre modifié par diverses procédures et utilisé principalement dans un module. Voila est ce clair ou ai je commis une enorme bourde dont je ne me serais pas rendu compte et qui justifierait les smileys assassins de Ouskel'n'or? C'est tout a fait possible puisque j'ai tres peu d'experience en Vba!

  8. #28
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Points : 24
    Points
    24
    Par défaut
    Bon autre petite precision: le i se met a 0 quand je clique sur le bouton sur ma feuille qui est cense faire apparaitre le userform... Je ne sais pas si vous etes toujours sur l'affaire mais si oui vous etes tres courageux parce que moi je commence ea peter un plomb!

  9. #29
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Effectivement, ça ne fonctionne pas quand le bouton est dans la feuille de calcul.
    Tu dois lancer une macro se trouvant dans un module, la macro étant précédée de la déclaration de I
    Dans le code de ta feuille de calcul, tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
         InitI
    End Sub
    Tu insères un module dans ton projet -> Insérer -> Module

    Dans ton module, tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public i As Integer
     
    Sub InitI()
    i = 16
    Load UserFormQueTuVeux
    UserFormQueTuVeux.Show
    End Sub
    et dans l'userform, tu mets un bouton pour afficher I
    et dans le code du bouton tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButtonQuéDansLuserform_Click()
    MsgBox i
    End Sub
    Et puis tu mets Résolu parce que ça, ça fonctionne

  10. #30
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Points : 24
    Points
    24
    Par défaut
    Merci de ta perseverance a toute epreuve, cependant je suis desole car il y a un MAIS: Si je met ca dans tous mes userforms (oui car j'en ai pleins...), a chaque fois que je vais en ouvrir un le i va revenir a 16. Or ce n'est pas ce que je veux: mon i doit etre a 16 a l'ouverture du programme, et ensuite chaque userform doit pouvoir le modifier... Desole le "resolu" n'est pas pour cette fois...

  11. #31
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je ne vois pas le pb. Au lieu de l'initialiser dans InitI, tu lui affectes bien la valeur que tu veux où tu veux. La variable est vraiment Globale.
    J'ai l'impression que tu cherches un grain de sable sur une plage...

  12. #32
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ne peux-tu pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Initialize()
    i = 16
    End Sub
    ?
    Tu dis parce que sinon tu as la solution d'inscrire la valeur quelque part et quand tu le souhaites, tu vas la chercher... Juste une idée... Mais là, je ne vois pas ce que tu veux de plus

  13. #33
    Expert éminent sénior


    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
    Points : 20 038
    Points
    20 038
    Par défaut
    Stocke plutôt ta variables i dans une cellule de ton classeur..., tu sera moins "embété.." par les arrets/redémarrage macros...

  14. #34
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par gootsu
    en [Vba-E] c'est "F5"!!
    F5 pour relancer (tout) le code, F8 pour du pas à pas.

    Autrement dit, un seul point d'arrêt et F8 pour avancer dans le code.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  15. #35
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 68
    Points : 24
    Points
    24
    Par défaut
    OOOOOOUUUUUUUFFFFFFFF (de soulagement)

    Ca y est! Enfin!

    Ben voila Ouskel'n'or , et bbill, je n'aurais qu'un seul mot:

    En effet en utilisant une cellule pour stocker ma valeur, c'est bon ca marche. Pour l'instant j'ai remplace tous mes "i" par le "Value" d'une certaine cellule paumée dans les lointaines contrées d'une feuille... Et oui desole Ouskel'n'or mais ce que tu me proposais juste avant ne marchait toujours pas, ca retombait encore a 0! Je ne cherchais pas un grain de sable sur une plage, je cherchais juste a ce que ca marche!
    Par contre je me demandais si niveau programmation c'est rapide de mettre 60 fois dans le projet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Sheets("Main").Range("Z1000").Value
    ?
    Bon je vais me demerder, voir si je peux pas laisser mes i partout et juste stocker la valeur dans une cellule...
    En tout cas merci infiniment a ceux qui se sont accroches, ca fait bien plaisir d'avoir de l'aide.
    Si vous avez des questions a me poser, n'hesitez pas...


  16. #36
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 151
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par AlainTech
    Citation Envoyé par gootsu
    en [Vba-E] c'est "F5"!!
    F5 pour relancer (tout) le code, F8 pour du pas à pas.

    Autrement dit, un seul point d'arrêt et F8 pour avancer dans le code.
    oui, je me suis corrigé la page précedente!
    Enfait je voulais au départ expliquer que je met des point d'arret stratégique et relance avec "F5" autrement dit avec "run" pour évité de faire effectivement du pas à pas avec "F8"!
    Encore toute mes excuse pour l'erreur!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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