Vba : constante d'un classeur à l'autre

Le
Jac
Bonjour à tous,

à l'ouverture du classeur A, la "Private Sub Workbook_Open" affiche un
msgbox.

Si c'est une macro du classeur B qui ouvre le classeur A, j'aimerais
que le msgbox du classeur A ne soit pas affiché.

Donc il faudrait que dans le classeur B je puisse définir une variable
ou une constante qui serait encore "vivante" quand j'arrive dans le
classeur A afin de pouvoir mettre une condition sur l'ouverture du
msgbox.

Merci d'avance à qui pourrait me dire comment réaliser cette manip.

Jac
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #16395521
Dans le classeur A, tu transforme ta sub Workbook open ce cette façon :

Dans cette procédure, remplace Classeur3.xls par le nom du
classeur B dans ton application. Évidemment, cela ne te permettra
pas de rebaptiser ton classeur B par la suite !

'----------------------------------
Private Sub Workbook_Open()

Dim Op As Integer
On Error Resume Next
Application.DisplayAlerts = False
Op = Application.ExecuteExcel4Macro("'Classeur3.xls'!toto")
Application.DisplayAlerts = True
If Err = 0 Then
MsgBox "Ce que tu veux"
Else
Err.Clear
End If
MsgBox "Bonjour à toi"
'Le reste de ta macro
End Sub
'----------------------------------

Et dans ton classeur B, pour ouvrir le classeur A,
tu utilises ceci :

'----------------------------------
Sub test()

Names.Add "toto", 1
Workbooks.Open "c:ExcelTodayClasseur2.xls"
Names("toto").Delete

End Sub
'----------------------------------





"Jac"
Bonjour à tous,

à l'ouverture du classeur A, la "Private Sub Workbook_Open" affiche un
msgbox.

Si c'est une macro du classeur B qui ouvre le classeur A, j'aimerais
que le msgbox du classeur A ne soit pas affiché.

Donc il faudrait que dans le classeur B je puisse définir une variable
ou une constante qui serait encore "vivante" quand j'arrive dans le
classeur A afin de pouvoir mettre une condition sur l'ouverture du
msgbox.

Merci d'avance à qui pourrait me dire comment réaliser cette manip.

Jac
ctac
Le #16402561
Peut être comme ça ?

Private Sub Workbook_Open()
On Error Resume Next
If IsError(Application.Caller) Then MsgBox "Bonjour"
On Error GoTo 0
End Sub

ctac

"Jac"
Bonjour à tous,

à l'ouverture du classeur A, la "Private Sub Workbook_Open" affiche un
msgbox.

Si c'est une macro du classeur B qui ouvre le classeur A, j'aimerais que
le msgbox du classeur A ne soit pas affiché.

Donc il faudrait que dans le classeur B je puisse définir une variable ou
une constante qui serait encore "vivante" quand j'arrive dans le classeur
A afin de pouvoir mettre une condition sur l'ouverture du msgbox.

Merci d'avance à qui pourrait me dire comment réaliser cette manip.

Jac




Jac
Le #16406231
Bonjour michdenis et ctac,

merci pour vos suggestions. Ce n'est pas encore tout à fait au point,
mais j'y reviendrai plus tard. Pour le moment, j'ai modifié ma
procédure afin d'éviter le problème (je déclenche depuis le fichier qui
est déjà ouvert, donc le msgbox n'est plus sollicité...).

Bonjour à tous,

à l'ouverture du classeur A, la "Private Sub Workbook_Open" affiche un
msgbox.

Si c'est une macro du classeur B qui ouvre le classeur A, j'aimerais que le
msgbox du classeur A ne soit pas affiché.

Donc il faudrait que dans le classeur B je puisse définir une variable ou une
constante qui serait encore "vivante" quand j'arrive dans le classeur A afin
de pouvoir mettre une condition sur l'ouverture du msgbox.


Publicité
Poster une réponse
Anonyme