si je veut enregistrer

P

petchy

Guest
Le Forum
voila j'ai mis se code dans mon appli ,j'ai repris se code dans une autre appli,mais quand je quitte il me demande si je veut enregistrer,
pour quitter je click sur XPBUTTON2

Private Sub XPButton2_Click()
ActiveWorkbook.Save
Application.Quit
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ScreenUpdating = False
With Application
.CommandBars(1).Enabled = True
.DisplayFullScreen = False
.DisplayFormulaBar = True
.DisplayStatusBar = True
.OnKey "%{F2}"
.OnKey "%{F4}"
.OnKey "%{F8}"
'.OnKey "%{F11}"
.OnKey "^{w}"
End With
Application.DisplayFullScreen = False
With ActiveWindow
.DisplayHorizontalScrollBar = True
.DisplayVerticalScrollBar = True
.DisplayWorkbookTabs = True
End With
Application.DisplayStatusBar = True
Application.DisplayFormulaBar = True
End Sub

Private Sub Workbook_Open()
UserForm10.Show
Application.WindowState = xlMaximized
With Application
.CommandBars(1).Enabled = False
.DisplayFullScreen = True
.DisplayStatusBar = True
.DisplayFormulaBar = False
.OnKey "%{F2}", ""
.OnKey "%{F4}", ""
.OnKey "%{F8}", ""
'.OnKey "%{F11}", "" 'enleve le ' si l'utilisateur ne dois pas entrer dans VBA
.OnKey "^w", ""
End With

With ActiveWindow
.DisplayHorizontalScrollBar = False 'A toi de voir si tu veux les scrolls met true à la place
.DisplayVerticalScrollBar = False 'A toi de voir si tu veux les scrolls met true à la place
.DisplayWorkbookTabs = False
End With
Application.DisplayStatusBar = True
Application.DisplayFormulaBar = False

Application.CommandBars("Full Screen").Visible = False

ActiveWindow.SmallScroll ToRight:=-100 ' ça c'est en plus,c'est pour tirer le scroll à gauche
ActiveWindow.SmallScroll Down:=-100 ' ça c'est en plus,c'est pour tirer le scroll en haut

Range("a1").Select
End Sub

ma question est:
pourquoi il me demande si je veut enregistrer.
 
@

@+Thierry

Guest
Salut Petchy, le Forum

IL te demande d'enregistrer car tu n'es pas logique... Mais je t'admets que la macro évènementielle "Workbook_BeforeClose" m'a déjà fait perdre mon latin, enfin mon VBA !!

Sans tester, c'est tout simple... Il veut sauver ce que tu lui demande de changer dans :

With ActiveWindow
.DisplayHorizontalScrollBar = False 'A toi de voir si tu veux les scrolls met true à la place
.DisplayVerticalScrollBar = False 'A toi de voir si tu veux les scrolls met true à la place
.DisplayWorkbookTabs = False
End With

Car c'est le classeur qui gère les "Ascenseurs" ou les "Onglets de feuille"...

Donc soit tu mets ces instruction dans ton "Private Sub XPButton2_Click" (avant "ActiveWorkbook.Save").... Soit tu les supprimes si non-necessaire.

Soit encore dans "Workbook_BeforeClose" tu peux lui faire croire que le classeur est déjà sauvé :
ThisWorkbook.Saved = True 'On fait croire que c'est sauvé... On finte !!


Ensuite sans tester, mais si tu fais des recherches avec @+Thierry + Application.Quit, tu devrais trouver une meilleure syntax et surtout un meilleur ordre d'enchènement d'évènements...

Ceci dit, je rejoint tout à fait l'avis de Ti (tout à fait Thierry), quand il dit qu'à vouloir faire des macros comme celle-ci on "emmerde" le User en lui fermant Excel même si il ne le veut pas.... Il est assez grand pour fermer son Excel tout seul !


Bonne Nuit
@+Thierry
 
@

@+Thierry

Guest
Bonjour Petchy, le Forum

Oui c'est un moyen de faire croire à VBA que le classeur a été déjà sauvé en plaçant cette instruction "ThisWorkbook.Saved = True"

Mais comme je disais c'est une finte, le classeur n'est pas sauvé et par conséquent, tes instructions pour ne pas afficher d'ascenseur et d'onglets de feuilles ne servent à rien puisque non-sauvée.

Bonne journée
@+Thierry
 

Statistiques des forums

Discussions
314 662
Messages
2 111 641
Membres
111 243
dernier inscrit
flo-99010