Spitnolan08
XLDnaute Barbatruc
Bonjour,
Il n'existe plus sous Excel (sauf erreur) la possibilité de créer un environnement de travail regroupant plusieurs classeurs.
Aussi pour se placer dans cette configuration (travail VBA en simultanée sur plusieurs classeurs), il faut prévoir dans Workbook_Open(), l'ouverture des fichiers de l'environnement.
Jusque là pas de problème.
Par contre lorsque je veux revenir au classeur appelant, l'instruction n'est pas prise en compte.
Ci-dessous une partie du code expliquant le fonctionnement.
Que j'ouvre un, cinq ou plus de fichiers par cette macro, le résultat est le même : l'affichage reste bloqué sur WbOpé !
J'ai testé la configuration dans tous les sens que j'ai pu imaginer et ça ne fonctionne pas, sauf en pas à pas.
J'ai aussi essayé de passer les variables au classeur WbOpé (puisque c'est le dernier ouvert à priori) pour qu'à son ouverture il lance l'affichage de MySheet. Mais ça ne peut pas fonctionner car le passage de variable ne peut se faire (sauf erreur) que dans un module, or pour ça il faut que le classeur soit déjà ouvert...
Une idée du pourquoi ça ne fonctionne pas et surtout une idée pour que ça fonctionne ?
Il n'existe plus sous Excel (sauf erreur) la possibilité de créer un environnement de travail regroupant plusieurs classeurs.
Aussi pour se placer dans cette configuration (travail VBA en simultanée sur plusieurs classeurs), il faut prévoir dans Workbook_Open(), l'ouverture des fichiers de l'environnement.
Jusque là pas de problème.
Par contre lorsque je veux revenir au classeur appelant, l'instruction n'est pas prise en compte.
Ci-dessous une partie du code expliquant le fonctionnement.
Que j'ouvre un, cinq ou plus de fichiers par cette macro, le résultat est le même : l'affichage reste bloqué sur WbOpé !
J'ai testé la configuration dans tous les sens que j'ai pu imaginer et ça ne fonctionne pas, sauf en pas à pas.
J'ai aussi essayé de passer les variables au classeur WbOpé (puisque c'est le dernier ouvert à priori) pour qu'à son ouverture il lance l'affichage de MySheet. Mais ça ne peut pas fonctionner car le passage de variable ne peut se faire (sauf erreur) que dans un module, or pour ça il faut que le classeur soit déjà ouvert...
Une idée du pourquoi ça ne fonctionne pas et surtout une idée pour que ça fonctionne ?
VB:
Private Sub Workbook_Open()
'***Affichage aléatoire de la page d'accueil à partir de l'heure actuelle (favorise Init2)
Dim MySheet As String '***Pour l'exemple car dans mon cas elle est déclarée en variable Public
Dim Ref As Integer, Sauf As Integer
**********
Ref = Round(Right(Now(), 2) / 5, 0)
Select Case Ref
Case 0 To 1
Sheets("Init1").Select
Case 2
Sheets("Init2").Select
Case Else
Sheets("Init3").Select
End Select
'***Stockage du nom de la feuille pour affichage en fin de procédure
MySheet = ActiveSheet.Name
'****
'[.................]'
'****
Application.ScreenUpdating = False
'*************************************************************************
'***Définition des chemins d'accès et des noms de fichiers utilisés dans l'application
Chemin0 = "P:\PROGEST new\"
Chemin1BD = "PROGEST BD\Version xlsx-xlsm\"
'***Dénomination Abrégée des fichiers et Ouverture des fichiers nécessaires au fonctionnement
Set WbMacro = ThisWorkbook
Set WbOpé = Application.Workbooks.Open(Chemin0 & Chemin1BD & "BDopé.xlsm")
Set WbM = Application.Workbooks.Open(Chemin0 & Chemin1BD & "BDmarchés.xlsx")
Set WbEntrep = Application.Workbooks.Open(Chemin0 & Chemin1BD & "BDEntrep.xlsm")
'****
'[.................]'
'****
Application.ScreenUpdating = True
ThisWorkbook.Sheets(MySheet).Activate
End Sub