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

Macro AUTO_CLOSE attachée à un menu

21 réponses
Avatar
Cervolent
Bonjour à vous les professionnels d'Excel et merci d'avance pour vos réponses
Sous EXCEL 2002 :
La macro "Auto_Open" qui s'exécute dans mon fichier, personnalise
l'environnement Excel en ajoutant une barre de menu personnalisée "Menu
Diaporama". Dans cette barre d'outils j'insére une commande "Quitter" qui
exécute la macro "Auto_Close".
Cette macro "Auto_Close" supprime la barre d'outils "Menu diaporama" et
replace l'environnement EXCEL tel qu'il était au départ, mais comme la
commande d'exécution se trouve dans ladite barre, Excel Plante.
Comment faire disparaitre cette barre de menu "Menu Diaporama" ou la
commande "Quitter" qui exécute la macro qui la supprime ???
J'aimerais que cela se fasse autrement que par l'intermédiaire d'un autre
fichier (bibliothèque macro style Perso.xls) car je dois diffuser uniquement
ce fichier par CD et messagerie à une 100 aine d'utilisateurs.

Merci, à vous ...

10 réponses

1 2 3
Avatar
Cervolent
Désolé de t'agacer avec mon problème Mitch je crois que tu penses que je suis
bouché ...
mais voilà ce que me dit Excel :

Microsoft Excel a rencontré un problème et doit fermer. Nous vous prions de
nous excuser pour le désagrément encouru.
Envoyer Rapport ...

Je remet le code au complet :
Sub Auto_Open()
'Cette macro permet de libérer de la place à l'écran en enlevant les Barres
d'outils
'puis recréé un menu personnalisé
Application.ScreenUpdating = False
Application.CommandBars("Worksheet Menu Bar").Enabled = False
'Application.CommandBars("Worksheet Menu Bar").Visible = False
Application.CommandBars.Add(Name:="Menu Diaporama").Visible = True
Application.CommandBars("Menu Diaporama").Position = msoBarTop
Application.CommandBars("Standard").Visible = False
Application.CommandBars("Formatting").Visible = False
Application.CommandBars("Drawing").Visible = False
Application.CommandBars("Forms").Visible = False
Application.CommandBars("Picture").Visible = False
Application.CommandBars("Protection").Visible = False
Application.CommandBars("Reviewing").Visible = False
With Application
.DisplayFormulaBar = False
.DisplayStatusBar = False
.ShowWindowsInTaskbar = False
End With
'Création des menus
Ajout_Menu
End sub

Sub Ajout_Menu()
Application.CommandBars("Menu Diaporama").Controls.Add Type:= _
msoControlComboBox, ID:33, Before:=1, temporary:=True
Set newItem = Application.CommandBars("Menu
Diaporama").Controls.Add(Type:=msoControlPopup, Before:=2, temporary:=True)
With newItem
.BeginGroup = True
.Caption = "Créer le Diaporama"
.OnAction = "Creation_Fichier_Slides"
End With
Set newItem = Application.CommandBars("Menu
Diaporama").Controls.Add(Type:=msoControlPopup, Before:=3, temporary:=True)
With newItem
.BeginGroup = True
.Caption = "Quitter"
.OnAction = "Quitter"
End With
End Sub

J'ai copié sur ton modèle suivant mais où faut-il placer la commande de
fermeture du fichier ? (moi je la met dans la macro Quitter) :

'Private Sub Workbook_BeforeClose(Cancel As Boolean)
'On Error Resume Next
'MaProcédureFermeture
'End Sub
'Sub MaProcédureFermeture()
'Tout le code modifiant l'affichage des barres d'outils
'Enregistrement du fichier si nécessaire
'End Sub

ceci ...

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Quitter
End Sub

Sub Quitter() 'Macro rattachée à mon bouton de barre de menu pour quitter le
fichier
'Rétablissement des barres de menu et d'outils avant fermeture d'Excel
Application.CommandBars("Worksheet Menu Bar").Enabled = True
Application.CommandBars("Standard").Visible = True
Application.CommandBars("Formatting").Visible = True
Application.CommandBars("Drawing").Visible = True
Application.CommandBars("Menu Diaporama").Delete
With Application
.DisplayFormulaBar = True
.DisplayStatusBar = True
.ShowWindowsInTaskbar = True
End With
Workbooks("Construction_Proposition.XLS").Close SaveChanges:úlse
End Sub
Avatar
AV
donc AV n'en AV pas :o)


Pfffff....
Fallait bien qu'il y en ai un qui se dévoue pour la faire !

AV

Avatar
jps
en ces jours papabilesques, il est nomal que la dévotion suinte de
partout...
jps

"AV" a écrit dans le message de
news:
donc AV n'en AV pas :o)


Pfffff....
Fallait bien qu'il y en ai un qui se dévoue pour la faire !

AV





Avatar
MichDenis
Bonjour Cervolent,

J'ai testé ta procédure avec excel 2003, ça fonctionne très bien.

Suggestion pour résoudre ton problème :

Cette section, tu dois la copier obligatoirement dans le ThisWorkbook de ton Classeur :
'--------------------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CommandBars("Worksheet Menu Bar").Enabled = True
Application.CommandBars("Standard").Visible = True
Application.CommandBars("Formatting").Visible = True
Application.CommandBars("Drawing").Visible = True
Application.CommandBars("Menu Diaporama").Delete
With Application
.DisplayFormulaBar = True
.DisplayStatusBar = True
.ShowWindowsInTaskbar = True
End With
End Sub
'--------------------------------------


Tout ce qui suit va dans un module standard :

'----------------------------------
Sub Auto_Open()

Application.ScreenUpdating = False
Application.CommandBars("Worksheet Menu Bar").Enabled = False
Application.CommandBars.Add(Name:="Menu Diaporama").Visible = True
Application.CommandBars("Menu Diaporama").Position = msoBarTop
Application.CommandBars("Standard").Visible = False
Application.CommandBars("Formatting").Visible = False
Application.CommandBars("Drawing").Visible = False
Application.CommandBars("Forms").Visible = False
Application.CommandBars("Picture").Visible = False
Application.CommandBars("Protection").Visible = False
Application.CommandBars("Reviewing").Visible = False
With Application
.DisplayFormulaBar = False
.DisplayStatusBar = False
.ShowWindowsInTaskbar = False
End With
'Création des menus
Ajout_Menu
End Sub

'----------------------------------
Sub Ajout_Menu()

Application.CommandBars("Menu Diaporama").Controls.Add Type:= _
msoControlComboBox, ID:33, Before:=1, temporary:=True
Set newItem = Application.CommandBars("Menu Diaporama") _
.Controls.Add(Type:=msoControlPopup, Before:=1, temporary:=True)

With newItem
.BeginGroup = True
.Caption = "Quitter"
.OnAction = "Quitter"
End With
End Sub

'----------------------------------
Sub Quitter()
'Rétablissement des barres de menu et d'outils avant fermeture du fichier
ThisWorkbook.Close SaveChanges:úlse
End Sub
'----------------------------------


Salutations!
Avatar
Cervolent
Salut MitchDenis,
Après correction de ma macro rien n'y fait ... le plantage continu ...
Est-ce le fait que tu ai Excel 2003 qui fait que ça marche chez toi et moi
2002 ???

Je vais devoir me résoudre à créer un 2eme fichier, masqué, dans lequel sera
placé la macro quitter, lequel fichier de macro ne sera pas fermé lors de la
fermeture du fichier de travail !!!

Qu'estce que t'en penses ??? si j'envois le rapport à microsoft qu'est ce
qui se passe ... il résolve mon problème ou pas ????

Désolé d'insister je vois pas d'autre méthode ...

Merci pour ta patience MithcDenis

-----------------------------------------------

Bonjour Cervolent,

J'ai testé ta procédure avec excel 2003, ça fonctionne très bien.

Suggestion pour résoudre ton problème :

Cette section, tu dois la copier obligatoirement dans le ThisWorkbook de ton Classeur :
'--------------------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CommandBars("Worksheet Menu Bar").Enabled = True
Application.CommandBars("Standard").Visible = True
Application.CommandBars("Formatting").Visible = True
Application.CommandBars("Drawing").Visible = True
Application.CommandBars("Menu Diaporama").Delete
With Application
.DisplayFormulaBar = True
.DisplayStatusBar = True
.ShowWindowsInTaskbar = True
End With
End Sub
'--------------------------------------


Tout ce qui suit va dans un module standard :

'----------------------------------
Sub Auto_Open()

Application.ScreenUpdating = False
Application.CommandBars("Worksheet Menu Bar").Enabled = False
Application.CommandBars.Add(Name:="Menu Diaporama").Visible = True
Application.CommandBars("Menu Diaporama").Position = msoBarTop
Application.CommandBars("Standard").Visible = False
Application.CommandBars("Formatting").Visible = False
Application.CommandBars("Drawing").Visible = False
Application.CommandBars("Forms").Visible = False
Application.CommandBars("Picture").Visible = False
Application.CommandBars("Protection").Visible = False
Application.CommandBars("Reviewing").Visible = False
With Application
.DisplayFormulaBar = False
.DisplayStatusBar = False
.ShowWindowsInTaskbar = False
End With
'Création des menus
Ajout_Menu
End Sub

'----------------------------------
Sub Ajout_Menu()

Application.CommandBars("Menu Diaporama").Controls.Add Type:= _
msoControlComboBox, ID:33, Before:=1, temporary:=True
Set newItem = Application.CommandBars("Menu Diaporama") _
.Controls.Add(Type:=msoControlPopup, Before:=1, temporary:=True)

With newItem
.BeginGroup = True
.Caption = "Quitter"
.OnAction = "Quitter"
End With
End Sub

'----------------------------------
Sub Quitter()
'Rétablissement des barres de menu et d'outils avant fermeture du fichier
ThisWorkbook.Close SaveChanges:úlse
End Sub
'----------------------------------


Salutations!





Avatar
Cervolent
MitchDenis re salut,
Je penses éventuellement à une autre solution qui règlerait peut-être mon
problème.
Lors de l'Auto_Open je créé cette barre de menu ... j'aimerais tester sa
présence sur l'ordi ou elle s'exécute ... du style si elle n'existe pas alors
création ... sinon visible = true
Ensuite pour l'Auto_Close je la laisse dans le .XLB et ainsi lorsque
l'utilisateur réinsèrera le CD elle n'aura pas besoin d'être créée une
seconde fois.
Dans ce cas, peux-tu m'aider pour tester son existance ... STP ... cela
m'éviterais de créer un autre fichier macro ...

Aller dit moi Oui ... ;-)
Avatar
MichDenis
Bonjour Cervolent,

Je ne vois aucune raison pourquoi ta procédure fait planter ton application. Excel 2002 ou 2003, cela devrait tourner normalement.
As-tu essayé de copier ces procédures (seulement celles attachées à la gestion de tes barres d'outils) dans un fichier tout neuf ?

Est-ce que cela fonctionne ?


Salutations!



"Cervolent" a écrit dans le message de news:

Salut MitchDenis,
Après correction de ma macro rien n'y fait ... le plantage continu ...
Est-ce le fait que tu ai Excel 2003 qui fait que ça marche chez toi et moi
2002 ???

Je vais devoir me résoudre à créer un 2eme fichier, masqué, dans lequel sera
placé la macro quitter, lequel fichier de macro ne sera pas fermé lors de la
fermeture du fichier de travail !!!

Qu'estce que t'en penses ??? si j'envois le rapport à microsoft qu'est ce
qui se passe ... il résolve mon problème ou pas ????

Désolé d'insister je vois pas d'autre méthode ...

Merci pour ta patience MithcDenis

-----------------------------------------------

Bonjour Cervolent,

J'ai testé ta procédure avec excel 2003, ça fonctionne très bien.

Suggestion pour résoudre ton problème :

Cette section, tu dois la copier obligatoirement dans le ThisWorkbook de ton Classeur :
'--------------------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CommandBars("Worksheet Menu Bar").Enabled = True
Application.CommandBars("Standard").Visible = True
Application.CommandBars("Formatting").Visible = True
Application.CommandBars("Drawing").Visible = True
Application.CommandBars("Menu Diaporama").Delete
With Application
.DisplayFormulaBar = True
.DisplayStatusBar = True
.ShowWindowsInTaskbar = True
End With
End Sub
'--------------------------------------


Tout ce qui suit va dans un module standard :

'----------------------------------
Sub Auto_Open()

Application.ScreenUpdating = False
Application.CommandBars("Worksheet Menu Bar").Enabled = False
Application.CommandBars.Add(Name:="Menu Diaporama").Visible = True
Application.CommandBars("Menu Diaporama").Position = msoBarTop
Application.CommandBars("Standard").Visible = False
Application.CommandBars("Formatting").Visible = False
Application.CommandBars("Drawing").Visible = False
Application.CommandBars("Forms").Visible = False
Application.CommandBars("Picture").Visible = False
Application.CommandBars("Protection").Visible = False
Application.CommandBars("Reviewing").Visible = False
With Application
.DisplayFormulaBar = False
.DisplayStatusBar = False
.ShowWindowsInTaskbar = False
End With
'Création des menus
Ajout_Menu
End Sub

'----------------------------------
Sub Ajout_Menu()

Application.CommandBars("Menu Diaporama").Controls.Add Type:= _
msoControlComboBox, ID:33, Before:=1, temporary:=True
Set newItem = Application.CommandBars("Menu Diaporama") _
.Controls.Add(Type:=msoControlPopup, Before:=1, temporary:=True)

With newItem
.BeginGroup = True
.Caption = "Quitter"
.OnAction = "Quitter"
End With
End Sub

'----------------------------------
Sub Quitter()
'Rétablissement des barres de menu et d'outils avant fermeture du fichier
ThisWorkbook.Close SaveChanges:úlse
End Sub
'----------------------------------


Salutations!





Avatar
Cervolent

Bonjour Cervolent,

Je ne vois aucune raison pourquoi ta procédure fait planter ton application. Excel 2002 ou 2003, cela devrait tourner normalement.
As-tu essayé de copier ces procédures (seulement celles attachées à la gestion de tes barres d'outils) dans un fichier tout neuf ?

Est-ce que cela fonctionne ?


Salutations!



"Cervolent" a écrit dans le message de news:

Salut MitchDenis,
Après correction de ma macro rien n'y fait ... le plantage continu ...
Est-ce le fait que tu ai Excel 2003 qui fait que ça marche chez toi et moi
2002 ???

Je vais devoir me résoudre à créer un 2eme fichier, masqué, dans lequel sera
placé la macro quitter, lequel fichier de macro ne sera pas fermé lors de la
fermeture du fichier de travail !!!

Qu'estce que t'en penses ??? si j'envois le rapport à microsoft qu'est ce
qui se passe ... il résolve mon problème ou pas ????

Désolé d'insister je vois pas d'autre méthode ...

Merci pour ta patience MithcDenis

-----------------------------------------------

Bonjour Cervolent,

J'ai testé ta procédure avec excel 2003, ça fonctionne très bien.

Suggestion pour résoudre ton problème :

Cette section, tu dois la copier obligatoirement dans le ThisWorkbook de ton Classeur :
'--------------------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CommandBars("Worksheet Menu Bar").Enabled = True
Application.CommandBars("Standard").Visible = True
Application.CommandBars("Formatting").Visible = True
Application.CommandBars("Drawing").Visible = True
Application.CommandBars("Menu Diaporama").Delete
With Application
.DisplayFormulaBar = True
.DisplayStatusBar = True
.ShowWindowsInTaskbar = True
End With
End Sub
'--------------------------------------


Tout ce qui suit va dans un module standard :

'----------------------------------
Sub Auto_Open()

Application.ScreenUpdating = False
Application.CommandBars("Worksheet Menu Bar").Enabled = False
Application.CommandBars.Add(Name:="Menu Diaporama").Visible = True
Application.CommandBars("Menu Diaporama").Position = msoBarTop
Application.CommandBars("Standard").Visible = False
Application.CommandBars("Formatting").Visible = False
Application.CommandBars("Drawing").Visible = False
Application.CommandBars("Forms").Visible = False
Application.CommandBars("Picture").Visible = False
Application.CommandBars("Protection").Visible = False
Application.CommandBars("Reviewing").Visible = False
With Application
.DisplayFormulaBar = False
.DisplayStatusBar = False
.ShowWindowsInTaskbar = False
End With
'Création des menus
Ajout_Menu
End Sub

'----------------------------------
Sub Ajout_Menu()

Application.CommandBars("Menu Diaporama").Controls.Add Type:= _
msoControlComboBox, ID:33, Before:=1, temporary:=True
Set newItem = Application.CommandBars("Menu Diaporama") _
.Controls.Add(Type:=msoControlPopup, Before:=1, temporary:=True)

With newItem
.BeginGroup = True
.Caption = "Quitter"
.OnAction = "Quitter"
End With
End Sub

'----------------------------------
Sub Quitter()
'Rétablissement des barres de menu et d'outils avant fermeture du fichier
ThisWorkbook.Close SaveChanges:úlse
End Sub
'----------------------------------


Salutations!










Avatar
Cervolent
Re bonjour MitchDenis,

ça ne marche pas mieux, toujours cette erreur Excel, je vais faire comme je
le pensais dans l'autre fil, cad de créé la barre de menu à la première
utilisation puis pour les suivantes utilisations le test sur son existance
... pour la rendre visible et la masquer à la fermeture ....
Je te remercie quand même pour le temps que tu m'a consacré ... au plaisir
pour de nouvelles aventures ...


Bonjour Cervolent,

Je ne vois aucune raison pourquoi ta procédure fait planter ton application. Excel 2002 ou 2003, cela devrait tourner normalement.
As-tu essayé de copier ces procédures (seulement celles attachées à la gestion de tes barres d'outils) dans un fichier tout neuf ?

Est-ce que cela fonctionne ?


Salutations!



"Cervolent" a écrit dans le message de news:

Salut MitchDenis,
Après correction de ma macro rien n'y fait ... le plantage continu ...
Est-ce le fait que tu ai Excel 2003 qui fait que ça marche chez toi et moi
2002 ???

Je vais devoir me résoudre à créer un 2eme fichier, masqué, dans lequel sera
placé la macro quitter, lequel fichier de macro ne sera pas fermé lors de la
fermeture du fichier de travail !!!

Qu'estce que t'en penses ??? si j'envois le rapport à microsoft qu'est ce
qui se passe ... il résolve mon problème ou pas ????

Désolé d'insister je vois pas d'autre méthode ...

Merci pour ta patience MithcDenis

-----------------------------------------------

Bonjour Cervolent,

J'ai testé ta procédure avec excel 2003, ça fonctionne très bien.

Suggestion pour résoudre ton problème :

Cette section, tu dois la copier obligatoirement dans le ThisWorkbook de ton Classeur :
'--------------------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CommandBars("Worksheet Menu Bar").Enabled = True
Application.CommandBars("Standard").Visible = True
Application.CommandBars("Formatting").Visible = True
Application.CommandBars("Drawing").Visible = True
Application.CommandBars("Menu Diaporama").Delete
With Application
.DisplayFormulaBar = True
.DisplayStatusBar = True
.ShowWindowsInTaskbar = True
End With
End Sub
'--------------------------------------


Tout ce qui suit va dans un module standard :

'----------------------------------
Sub Auto_Open()

Application.ScreenUpdating = False
Application.CommandBars("Worksheet Menu Bar").Enabled = False
Application.CommandBars.Add(Name:="Menu Diaporama").Visible = True
Application.CommandBars("Menu Diaporama").Position = msoBarTop
Application.CommandBars("Standard").Visible = False
Application.CommandBars("Formatting").Visible = False
Application.CommandBars("Drawing").Visible = False
Application.CommandBars("Forms").Visible = False
Application.CommandBars("Picture").Visible = False
Application.CommandBars("Protection").Visible = False
Application.CommandBars("Reviewing").Visible = False
With Application
.DisplayFormulaBar = False
.DisplayStatusBar = False
.ShowWindowsInTaskbar = False
End With
'Création des menus
Ajout_Menu
End Sub

'----------------------------------
Sub Ajout_Menu()

Application.CommandBars("Menu Diaporama").Controls.Add Type:= _
msoControlComboBox, ID:33, Before:=1, temporary:=True
Set newItem = Application.CommandBars("Menu Diaporama") _
.Controls.Add(Type:=msoControlPopup, Before:=1, temporary:=True)

With newItem
.BeginGroup = True
.Caption = "Quitter"
.OnAction = "Quitter"
End With
End Sub

'----------------------------------
Sub Quitter()
'Rétablissement des barres de menu et d'outils avant fermeture du fichier
ThisWorkbook.Close SaveChanges:úlse
End Sub
'----------------------------------


Salutations!










Avatar
jps
appelle-le denis, cervolent : j'ai peur qu'à la longue tous ces mitch
finissent par l'énerver...
jps

"Cervolent" a écrit dans le message de
news:
Re bonjour MitchDenis,



1 2 3