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.
Configuration: Windows 2000 Internet Explorer 6.0
8 réponses
-
Salut,
Peut être tout simplement en la "stockant" dans une cellule d'une feuille du classeur Excel, genre en EZ15900. -
non. C'est la seule que je connaisse.
Plusieurs pistes ici -
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 :
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 :MaVar
comme 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 -
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
-
mouais, pourquoi faire simple en utilisant sa tete quand on peu faire compliqué en utilisant l'aide de vba
-
Merci Pijaku pour toute ton aide. Cette méthode fonctionne, je l´ai testé pour un integer. Je vais essayer de la tester desormais pour un tableau de valeurs. J´espère que les données stockées sous cette forme son inaccessibles à l´utilisateur.