Conserver variable en fin d´exécution du cod
Résolu
andromedor
-
andromedor -
andromedor -
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.
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.
A voir également:
- Conserver variable en fin d´exécution du cod
- Fin des zfe - Guide
- Le code ascii en informatique - Guide
- Fin du partage de compte disney + - Accueil - Streaming
- Fin de la 4g en france - Accueil - Guide opérateurs et forfaits
- Fin de l'archive incorrecte - Forum Compression
8 réponses
Salut,
Peut être tout simplement en la "stockant" dans une cellule d'une feuille du classeur Excel, genre en EZ15900.
Peut être tout simplement en la "stockant" dans une cellule d'une feuille du classeur Excel, genre en EZ15900.
andromedor
Oui c´est ce à quoi j´ai pensé. Mais je suppose qu´il existe une méthode un peu plus "rigoureuse" pour faire cela. N´as tu pas une idée?
Bonjour,
Je viens d'essayer la méthode utilisée dans le lien du post 3. Cela fonctionne très bien. Je te laisse ici les codes et un fichier exemple. Ce dernier ajoute 1 à la variable "stockée" à chaque ouverture du classeur et l'inscris en A1.
Code à inscrire dans un module :
Dans ton code de macro tu utilises la variable nommée :
Sources : MichDenis cf lien post 3
Fichier exemple :
http://www.cijoint.fr/cjlink.php?file=cj201001/cij8pdtK9x.xls
Je viens d'essayer la méthode utilisée dans le lien du post 3. Cela fonctionne très bien. Je te laisse ici les codes et un fichier exemple. Ce dernier ajoute 1 à la variable "stockée" à chaque ouverture du classeur et l'inscris en A1.
Code à inscrire dans un module :
Public Property Get MaVar() As Variant MaVar = [toto] End Property Public Property Let MaVar(ByVal vNewValue As Variant) ThisWorkbook.Names.Add "toto", Int(vNewValue), False End Property
Dans ton code de macro tu utilises la variable nommée :
MaVarcomme ceci par exemple :
Private Sub Workbook_Open() If ThisWorkbook.Path = "" Then MaVar = 1 Else MaVar = MaVar + 1 [A1] = MaVar End If End Sub
Sources : MichDenis cf lien post 3
Fichier exemple :
http://www.cijoint.fr/cjlink.php?file=cj201001/cij8pdtK9x.xls
il n'y a pas besoin d'écrire tout ce code pour enregistrer une valeur dans une cellule et la récupérer a l'ouverture
tu a juste a jouer avec l'évenement before close et open de thisworkbook en ayant déclaré dans un module public mavar as variant
dans before close tu met sheets("feuille de variable").range("A1").value=mavar
et dans l'évenement open tu met: mavar=sheets("feuille de variable").range("A1").value
si tu veu tu peu désactiver les messages d'alerte et mettre du code pour la sauvegarde automatique
tu a juste a jouer avec l'évenement before close et open de thisworkbook en ayant déclaré dans un module public mavar as variant
dans before close tu met sheets("feuille de variable").range("A1").value=mavar
et dans l'évenement open tu met: mavar=sheets("feuille de variable").range("A1").value
si tu veu tu peu désactiver les messages d'alerte et mettre du code pour la sauvegarde automatique
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ah d'accord, mais ou es concervé la valeur alors ? dans une partie non accessible graphiquement du fichier ?
A priori, sauf erreur d'interprétation de ma part, dans un "nom" du classeur, nom qui est lui caché :
Public Property Let MaVar(ByVal vNewValue As Variant) ThisWorkbook.Names.Add "toto", Int(vNewValue), False End Property