Conserver valeur variable publique

Chalafraiz

XLDnaute Nouveau
Bonjour,

Je reviens vers vous parce que je rencontre un obstacle bête et méchant.

Je travaille sur une optimisation de tableur. C'est un fichier de budgets sur une plage d'années ; plusieurs onglets contiennent ces années pour la comptabilité, et il est nécessaire de les modifier à chaque fois que l'on créé un nouveau fichier budget (en copier-coller).

Pour pallier à ce problème, j'ai créé deux cellules nommées, Plage_Budget et Annee1 qui sont paramétrées à chaque lancement du workbook comme tel :
Option Explicit
Private Sub
Workbook_Open()
' Déclaration des variables pour l'extraction de la plage de budget
Dim Plage As String
Dim Esp As Integer
Dim length As Double

' Extraction de la plage d'années du nom du tableur
Repname = ActiveWorkbook.Name
Esp = InStrRev(Repname, " ")
length = Len(Repname)
Plage = Left(Repname, (length - Esp + 1))

' Vérifie si la cellule Plage_Budget contient la bonne plage
If Sheets("Parametrage").Range("Plage_Budget") <> Plage Then
' Modification de la plage
Sheets("Parametrage").Range("Plage_Budget") = Plage

' Extraction de la première année de la plage
Sheets("Parametrage").Range("Annee1") = Left(Plage, 4)

' Renommer les feuilles contenant des plages
Sheet37.Name = Plage & " Summary 1"
Sheet12.Name = Plage & " Summary 2"
Sheet25.Name = Plage & " Summary 3"

' Activation de la page d'accueil
Sheets("Accueil").Activate
End If
End Sub
Le tableur commencera toujours par 20XX - 20XX.
Repname est une variable déclarée publique en Module 1 (bien sur en dehors de toute procédure).

Lorsque je lance test2() (Module 1), Repname a bien conservé sa valeur.
Quand je lance test3() (Module 2), puis que je relance test2(), alors la Msgbox n'affiche plus rien : RepName a perdu sa valeur.

Comment faire pour la conserver ?
Dois-je obligatoirement réécrire Repname = ActiveWorkbook.name au début de la macro test3(), qui nécessite cette variable ?

Pour info, la macro test3() ouvre plusieurs autres Workbook, il est donc essentiel que je puisse garder le nom du premier Workbook pour pouvoir switcher entre les tableurs.

Merci d'avance pour vos lumières !
 

Pièces jointes

  • 2014-2019 Exemple.xlsm
    24.6 KB · Affichages: 95
Dernière édition:

Chalafraiz

XLDnaute Nouveau
Re : Conserver valeur variable publique

Excusez moi, je me suis mal exprimée, en fait elle est déclarée juste en dessous d'option explicit en Module1, mais je lui définie une valeur dans un Private Sub Workbook_Open, c'est peut être ça qui occasionne la perte de sa valeur ?
 

Dranreb

XLDnaute Barbatruc
Re : Conserver valeur variable publique

Bonjour.
Non. Si elle y est déclarée Public elle est connue de tout les modules du projet VBA qui ne se définissent pas une autre variable Private du même nom, et conservée durant toute une séquence d'exécution de code, quel que soit le statut Public ou Private des procédures qui la manipulent. Dès que plus rien ne s'exécute, ben ma fois, vous pouvez aussi la conserver quand même, mais seulement si vous avez assez de chance, car après tout ça ne reste quand même que de la mémoire de travail et non un support de stockage permanent.
 

Statistiques des forums

Discussions
312 329
Messages
2 087 327
Membres
103 516
dernier inscrit
René Rivoli Monin