Gérer une variable ou un object sur un autre classeur
Bonjour,
Mon problème:
Je souhaite activer la feuille d'un classeur (classeur "source") différent de mon classeur "actif". Une routine sur ce classeur "source" lance un UserForm dès l'activation de la feuille qui m'intéresse qui "prompt" l'utilisateur, l'obligeant à fermer cet UserForm avant que mon code ne continue son exécution.
Je souhaiterais faire en sorte que l'utilisateur n'ait pas à fermer cet Userform et que le code s'exécute de bout en bout sans interruption. Par ailleurs, il m'est impossible d'agir sur le classeur source, tout doit être gérer sur le classeur "actif".
Le code:
Classeur "actif", feuille "active":
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Private Sub Bouton_Click()
Dim wb As Workbook
Dim passway As String
If XXX.Value = True Then
passway = "XXXX/XXXX/XXX.xls"
End If
Set wb = Application.Workbooks.Open(passway)
Application.Sheets("YYYYY").Select 'Sur cette feuille, l'UserForm est activé.
'suite du code
End Sub |
Classeur "source", feuille "source":
Code:
1 2 3 4 5 6 7 8 9
| Global continuer As Integer
Private Sub Worksheet_Activate() '
If continuer = 0 Then Question.Show 'Question est l'UserForm qui prompt l'utilisateur avec deux boutons "oui" "non".
'suite du code
End Sub |
Code:
1 2 3 4 5
| Private Sub CommandButton2_Click() 'Bouton "non"
Question.Hide 'il s'agit de l'action que je voudrais intégrer au classeur "actif".
End Sub |
J'ai essayé toutes les combinaisons pour intégrer "Question.Hide" ou "continuer=1" sur la ligne Application.Sheets("YYYYY").Select, en prenant soin de déclarer toutes variables en global mais sans succès. J'ai aussi essayer les déclaration Const et Static. Mon gros problème est l'impossibilité de modifier quoi que ce soit sur le classeur "source".
Je serais très reconnaissant pour toute solution ou toute piste pouvant résoudre ce problème.
Merci d'avance!
Thomas