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 :

Conserver valeur variable en fin d´exécution de code VBA excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Par défaut Conserver valeur variable en fin d´exécution de code VBA excel
    Bonjour,

    Dans le cadre d´une petite programmation dans VBA excel que je suis en train de faire, je souhaiterais qu´en fin d´éxécution de mes codes une variable reste conservée et ceci même après fermeture du classeur excel. Ainsi quand j´ouvre le classeur cette variable détient la valeur qu´elle avait lors de la dernière utilisation du programme.
    Je me suis rendu compte que la declaration: Static nom_de_variable As Type ne permet de conserver la dernière valeur de la variable que lorsque le classeur n´a pas été fermé. Lorsque je réouvre le classeur la variable s´initialise automatiquement a 0 :~).

    Quelqu´un a-t-il une solution?

    Merci beaucoup pour votre aide.

  2. #2
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour andromedor le forum tu peus faire un truc comme cela tu l'ecris dans une cellule avant de fermer ton classeur & sauve puis a l'open de ton classseur tu la récuperes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub es()
      Dim mavar As Long
         mavar = 10
         [a1] = mavar
         'et l 'inverse pour la recuperer
         mavar = [a1]
    End Sub

  3. #3
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Par défaut
    Ok merci laetitia. J´avais pensé a une solution de ce type mais je cherchais quelque chose plus rigoureux au niveau de la programmation car je suppose que ca doit exister.

  4. #4
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    bonjour à tous,

    Ok merci laetitia. J´avais pensé a une solution de ce type mais je cherchais quelque chose plus rigoureux au niveau de la programmation car je suppose que ca doit exister.
    Je ne vois pas ce qu'il n'y a pas de rigoureux dans la solution proposée par Laetitia, c'est une solution comme une autre et à mon avis une bonne solution.

    Il en existe d'autres : ecrire dans la base de registre, ecrire dans une cellule dans une feuille cachée par exemple, ecrire dans un fichier et le lire ...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Par défaut
    Bonjour,

    Citation Envoyé par aalex_38 Voir le message
    Je ne vois pas ce qu'il n'y a pas de rigoureux dans la solution proposée par Laetitia, c'est une solution comme une autre et à mon avis une bonne solution.
    Il en existe d'autres : ecrire dans la base de registre, ecrire dans une cellule dans une feuille cachée par exemple, ecrire dans un fichier et le lire ...
    Ce que andromedor semble rechercher, c'est donner à son code VBA une mémoire permanente pour ses variables, indépendamment du classeur Excel, permettant de conserver leur valeur même si la macro a terminé de s'exécuter, si le classeur est fermé puis ré-ouvert, ou si le PC éteint puis rallumé.

    C'est dommage, aalex_38 a évoqué une solution mais ne l'a pas expliquée afin qu'elle soit utilisable, du coup son commentaire ne fait pas avancer le sujet.

    Tu peux écrire dans la base de registre de Windows en utilisant les fonctions VBA :
    - SaveSetting (AppName As String, Section As String, Key As String, Setting As String)
    - GetSetting (AppName As String, Section As String, Key As String)

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim sauvegarde_nom As String
    sauvegarde_nom = "Saucisse cocktail"
    SaveSetting "Excel", "Module_de_Code", "Nom Conservé", sauvegarde_nom
     
    Dim lecture_nom As String
    lecture_nom = GetSetting("Excel", "Module_de_Code", "Nom Conservé")
    MsgBox lecture_nom
    Cordialement

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 389
    Par défaut
    Bonjour,

    Peut être une autre solution

    dans le module Thisworbook

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        laValeur = Application.InputBox("Saississez une valeur quelconque", , , , , , , 1 + 2)
        ActiveWorkbook.Save
    End Sub
     
    Private Sub Workbook_Open()
        test
    End Sub
    dans un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Property Get laValeur() As Variant
        laValeur = [Essai]
    End Property
     
    Public Property Let laValeur(ByVal maValeur As Variant)
        ThisWorkbook.Names.Add "Essai", maValeur, False
    End Property
     
    Sub test()
    On Error Resume Next
        MsgBox laValeur
    End Sub
    A adapter

    JP

  7. #7
    Membre confirmé
    Homme Profil pro
    COMPTABLE
    Inscrit en
    Décembre 2014
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Algérie

    Informations professionnelles :
    Activité : COMPTABLE
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2014
    Messages : 56
    Par défaut
    Citation Envoyé par Schlobax Voir le message
    Bonjour,



    Ce que andromedor semble rechercher, c'est donner à son code VBA une mémoire permanente pour ses variables, indépendamment du classeur Excel, permettant de conserver leur valeur même si la macro a terminé de s'exécuter, si le classeur est fermé puis ré-ouvert, ou si le PC éteint puis rallumé.

    C'est dommage, aalex_38 a évoqué une solution mais ne l'a pas expliquée afin qu'elle soit utilisable, du coup son commentaire ne fait pas avancer le sujet.

    Tu peux écrire dans la base de registre de Windows en utilisant les fonctions VBA :
    - SaveSetting (AppName As String, Section As String, Key As String, Setting As String)
    - GetSetting (AppName As String, Section As String, Key As String)

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim sauvegarde_nom As String
    sauvegarde_nom = "Saucisse cocktail"
    SaveSetting "Excel", "Module_de_Code", "Nom Conservé", sauvegarde_nom
     
    Dim lecture_nom As String
    lecture_nom = GetSetting("Excel", "Module_de_Code", "Nom Conservé")
    MsgBox lecture_nom
    Cordialement
    bonjour
    j'ai créer une fonction sur Excel
    est ce que je peux utiliser ce code pour enregistrer les resultats ?
    Et ect ce que je dois ecrire ce code dans le Module de la Fonction ?
    ou bien dans le Workbook ?

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

Discussions similaires

  1. [XL-2013] inserer une variable a partir d'une cellule dans mon code VBA / EXCEL 2013
    Par schoret dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/10/2014, 09h40
  2. Réponses: 5
    Dernier message: 17/03/2013, 11h26
  3. Aide pour simplifier un code VBA Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 24/01/2008, 16h15
  4. Code VBA excel form et modules
    Par Cptnikita dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/10/2007, 10h15
  5. Problème avec un code Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/10/2007, 16h43

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