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 :
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 !
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 :
Le tableur commencera toujours par 20XX - 20XX.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
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
Dernière édition: