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 :

Je perds ma valeur de variable [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Points : 217
    Points
    217
    Par défaut Je perds ma valeur de variable
    Bonjour a toutes et tous, bonjour forum,

    j'ai une variable baptiser Rtt

    Feuil2(Compte) >>> juste pour ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    if Rtt = 5 then Msgbox Rtt >>>>> Résultat 0 ???????
    end sub
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Rtt
    Rtt=5
    Msgbox Rtt >>>>> Résultat 5 c'est bon
    end sub
    Dans le module ou la feuille ou elle est actuellement ca fonctionne bien MAIS
    Lorsque je veux m'en servir dans d'autres feuilles ou modules je perds sa valeur, chaque fois Rtt=0
    comment peut 'on memoriser cette variable afin de l'utiliser ou bon me semble dans mon programme en VBA


    Merci de votre temps je vous souhaitent un très bonne journée

    Raymond

  2. #2
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut
    Les variable ont une porté, ici tu déclares Rtt (Dim Rtt) dans procédure Worksheetchange, donc celle-ci a une porte procédure uniquement et ne peut être utilisé qu'ici.
    Si tu souhaites y avoir accès dans une autre procédure ou/et dans un autre module, il te faut mettre ta déclaration dans un module tout au début de celui ci. En déclarant ta variable Private dans un module, celle ci ne sera accessible qu'au niveau de ce module, mais dans toute les procédure et fonctions, si tu la déclares comme Public, elle sera accessible dans tout ton projet (par defaut si rien de precisé).
    Tu devrais jeter un coup d'oeil sur la porté d'une variable, il doit y avoir des tutos a se sujet.

    A++
    Qwaz

  3. #3
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Points : 217
    Points
    217
    Par défaut
    Salut Qwazerty

    Merci pour ta réponse détaillée, je vais voir si je trouve quelque chose sur les variables.

    Merci et très bonne journée a toi

    Raymond

  4. #4
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168

  5. #5
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    comment peut 'on memoriser cette variable afin de l'utiliser ou bon me semble dans mon programme en VBA
    On peut utiliser une varibale globale, une autre solution est d'aller chercher la valeur dans une cellule.

  6. #6
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Points : 217
    Points
    217
    Par défaut
    Salut a tous

    Salut aalex_38

    merci pour la reponse

    comment procede t'on si tu a un exemple, je veux bien

    On peut utiliser une varibale globale, une autre solution est d'aller chercher la valeur dans une cellule

    merci a tous et bonne journée

    Raymond

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour tous,
    Dans un module public, par exemple Module1 tu met...
    et tu l'enlève dans l'événement ou tu le dimentionne...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
    ' Dim Rtt SUPPRIMER
    Rtt=5
    Msgbox Rtt >>>>> Résultat 5 c'est bon
    end sub
    A+

  8. #8
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Comment fait ton pour récupérer une valeur dans une cellule??

    Ben comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Rtt=worsheets("Feuil1").cells(1,1)
    if Rtt = 5 then Msgbox Rtt >>>>> Résultat 0 ???????
    end sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Rtt
    Rtt=5
    Msgbox Rtt >>>>> Résultat 5 c'est bon
    worsheets("Feuil1").cells(1,1)=rtt
    end sub
    Bon c'est pas vraiment le plus propre et l'utilisateur risque de la modifier, mais c'est a toi de voir (moi j'utilise souvent ce truc dans mon code, j'ai mis la meme couleur pour la police et le fond et c'est bon la cellule est protégé l'utilisateur en peux pas changer le contenu, mais je pense que la variable publique est préférable, regarde le lien que je t'aidonnée pour voir comment t'en servir)

    Edit : Bonjour le forestier, J'avais ru comprendre que la question s'adréssait a la méthode d'aalex.

  9. #9
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Points : 217
    Points
    217
    Par défaut
    Salut a tous, forum

    voila j'ai essayer les réponses proposées ca marche

    Sauf que dans ce cas je suis obliger de cliquer droit pour voir le résultat

    On ne peut pas avoir le résultat sans avoir a cliquer ???

    J'ai mis Public Rtt as integer dans un module comme conseillé c'est ok

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     
    If Rtt = 5 Then Msgbox Rtt >>> j'ai bien 5 mais il faut que je click
     
    le vrai test sera en fait
     
    If Rtt = 5 Then gosub AfficheDate
    Donc ce serai mieux si je n'ai pas a cliquer a chaque fois

    Merci a tous c'est sympa

    bonne fin d'après midi

    Raymond

  10. #10
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    est ce que tu as compris ce que signifie les nom des dux subroutine que tu as créé???

    La première s'execute avant le clique droit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    if Rtt = 5 then Msgbox Rtt >>>>> Résultat 0 ???????
    end sub
    Celle ci s'execute a chaque modification d'une cellule dans l'onglet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Rtt
    Rtt=5
    Msgbox Rtt >>>>> Résultat 5 c'est bon
    end sub
    C'est a toi de décider quand tu veux lancer tes procédure. Donc oui c'est possible mais on ne peu pas décider a ta place de comment lancer ton programme...

    Un peu de lecture sur les évènements:
    -de la feuille de calcul
    http://silkyroad.developpez.com/VBA/EvenementsFeuille/
    -du classeur
    http://silkyroad.developpez.com/VBA/EvenementsClasseur/

  11. #11
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Points : 217
    Points
    217
    Par défaut
    Re Krovax

    Ok bien compris, En tout cas si j'ai pas tout compris j'essais , j'accroche et je lit pas mal mais de la a tout comprendre, je suis encore loin d'avoir ta connaissance.

    j'apprends seul alors pas facile

    Bon je vais continuer je vais voir pour faire autrement.car t'expliquer mon code trop long, faudrai que tu sois mon voisin ca serai plus simple, je blague

    Merci pour la réponse c'est sympa, a plus tard

    Raymond

  12. #12
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    J'ai commencé le VBA il y a 4moi stu verra ca s'apprend vite. Lit des tutos fait des essais bidon (c'est comme ca que l'on apprend) essaye des code en mode pas a pas pour essayer de les comprendre et tu verra que rapidement tu commencera a piger le truc. Le truc a ne pas faire (a mon avis) pomper des morceau a droite a gauche sans les comprendre
    Et quand ca coince il y a le forum

  13. #13
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Points : 217
    Points
    217
    Par défaut
    Bonsoir Krovax, forum

    Entierement d'accord avec toi, c'est pas faute d'essayer, mais a 58 ans des fois du mal a retenir

    sinon j'ai les livres mais tout n'ai pas dedans ni sur les adresses ou tu m'envoie je le regarde souvent

    mais bon question de temps

    bon tu peux me dire svp comment faire pour mon petit souci, ca m'arrangerai bien en attendant de continuer la lecture et les essais

    Merci bien pour les conseils, c'est sympa

    Raymond

  14. #14
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Comme dit je ne peux pas savoir a ta place comment tu veux lancer ta macro. Tu a beaucoup d'évènement qui lance le code. Le plus simple et de lancer la deuxième macro a partir de la première mais est ce pertinente dans ton programme comme solution je ne peux pas savoir
    pour appeler une macro
    des exemple sur ce tout petit tuto
    http://mhubiche.developpez.com/vba/f...yntaxes/bases/
    Comment des exemple de programme qui en appelle en autre

  15. #15
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Points : 217
    Points
    217
    Par défaut
    Bonsoir Krovax

    Merci pour ta réponse j'ai regarder un peu, j'aprofondie demain, je vais refroidir les neurones.

    Merci a toi et bonne soirée

    Salut Raymond

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 266
    Points : 348
    Points
    348
    Par défaut
    Bonsoir,

    Personnellement, lorsque je veux garder une (ou des) variable(s), j'utilise un nom....

    Tout simplement....

    Et ta variable, 2 mois après, ben, tu l'as toujours....

    Enfin, c'est ce que j'utilise...

  17. #17
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour à tous,

    Personnellement, lorsque je veux garder une (ou des) variable(s), j'utilise un nom....
    mapeh, peux-tu préciser ta méthode, elle m'intéresse mais je ne vois pas très bien ce qu'il faut faire.

  18. #18
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut
    Je persiste et signe, il faudrait que tu en dises plus, on patauge la, montre nous un tableau ne serait ce qu'une image pour nous expliquer ce que doit faire le code, et surtout quand il doit le faire. Comment donner une réponse sans avoir de question ?? Je sais que le principe du Geopardi était genial ... mais bon
    Je vois que tu gères des Rtt, je suis sur un projet de planning qu'y est en phase finale, peut être qu'une partie de mon projet pourrais te rendre service, mais pour ça je dois savoir de quoi il retourne.
    ++
    Qwaz

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 266
    Points : 348
    Points
    348
    Par défaut
    Bonjour,

    peux-tu préciser ta méthode
    un exemple tout simple. Dans la Macro1, on définit une variable (MaVar) et on lui donne une valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Macro1()
    Dim MaVar As Byte
    MaVar = 10
    ActiveWorkbook.Names.Add Name:="var1", RefersToR1C1:=MaVar
    End Sub
    et dans la macro 2, on récupère sa valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Macro2()
    Dim MaNouvelleVar As Byte
    MaNouvelleVar = [var1]
    End Sub
    Ainsi, on récupère la valeur de cette variable n'importe quand, elle est mémorisée dans les noms du classeur, et restera tant qu'on n'aura pas changé sa valeur...

    Bonne journée

  20. #20
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Points : 217
    Points
    217
    Par défaut
    Bonjour a tous et toutes, forum

    Bonjour mapeh

    Merci pour l'aide apporter et pour le petit code.

    (1) Tu peux m'expliquer juste le code en dessous SVP

    (2) Et la variable ainsi memorisée est 'elle utilisable dans tout le projet, sans perdre sa valeur

    Merci a toi et bonne fin d'après midi

    Raymond

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [PHP 5.3] Variable perd sa valeur en sortie de if !
    Par CinePhil dans le forum Langage
    Réponses: 3
    Dernier message: 11/07/2012, 02h31
  2. Réponses: 2
    Dernier message: 20/04/2009, 11h46
  3. [Debutant][Système]Récupérer la valeur des variables systeme
    Par cameleon2002 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 16/02/2007, 09h57
  4. Pourquoi ma variable perd sa valeur ?
    Par Bruno29 dans le forum Flash
    Réponses: 10
    Dernier message: 17/01/2007, 20h56
  5. Variable qui perd sa valeur
    Par thierry-69007 dans le forum Delphi
    Réponses: 5
    Dernier message: 14/12/2006, 13h18

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