Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Vba : constante d'un classeur à l'autre

3 réponses
Avatar
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

3 réponses

Avatar
michdenis
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" a écrit dans le message de news:

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
Avatar
ctac
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" a écrit dans le message de news:

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




Avatar
Jac
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.