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 de valeur entre deux procédures


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2008
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2008
    Messages : 225
    Par défaut Perte de valeur entre deux procédures
    Bonjour le forum,
    Dans la procédure événementielle Workbook_open, une instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sw_lang = Application.International(xlCountryCode)
    donne la langue de l’interface d’Excel. La valeur retournée est correcte.
    Sw_lang est défini en
    .
    Dans une autre procédure dans un autre module, j’utilise cette variable dans une instruction « Select ».
    Problème, à la fin de la procédure workbook_open, sw_lang est remis à zéro.
    Est-ce normal ?
    Un membre du forum peut-il m’aider à réfléchir sur ce problème ?
    D’avance merci.
    Harry

  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
    Bonjour,

    un problème de portée de variables ...

    une règle à ne pas oublier :

    - Tu ne déclare qu'une seule fois tes variables ( Fonction Dim...)
    - Tu rajoute en première ligne de toutes tes pages de codes la ligne :

    cela te permettra d'éviter ou de mieux cerner d'éventuels problèmes de déclaration de variables..

  3. #3
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2008
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2008
    Messages : 225
    Par défaut
    Bonjour le forum,
    Suite à une série de test, je pense avoir compris le problème.
    Si des boutons sont créés selon le code ci-dessous (voir http://www.developpez.net/forums/d13...edure-inactif/ #5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Les déclaratives sont dans un module séparé.
    Public OL As OLEObject
    Public CB As CommandButton
    Public sw_lang as Long
    'btn init listbox
    Sub create_btn_init_listbox()
    Const NOM_BOUTON As String = "btn_init_listbox"
    On Error Resume Next
    ActiveSheet.OLEObjects(NOM_BOUTON).Delete
    On Error GoTo 0
    Set OL = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
        Left:=97, Top:=116, Width:=10, Height:=10)
    OL.Name = NOM_BOUTON
    Set CB = OL.Object
    With CB
    select case sw_lang
    Case 1
      .Caption = arrMSG(24)
    Case 32
      .Caption = arrMSG(25)
    Case 33
      .Caption = arrMSG(26)
    End Select
      With .Font
        .Name = "Century Schoolbook"
        .Italic = True
        .Size = 12
      End With
      .AutoSize = True
      .Enabled = False
      End With
    End Sub
    les valeurs calculées dans workbook_open sont perdues.
    Si j'utilise des boutons controlform ou des activeX, pas de souci.
    Ces nouveaux éléments peuvent peut-être aider dans le raisonnement?

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour Harry Covair


    Ajouter un bouton contraint la feuille d'aller en mode création, ce qui réinitialise les variables.
    http://stackoverflow.com/questions/1...uce-this-error


    Cordialement

  5. #5
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2008
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2008
    Messages : 225
    Par défaut
    Bonjour Docmarti,
    Merci pour la réponse.
    VBA réserve parfois des surprises, surtout par méconnaissance.
    Au problème de la perte de valeur du code langue, j'avais trouvé une solution avec un "byref" dans la procédure appelée.
    Cependant, dans cette procédure, j'alimente une table avec des messages dans la langue du code. Et là, malgré que j'écume la toile, pas de solution, hélas. Même la déclaration Static ne résoud pas le problème.
    Bonne fin de weekend

    Harry

  6. #6
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Harry Covair

    Il y a toujours la solution de sauver les valeurs sur une feuille pour pouvoir ensuite les récupérer.

    Cordialement

    Docmarti

Discussions similaires

  1. [Wamp] Perte d'informations entre deux pages
    Par sneb5757 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 24/09/2007, 12h20
  2. Perte d'informations entre deux formulaires
    Par Eruil dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/07/2007, 11h12
  3. Réponses: 10
    Dernier message: 14/06/2007, 15h27
  4. Perte de temps entre Deux bases MySQL
    Par ramm50 dans le forum Outils
    Réponses: 7
    Dernier message: 08/09/2005, 10h33
  5. [VB.NET] Perte de focus entre deux form
    Par toniolol dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/07/2005, 09h00

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