XL 2010 Récupérer la valeur d’une variable à l’ouverture d’un fichier

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

Le problème est simple.
Dans un module standard, j’ai une variable "remember" déclarée Public.

Dans un UserForm il y a deux TextBox : un (TxB1) qui recueille automatiquement à l’ouverture de l’UF une valeur, l’autre (TxB2) dans lequel on y rentre une valeur.

On rentre une valeur dans TxB2, cette valeur est mémorisée dans la variable "remember", on ferme l’UF.
On ouvre l’UF, TxB1 affiche la valeur de la variable "remember" avant la dernière fermeture de l'UF. TxB2 est vierge en attendant qu’on y entre une nouvelle valeur.

Jusqu’à présent tout marche bien. Mais maintenant, si je ferme le fichier et que je le rouvre, "remember" est désespérément vide (autrement dit, TxB1 est vierge quand on ouvre l'UF). Comment faire en sorte qu’il mémorise la dernière valeur entrée dans TxB2, sans devoir contourner ce problème à la hussarde en conservant cette valeur dans une cellule de la feuille ?
 
Dernière édition:
Bonsoir Magic_Doctor,
A mes yeux il y a deux solutions :
- Une simple "en conservant cette valeur dans une cellule de la feuille"
- Une compliquée, du code pour modifier le code et mettre cette valeur en constante dans le code pour la prochaine ouverture.

Franchement perso, je pencherais pour la première. 🙂
 
Bonsoir @Magic_Doctor 🙂, @sylvanu 🙂,

Une autre méthode consiste à utiliser un nom au sein du classeur :
  • Le nom s'appelle "Remember"
  • On lui attribue la valeur de TxB2 à chaque changement de TxB2 (l'évènement pour sauvegarder la valeur peut être modifié : fermeture du UserForm, Update de TxB2, etc...)
  • Ce nom peut être masqué si on le désire (Visible:=False)
  • La lecture du nom se fait via [remember]
  • Le nom est persistant après la fermeture du fichier
Le code :
VB:
Private Sub TxB2_Change()
   ThisWorkbook.Names.Add Name:="Remember", RefersToR1C1:=UserForm1.TxB2, Visible:=True
End Sub

Private Sub UserForm_Initialize()
   On Error Resume Next
   TxB1 = [remember]
End Sub
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour