GNT sans publicité, site mobile, fonctionnalitées exclusives...

Macro AUTO_CLOSE attachée à un menu

Le
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
Lire les 21 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 5
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
AV
Le #2360591
Et si tu mettais "tes suppressions" dans le "Workbook_BeforeClose" ?

AV
MichDenis
Le #2359911
Bonjour Cervolent,

Ce qui se passe, c'est que ta procédure auto_Close s'exécute 2 fois.

Une première fois lorsque tu cliques sur le bouton "quitter" qui appelle directement cette procédure et comme dans cette procédure,
il y a une commande demandant à excel de se fermer, à l'exécution de cette commande, la macro Auto_close s'exécute à nouveau. Lors
de cette seconde exécution, il n'est pas étonnant que la macro ne trouve plus la barre de commande à supprimer puisque la premère
exécution l'a déjà supprimée. en conséquence, la macro se plante.

Ajoute au début de ta procédure qui détruit ta barre d'outils, la ligne de code suivante

On Error Resume Next


P.S. Il y a quelque chose qui t'empêche d'utiliser les événements prévus à cet effet :

'---------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
End Sub
'---------------

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


Salutations!



"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 ...
Cervolent
Le #2359791
Merci MichDenis, je sais pas si je m'y prend mal mais ça marche pas !!! Je te
joint les macros ci-dessous

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.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 Auto_Close()
'Rétablissement des barres de menu et d'outils avant fermeture du fichier
Workbooks("Construction_Proposition.XLS").Close SaveChanges:úlse
End Sub

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
MichDenis
Le #2407671
Bonjour Cervolent,

Pourquoi utilises "Sub Auto_Close()" et "Private Sub Workbook_BeforeClose(Cancel As Boolean)" ? Il me semble que la dernière
pourrait réunir tout le code et ce dans la même procédure.

Ta macro "Quitter" associée à ton bouton sur la barre de commande, elle est où ? Quelle est son code ? Où est son code ?

Suggestion : Tu places un point d'arrêt au tout début de la macro qu'exécute le bouton "Quitter" de ta barre d'outils et tu utilises
F8 (pas à pas) pour l'ensemble de ta macro... cela va te permettre de voir le déroulement de cette dernière et tu pourras identifier
la ligne de commande qui est problématique.

P.S. Je n'ai pas vu trace de ceci : "On Error Resume Next" suggéré lors de mon message précédent.



Salutations!





"Cervolent"
Merci MichDenis, je sais pas si je m'y prend mal mais ça marche pas !!! Je te
joint les macros ci-dessous

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.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 Auto_Close()
'Rétablissement des barres de menu et d'outils avant fermeture du fichier
Workbooks("Construction_Proposition.XLS").Close SaveChanges:úlse
End Sub

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
Cervolent
Le #2407511
Rebonjour Mitch
Ne soit pas désagréable Mitch ;-) le 2eme fil précisait justement quelques
modifs.
La macro exécutée par la commande Quitter est la macro "Quitter" je l'ai
renommée en lieu et place de "Auto_close" qui se trouve tout en bas. Elle
permet de fermer le fichier en cours. Si j'ai bien compris ce à quoi sert
WorkBook_BeforeClose : avant que le fichier ne se ferme les actions doivent
s'exécuter. Hors je fais bien l'exécution en pas à pas mais quand le fichier
se ferme, terminé plus d'affichage à l'écran pour visualiser
Workbook_BeforeClose.
De plus le plantage se fait en réel mais pas en pas à pas.

Alors qu'est ce t'en dit ;-(

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.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, emporary:=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
Workbooks("Construction_Proposition.XLS").Close SaveChanges:úlse
End Sub

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
Publicité
Suivre les réponses
Poster une réponse
Anonyme