ça, je ne comprends pas... est-ce vraiment important ?
Oui, c'est primordial outre la question posée, la réponse obtenue
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
....depuis le précédent
Bonjour LSteph,
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
ça, je ne comprends pas... est-ce vraiment important ?
*-------------------
j'ai modifié
indiqué ' ' ' ici
*-------------------
Salutations!
"LSteph" a écrit dans le message de news:
Re, bonjour,
le truc qui clochait est résolu
je ne sais si c'est optimal mais voici ainsi, ce queprincipalement dans
le beforeSave
Juste une question pas compris :
If Me.Saved = False Or Me.Saved = True
Encore un grand Merci pour ton aide très précieuse
m'en sortais pas!
Bonne journée
lSteph
Private Sub Workbook_Activate()
Application.EnableEvents = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
If ThisWorkbook.Saved = False Then
res = MsgBox("Désirez-vous enregistrer les modifications apportées au
classeur " & _
ThisWorkbook.Name & " ?", vbInformation + vbYesNoCancel)
Select Case res
Case vbYes
Application.EnableEvents = False '''
Me.Save
Application.EnableEvents = True '''
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim A As String
Dim S As String
Dim SavN '''ici
S = Application.EnableCancelKey
Application.EnableCancelKey = xlDisabled
If Me.Saved = False Or Me.Saved = True Then
Application.ScreenUpdating = False
A = ActiveSheet.Name
With Feuil1
.Visible = True
.Select
End With
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = xlVeryHidden
End If
Next
Application.EnableEvents = False
If SaveAsUI Then ''' d'ici
SavN = Application.GetSaveAsFilename
If SavN <> False Then
Me.SaveAs SavN
End If
Else
Me.Save
End If ''à là
Application.EnableEvents = True
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Sheets(A).Select
Feuil1.Visible = xlVeryHidden
Application.EnableCancelKey = S
Me.Saved = True
End If
Cancel = True
End Sub
Private Sub Workbook_Open()
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Feuil1.Visible = xlVeryHidden
ThisWorkbook.Saved = True
End Sub
ça, je ne comprends pas... est-ce vraiment important ?
Oui, c'est primordial outre la question posée, la réponse obtenue
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
....depuis le précédent
Bonjour LSteph,
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
ça, je ne comprends pas... est-ce vraiment important ?
*-------------------
j'ai modifié
indiqué ' ' ' ici
*-------------------
Salutations!
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
eT5hOyWoFHA.3552@TK2MSFTNGP10.phx.gbl...
Re, bonjour,
le truc qui clochait est résolu
je ne sais si c'est optimal mais voici ainsi, ce queprincipalement dans
le beforeSave
Juste une question pas compris :
If Me.Saved = False Or Me.Saved = True
Encore un grand Merci pour ton aide très précieuse
m'en sortais pas!
Bonne journée
lSteph
Private Sub Workbook_Activate()
Application.EnableEvents = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
If ThisWorkbook.Saved = False Then
res = MsgBox("Désirez-vous enregistrer les modifications apportées au
classeur " & _
ThisWorkbook.Name & " ?", vbInformation + vbYesNoCancel)
Select Case res
Case vbYes
Application.EnableEvents = False '''
Me.Save
Application.EnableEvents = True '''
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim A As String
Dim S As String
Dim SavN '''ici
S = Application.EnableCancelKey
Application.EnableCancelKey = xlDisabled
If Me.Saved = False Or Me.Saved = True Then
Application.ScreenUpdating = False
A = ActiveSheet.Name
With Feuil1
.Visible = True
.Select
End With
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = xlVeryHidden
End If
Next
Application.EnableEvents = False
If SaveAsUI Then ''' d'ici
SavN = Application.GetSaveAsFilename
If SavN <> False Then
Me.SaveAs SavN
End If
Else
Me.Save
End If ''à là
Application.EnableEvents = True
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Sheets(A).Select
Feuil1.Visible = xlVeryHidden
Application.EnableCancelKey = S
Me.Saved = True
End If
Cancel = True
End Sub
Private Sub Workbook_Open()
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Feuil1.Visible = xlVeryHidden
ThisWorkbook.Saved = True
End Sub
ça, je ne comprends pas... est-ce vraiment important ?
Oui, c'est primordial outre la question posée, la réponse obtenue
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
....depuis le précédent
Bonjour LSteph,
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
ça, je ne comprends pas... est-ce vraiment important ?
*-------------------
j'ai modifié
indiqué ' ' ' ici
*-------------------
Salutations!
"LSteph" a écrit dans le message de news:
Re, bonjour,
le truc qui clochait est résolu
je ne sais si c'est optimal mais voici ainsi, ce queprincipalement dans
le beforeSave
Juste une question pas compris :
If Me.Saved = False Or Me.Saved = True
Encore un grand Merci pour ton aide très précieuse
m'en sortais pas!
Bonne journée
lSteph
Private Sub Workbook_Activate()
Application.EnableEvents = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
If ThisWorkbook.Saved = False Then
res = MsgBox("Désirez-vous enregistrer les modifications apportées au
classeur " & _
ThisWorkbook.Name & " ?", vbInformation + vbYesNoCancel)
Select Case res
Case vbYes
Application.EnableEvents = False '''
Me.Save
Application.EnableEvents = True '''
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim A As String
Dim S As String
Dim SavN '''ici
S = Application.EnableCancelKey
Application.EnableCancelKey = xlDisabled
If Me.Saved = False Or Me.Saved = True Then
Application.ScreenUpdating = False
A = ActiveSheet.Name
With Feuil1
.Visible = True
.Select
End With
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = xlVeryHidden
End If
Next
Application.EnableEvents = False
If SaveAsUI Then ''' d'ici
SavN = Application.GetSaveAsFilename
If SavN <> False Then
Me.SaveAs SavN
End If
Else
Me.Save
End If ''à là
Application.EnableEvents = True
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Sheets(A).Select
Feuil1.Visible = xlVeryHidden
Application.EnableCancelKey = S
Me.Saved = True
End If
Cancel = True
End Sub
Private Sub Workbook_Open()
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Feuil1.Visible = xlVeryHidden
ThisWorkbook.Saved = True
End Sub
Bonjour Le Steph,
Comme je n'ai pas retenu dans la version finale, l'objet de ta
préoccupation... je ne vois pas l'intérêt à commenter si ce n'est
pour dire qu'il n'est pas toujours évident de composer avec toutes les
situations qui pourraient arriver et d'inclure dans la
procédure une parade à cet effet ...pour faire cela dans certains cas,
cela demande beaucoup de tests (temps) ... et cela je crois
que le demandeur de la question peut les faire et d'adapter le code au
besoin.
Si tu trouves des défauts à la version finale, fais moi parvenir la parade
... pas les défauts ...;-)
Salutations!
"LSteph" a écrit dans le message de news:
%
Re, bonjour,
:o)ça, je ne comprends pas... est-ce vraiment important ?
Oui, c'est primordial outre la question posée, la réponse obtenue
est un support à la réflexion surtout compte tenu de la qualité de tes
contributions.
Pour exemple, je retiens que:
- l'utilisateur pourrait provoquer un break .enablecancelkey
-renommer la feuille > If sh.Name <> Feuil1.Name Then
...etc...
ou bien :
Si tu parles du If .saved true or false , juste que j'ai pas pigé le but
,
sans doute des tests consécutifs ont laissé ceci en l'état,
mais peut être si c'est sur le précédent code que tu m'as proposé et qui
résolvait pourtant déjà beaucoup de choses
il subsistait que par le Menu Fichier Fermer on déclanchait le message
"voulez vous ..? mais n'enregistrait pas
Application.EnableEvents = False avant le me.save du beforeclose a résolu
ce
pb
de même le enregistrer sous ne s'affichait pas , le fait d'ajouter le cas
de
saveasui a résolu cela aussi.
Sinon (ou encore) tu me questionnais sur le but::
Pouvoir distribuer tout classeur sécurisé contenant des macros, à des
utilisateurs peu expérimentés
qui risquent de ne pas activer des macros et fonctions nécessaires au
classeur pour fonctionner parce que le message raconte les risques ....
En tout cas merci beaucoup pour ton aide efficace et pédagogique, j'ai
enfin
compris comment utiliser cancel et saveasui.Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
....depuis le précédent
:o))
tu fais bien d'ajouter réellement car je m'en vais étudier pourquoi celui
que je proposais
ne l'est pas autant.
Mais cela aussi, c'est pour me faire avancer ...
Encore Merci !
lSteph
"michdenis" a écrit dans le message de news:
%Bonjour LSteph,
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
ça, je ne comprends pas... est-ce vraiment important ?
*-------------------
j'ai modifié
indiqué ' ' ' ici
*-------------------
Salutations!
"LSteph" a écrit dans le message de news:
Re, bonjour,
le truc qui clochait est résolu
je ne sais si c'est optimal mais voici ainsi, ce queprincipalement dans
le beforeSave
Juste une question pas compris :
If Me.Saved = False Or Me.Saved = True
Encore un grand Merci pour ton aide très précieuse
m'en sortais pas!
Bonne journée
lSteph
Private Sub Workbook_Activate()
Application.EnableEvents = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
If ThisWorkbook.Saved = False Then
res = MsgBox("Désirez-vous enregistrer les modifications apportées au
classeur " & _
ThisWorkbook.Name & " ?", vbInformation + vbYesNoCancel)
Select Case res
Case vbYes
Application.EnableEvents = False '''
Me.Save
Application.EnableEvents = True '''
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim A As String
Dim S As String
Dim SavN '''ici
S = Application.EnableCancelKey
Application.EnableCancelKey = xlDisabled
If Me.Saved = False Or Me.Saved = True Then
Application.ScreenUpdating = False
A = ActiveSheet.Name
With Feuil1
.Visible = True
.Select
End With
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = xlVeryHidden
End If
Next
Application.EnableEvents = False
If SaveAsUI Then ''' d'ici
SavN = Application.GetSaveAsFilename
If SavN <> False Then
Me.SaveAs SavN
End If
Else
Me.Save
End If ''à là
Application.EnableEvents = True
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Sheets(A).Select
Feuil1.Visible = xlVeryHidden
Application.EnableCancelKey = S
Me.Saved = True
End If
Cancel = True
End Sub
Private Sub Workbook_Open()
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Feuil1.Visible = xlVeryHidden
ThisWorkbook.Saved = True
End Sub
Bonjour Le Steph,
Comme je n'ai pas retenu dans la version finale, l'objet de ta
préoccupation... je ne vois pas l'intérêt à commenter si ce n'est
pour dire qu'il n'est pas toujours évident de composer avec toutes les
situations qui pourraient arriver et d'inclure dans la
procédure une parade à cet effet ...pour faire cela dans certains cas,
cela demande beaucoup de tests (temps) ... et cela je crois
que le demandeur de la question peut les faire et d'adapter le code au
besoin.
Si tu trouves des défauts à la version finale, fais moi parvenir la parade
... pas les défauts ...;-)
Salutations!
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
%23TGxC4ZoFHA.320@TK2MSFTNGP09.phx.gbl...
Re, bonjour,
:o)
ça, je ne comprends pas... est-ce vraiment important ?
Oui, c'est primordial outre la question posée, la réponse obtenue
est un support à la réflexion surtout compte tenu de la qualité de tes
contributions.
Pour exemple, je retiens que:
- l'utilisateur pourrait provoquer un break .enablecancelkey
-renommer la feuille > If sh.Name <> Feuil1.Name Then
...etc...
ou bien :
Si tu parles du If .saved true or false , juste que j'ai pas pigé le but
,
sans doute des tests consécutifs ont laissé ceci en l'état,
mais peut être si c'est sur le précédent code que tu m'as proposé et qui
résolvait pourtant déjà beaucoup de choses
il subsistait que par le Menu Fichier Fermer on déclanchait le message
"voulez vous ..? mais n'enregistrait pas
Application.EnableEvents = False avant le me.save du beforeclose a résolu
ce
pb
de même le enregistrer sous ne s'affichait pas , le fait d'ajouter le cas
de
saveasui a résolu cela aussi.
Sinon (ou encore) tu me questionnais sur le but::
Pouvoir distribuer tout classeur sécurisé contenant des macros, à des
utilisateurs peu expérimentés
qui risquent de ne pas activer des macros et fonctions nécessaires au
classeur pour fonctionner parce que le message raconte les risques ....
En tout cas merci beaucoup pour ton aide efficace et pédagogique, j'ai
enfin
compris comment utiliser cancel et saveasui.
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
....depuis le précédent
:o))
tu fais bien d'ajouter réellement car je m'en vais étudier pourquoi celui
que je proposais
ne l'est pas autant.
Mais cela aussi, c'est pour me faire avancer ...
Encore Merci !
lSteph
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23BKMyqYoFHA.3068@TK2MSFTNGP15.phx.gbl...
Bonjour LSteph,
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
ça, je ne comprends pas... est-ce vraiment important ?
*-------------------
j'ai modifié
indiqué ' ' ' ici
*-------------------
Salutations!
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
eT5hOyWoFHA.3552@TK2MSFTNGP10.phx.gbl...
Re, bonjour,
le truc qui clochait est résolu
je ne sais si c'est optimal mais voici ainsi, ce queprincipalement dans
le beforeSave
Juste une question pas compris :
If Me.Saved = False Or Me.Saved = True
Encore un grand Merci pour ton aide très précieuse
m'en sortais pas!
Bonne journée
lSteph
Private Sub Workbook_Activate()
Application.EnableEvents = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
If ThisWorkbook.Saved = False Then
res = MsgBox("Désirez-vous enregistrer les modifications apportées au
classeur " & _
ThisWorkbook.Name & " ?", vbInformation + vbYesNoCancel)
Select Case res
Case vbYes
Application.EnableEvents = False '''
Me.Save
Application.EnableEvents = True '''
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim A As String
Dim S As String
Dim SavN '''ici
S = Application.EnableCancelKey
Application.EnableCancelKey = xlDisabled
If Me.Saved = False Or Me.Saved = True Then
Application.ScreenUpdating = False
A = ActiveSheet.Name
With Feuil1
.Visible = True
.Select
End With
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = xlVeryHidden
End If
Next
Application.EnableEvents = False
If SaveAsUI Then ''' d'ici
SavN = Application.GetSaveAsFilename
If SavN <> False Then
Me.SaveAs SavN
End If
Else
Me.Save
End If ''à là
Application.EnableEvents = True
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Sheets(A).Select
Feuil1.Visible = xlVeryHidden
Application.EnableCancelKey = S
Me.Saved = True
End If
Cancel = True
End Sub
Private Sub Workbook_Open()
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Feuil1.Visible = xlVeryHidden
ThisWorkbook.Saved = True
End Sub
Bonjour Le Steph,
Comme je n'ai pas retenu dans la version finale, l'objet de ta
préoccupation... je ne vois pas l'intérêt à commenter si ce n'est
pour dire qu'il n'est pas toujours évident de composer avec toutes les
situations qui pourraient arriver et d'inclure dans la
procédure une parade à cet effet ...pour faire cela dans certains cas,
cela demande beaucoup de tests (temps) ... et cela je crois
que le demandeur de la question peut les faire et d'adapter le code au
besoin.
Si tu trouves des défauts à la version finale, fais moi parvenir la parade
... pas les défauts ...;-)
Salutations!
"LSteph" a écrit dans le message de news:
%
Re, bonjour,
:o)ça, je ne comprends pas... est-ce vraiment important ?
Oui, c'est primordial outre la question posée, la réponse obtenue
est un support à la réflexion surtout compte tenu de la qualité de tes
contributions.
Pour exemple, je retiens que:
- l'utilisateur pourrait provoquer un break .enablecancelkey
-renommer la feuille > If sh.Name <> Feuil1.Name Then
...etc...
ou bien :
Si tu parles du If .saved true or false , juste que j'ai pas pigé le but
,
sans doute des tests consécutifs ont laissé ceci en l'état,
mais peut être si c'est sur le précédent code que tu m'as proposé et qui
résolvait pourtant déjà beaucoup de choses
il subsistait que par le Menu Fichier Fermer on déclanchait le message
"voulez vous ..? mais n'enregistrait pas
Application.EnableEvents = False avant le me.save du beforeclose a résolu
ce
pb
de même le enregistrer sous ne s'affichait pas , le fait d'ajouter le cas
de
saveasui a résolu cela aussi.
Sinon (ou encore) tu me questionnais sur le but::
Pouvoir distribuer tout classeur sécurisé contenant des macros, à des
utilisateurs peu expérimentés
qui risquent de ne pas activer des macros et fonctions nécessaires au
classeur pour fonctionner parce que le message raconte les risques ....
En tout cas merci beaucoup pour ton aide efficace et pédagogique, j'ai
enfin
compris comment utiliser cancel et saveasui.Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
....depuis le précédent
:o))
tu fais bien d'ajouter réellement car je m'en vais étudier pourquoi celui
que je proposais
ne l'est pas autant.
Mais cela aussi, c'est pour me faire avancer ...
Encore Merci !
lSteph
"michdenis" a écrit dans le message de news:
%Bonjour LSteph,
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
ça, je ne comprends pas... est-ce vraiment important ?
*-------------------
j'ai modifié
indiqué ' ' ' ici
*-------------------
Salutations!
"LSteph" a écrit dans le message de news:
Re, bonjour,
le truc qui clochait est résolu
je ne sais si c'est optimal mais voici ainsi, ce queprincipalement dans
le beforeSave
Juste une question pas compris :
If Me.Saved = False Or Me.Saved = True
Encore un grand Merci pour ton aide très précieuse
m'en sortais pas!
Bonne journée
lSteph
Private Sub Workbook_Activate()
Application.EnableEvents = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
If ThisWorkbook.Saved = False Then
res = MsgBox("Désirez-vous enregistrer les modifications apportées au
classeur " & _
ThisWorkbook.Name & " ?", vbInformation + vbYesNoCancel)
Select Case res
Case vbYes
Application.EnableEvents = False '''
Me.Save
Application.EnableEvents = True '''
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim A As String
Dim S As String
Dim SavN '''ici
S = Application.EnableCancelKey
Application.EnableCancelKey = xlDisabled
If Me.Saved = False Or Me.Saved = True Then
Application.ScreenUpdating = False
A = ActiveSheet.Name
With Feuil1
.Visible = True
.Select
End With
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = xlVeryHidden
End If
Next
Application.EnableEvents = False
If SaveAsUI Then ''' d'ici
SavN = Application.GetSaveAsFilename
If SavN <> False Then
Me.SaveAs SavN
End If
Else
Me.Save
End If ''à là
Application.EnableEvents = True
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Sheets(A).Select
Feuil1.Visible = xlVeryHidden
Application.EnableCancelKey = S
Me.Saved = True
End If
Cancel = True
End Sub
Private Sub Workbook_Open()
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Feuil1.Visible = xlVeryHidden
ThisWorkbook.Saved = True
End Sub
Bonjour Le Steph,
Comme je n'ai pas retenu dans la version finale, l'objet de ta
préoccupation... je ne vois pas l'intérêt à commenter si ce n'est
pour dire qu'il n'est pas toujours évident de composer avec toutes les
situations qui pourraient arriver et d'inclure dans la
procédure une parade à cet effet ...pour faire cela dans certains cas,
cela demande beaucoup de tests (temps) ... et cela je crois
que le demandeur de la question peut les faire et d'adapter le code au
besoin.
Si tu trouves des défauts à la version finale, fais moi parvenir la parade
... pas les défauts ...;-)
Salutations!
"LSteph" a écrit dans le message de news:
%
Re, bonjour,
:o)ça, je ne comprends pas... est-ce vraiment important ?
Oui, c'est primordial outre la question posée, la réponse obtenue
est un support à la réflexion surtout compte tenu de la qualité de tes
contributions.
Pour exemple, je retiens que:
- l'utilisateur pourrait provoquer un break .enablecancelkey
-renommer la feuille > If sh.Name <> Feuil1.Name Then
...etc...
ou bien :
Si tu parles du If .saved true or false , juste que j'ai pas pigé le but
,
sans doute des tests consécutifs ont laissé ceci en l'état,
mais peut être si c'est sur le précédent code que tu m'as proposé et qui
résolvait pourtant déjà beaucoup de choses
il subsistait que par le Menu Fichier Fermer on déclanchait le message
"voulez vous ..? mais n'enregistrait pas
Application.EnableEvents = False avant le me.save du beforeclose a résolu
ce
pb
de même le enregistrer sous ne s'affichait pas , le fait d'ajouter le cas
de
saveasui a résolu cela aussi.
Sinon (ou encore) tu me questionnais sur le but::
Pouvoir distribuer tout classeur sécurisé contenant des macros, à des
utilisateurs peu expérimentés
qui risquent de ne pas activer des macros et fonctions nécessaires au
classeur pour fonctionner parce que le message raconte les risques ....
En tout cas merci beaucoup pour ton aide efficace et pédagogique, j'ai
enfin
compris comment utiliser cancel et saveasui.Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
....depuis le précédent
:o))
tu fais bien d'ajouter réellement car je m'en vais étudier pourquoi celui
que je proposais
ne l'est pas autant.
Mais cela aussi, c'est pour me faire avancer ...
Encore Merci !
lSteph
"michdenis" a écrit dans le message de news:
%Bonjour LSteph,
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
ça, je ne comprends pas... est-ce vraiment important ?
*-------------------
j'ai modifié
indiqué ' ' ' ici
*-------------------
Salutations!
"LSteph" a écrit dans le message de news:
Re, bonjour,
le truc qui clochait est résolu
je ne sais si c'est optimal mais voici ainsi, ce queprincipalement dans
le beforeSave
Juste une question pas compris :
If Me.Saved = False Or Me.Saved = True
Encore un grand Merci pour ton aide très précieuse
m'en sortais pas!
Bonne journée
lSteph
Private Sub Workbook_Activate()
Application.EnableEvents = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
If ThisWorkbook.Saved = False Then
res = MsgBox("Désirez-vous enregistrer les modifications apportées au
classeur " & _
ThisWorkbook.Name & " ?", vbInformation + vbYesNoCancel)
Select Case res
Case vbYes
Application.EnableEvents = False '''
Me.Save
Application.EnableEvents = True '''
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim A As String
Dim S As String
Dim SavN '''ici
S = Application.EnableCancelKey
Application.EnableCancelKey = xlDisabled
If Me.Saved = False Or Me.Saved = True Then
Application.ScreenUpdating = False
A = ActiveSheet.Name
With Feuil1
.Visible = True
.Select
End With
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = xlVeryHidden
End If
Next
Application.EnableEvents = False
If SaveAsUI Then ''' d'ici
SavN = Application.GetSaveAsFilename
If SavN <> False Then
Me.SaveAs SavN
End If
Else
Me.Save
End If ''à là
Application.EnableEvents = True
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Sheets(A).Select
Feuil1.Visible = xlVeryHidden
Application.EnableCancelKey = S
Me.Saved = True
End If
Cancel = True
End Sub
Private Sub Workbook_Open()
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Feuil1.Visible = xlVeryHidden
ThisWorkbook.Saved = True
End Sub
Bonjour Le Steph,
Comme je n'ai pas retenu dans la version finale, l'objet de ta
préoccupation... je ne vois pas l'intérêt à commenter si ce n'est
pour dire qu'il n'est pas toujours évident de composer avec toutes les
situations qui pourraient arriver et d'inclure dans la
procédure une parade à cet effet ...pour faire cela dans certains cas,
cela demande beaucoup de tests (temps) ... et cela je crois
que le demandeur de la question peut les faire et d'adapter le code au
besoin.
Si tu trouves des défauts à la version finale, fais moi parvenir la parade
... pas les défauts ...;-)
Salutations!
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
%23TGxC4ZoFHA.320@TK2MSFTNGP09.phx.gbl...
Re, bonjour,
:o)
ça, je ne comprends pas... est-ce vraiment important ?
Oui, c'est primordial outre la question posée, la réponse obtenue
est un support à la réflexion surtout compte tenu de la qualité de tes
contributions.
Pour exemple, je retiens que:
- l'utilisateur pourrait provoquer un break .enablecancelkey
-renommer la feuille > If sh.Name <> Feuil1.Name Then
...etc...
ou bien :
Si tu parles du If .saved true or false , juste que j'ai pas pigé le but
,
sans doute des tests consécutifs ont laissé ceci en l'état,
mais peut être si c'est sur le précédent code que tu m'as proposé et qui
résolvait pourtant déjà beaucoup de choses
il subsistait que par le Menu Fichier Fermer on déclanchait le message
"voulez vous ..? mais n'enregistrait pas
Application.EnableEvents = False avant le me.save du beforeclose a résolu
ce
pb
de même le enregistrer sous ne s'affichait pas , le fait d'ajouter le cas
de
saveasui a résolu cela aussi.
Sinon (ou encore) tu me questionnais sur le but::
Pouvoir distribuer tout classeur sécurisé contenant des macros, à des
utilisateurs peu expérimentés
qui risquent de ne pas activer des macros et fonctions nécessaires au
classeur pour fonctionner parce que le message raconte les risques ....
En tout cas merci beaucoup pour ton aide efficace et pédagogique, j'ai
enfin
compris comment utiliser cancel et saveasui.
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
....depuis le précédent
:o))
tu fais bien d'ajouter réellement car je m'en vais étudier pourquoi celui
que je proposais
ne l'est pas autant.
Mais cela aussi, c'est pour me faire avancer ...
Encore Merci !
lSteph
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23BKMyqYoFHA.3068@TK2MSFTNGP15.phx.gbl...
Bonjour LSteph,
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
ça, je ne comprends pas... est-ce vraiment important ?
*-------------------
j'ai modifié
indiqué ' ' ' ici
*-------------------
Salutations!
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
eT5hOyWoFHA.3552@TK2MSFTNGP10.phx.gbl...
Re, bonjour,
le truc qui clochait est résolu
je ne sais si c'est optimal mais voici ainsi, ce queprincipalement dans
le beforeSave
Juste une question pas compris :
If Me.Saved = False Or Me.Saved = True
Encore un grand Merci pour ton aide très précieuse
m'en sortais pas!
Bonne journée
lSteph
Private Sub Workbook_Activate()
Application.EnableEvents = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
If ThisWorkbook.Saved = False Then
res = MsgBox("Désirez-vous enregistrer les modifications apportées au
classeur " & _
ThisWorkbook.Name & " ?", vbInformation + vbYesNoCancel)
Select Case res
Case vbYes
Application.EnableEvents = False '''
Me.Save
Application.EnableEvents = True '''
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim A As String
Dim S As String
Dim SavN '''ici
S = Application.EnableCancelKey
Application.EnableCancelKey = xlDisabled
If Me.Saved = False Or Me.Saved = True Then
Application.ScreenUpdating = False
A = ActiveSheet.Name
With Feuil1
.Visible = True
.Select
End With
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = xlVeryHidden
End If
Next
Application.EnableEvents = False
If SaveAsUI Then ''' d'ici
SavN = Application.GetSaveAsFilename
If SavN <> False Then
Me.SaveAs SavN
End If
Else
Me.Save
End If ''à là
Application.EnableEvents = True
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Sheets(A).Select
Feuil1.Visible = xlVeryHidden
Application.EnableCancelKey = S
Me.Saved = True
End If
Cancel = True
End Sub
Private Sub Workbook_Open()
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Feuil1.Visible = xlVeryHidden
ThisWorkbook.Saved = True
End Sub
Bonjour Le Steph,
Comme je n'ai pas retenu dans la version finale, l'objet de ta
préoccupation... je ne vois pas l'intérêt à commenter si ce n'est
pour dire qu'il n'est pas toujours évident de composer avec toutes les
situations qui pourraient arriver et d'inclure dans la
procédure une parade à cet effet ...pour faire cela dans certains cas,
cela demande beaucoup de tests (temps) ... et cela je crois
que le demandeur de la question peut les faire et d'adapter le code au
besoin.
Si tu trouves des défauts à la version finale, fais moi parvenir la parade
... pas les défauts ...;-)
Salutations!
"LSteph" a écrit dans le message de news:
%
Re, bonjour,
:o)ça, je ne comprends pas... est-ce vraiment important ?
Oui, c'est primordial outre la question posée, la réponse obtenue
est un support à la réflexion surtout compte tenu de la qualité de tes
contributions.
Pour exemple, je retiens que:
- l'utilisateur pourrait provoquer un break .enablecancelkey
-renommer la feuille > If sh.Name <> Feuil1.Name Then
...etc...
ou bien :
Si tu parles du If .saved true or false , juste que j'ai pas pigé le but
,
sans doute des tests consécutifs ont laissé ceci en l'état,
mais peut être si c'est sur le précédent code que tu m'as proposé et qui
résolvait pourtant déjà beaucoup de choses
il subsistait que par le Menu Fichier Fermer on déclanchait le message
"voulez vous ..? mais n'enregistrait pas
Application.EnableEvents = False avant le me.save du beforeclose a résolu
ce
pb
de même le enregistrer sous ne s'affichait pas , le fait d'ajouter le cas
de
saveasui a résolu cela aussi.
Sinon (ou encore) tu me questionnais sur le but::
Pouvoir distribuer tout classeur sécurisé contenant des macros, à des
utilisateurs peu expérimentés
qui risquent de ne pas activer des macros et fonctions nécessaires au
classeur pour fonctionner parce que le message raconte les risques ....
En tout cas merci beaucoup pour ton aide efficace et pédagogique, j'ai
enfin
compris comment utiliser cancel et saveasui.Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
....depuis le précédent
:o))
tu fais bien d'ajouter réellement car je m'en vais étudier pourquoi celui
que je proposais
ne l'est pas autant.
Mais cela aussi, c'est pour me faire avancer ...
Encore Merci !
lSteph
"michdenis" a écrit dans le message de news:
%Bonjour LSteph,
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
ça, je ne comprends pas... est-ce vraiment important ?
*-------------------
j'ai modifié
indiqué ' ' ' ici
*-------------------
Salutations!
"LSteph" a écrit dans le message de news:
Re, bonjour,
le truc qui clochait est résolu
je ne sais si c'est optimal mais voici ainsi, ce queprincipalement dans
le beforeSave
Juste une question pas compris :
If Me.Saved = False Or Me.Saved = True
Encore un grand Merci pour ton aide très précieuse
m'en sortais pas!
Bonne journée
lSteph
Private Sub Workbook_Activate()
Application.EnableEvents = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
If ThisWorkbook.Saved = False Then
res = MsgBox("Désirez-vous enregistrer les modifications apportées au
classeur " & _
ThisWorkbook.Name & " ?", vbInformation + vbYesNoCancel)
Select Case res
Case vbYes
Application.EnableEvents = False '''
Me.Save
Application.EnableEvents = True '''
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim A As String
Dim S As String
Dim SavN '''ici
S = Application.EnableCancelKey
Application.EnableCancelKey = xlDisabled
If Me.Saved = False Or Me.Saved = True Then
Application.ScreenUpdating = False
A = ActiveSheet.Name
With Feuil1
.Visible = True
.Select
End With
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = xlVeryHidden
End If
Next
Application.EnableEvents = False
If SaveAsUI Then ''' d'ici
SavN = Application.GetSaveAsFilename
If SavN <> False Then
Me.SaveAs SavN
End If
Else
Me.Save
End If ''à là
Application.EnableEvents = True
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Sheets(A).Select
Feuil1.Visible = xlVeryHidden
Application.EnableCancelKey = S
Me.Saved = True
End If
Cancel = True
End Sub
Private Sub Workbook_Open()
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Feuil1.Visible = xlVeryHidden
ThisWorkbook.Saved = True
End Sub
Pouvoir distribuer tout classeur sécurisé contenant des macros, à des
utilisateurs peu expérimentés
qui risquent de ne pas activer des macros et fonctions nécessaires
Et la preuve qu'on peut se faire avoir (se laisser distraire) par certains
tests, tu peux dans la version finale du fichier, enlever
la petite procédure bidon "ActiverEvents" et sa référence dans la
procédure événementielle "BeforeClose" ... c'est de la roupe de
sansonnet ! Comme l'onglet Feuil1 correspond enfin à la feuil4 dans la
fenêtre VBE, je me suis mépris moi-même lorsque j'ai effectué
un petit test en utilisant les subs événementielles de cette feuille
module pour m'assurer que les procédures événementielles
n'avaient pas été désactivées. Sans faire attention, j'ai conclu par
l'affirmative alors qu'il n'en était rien.
Voilà pour la petite histoire et ma petite jambe ! ;-))
Salutations!
"LSteph" a écrit dans le message de news:
???....
Non, pourquoi quels défauts? C'est parfait
sur l'objectif ou préoccupation je répondais à ta question et pour le
reste
je te faisais part des points sur lesquels grâce à ton aide j'avais pu de
mon côté avancer..
;-)) pour les parades, précisément tu en trouves, là où je n'avais même
pas
vu que j'avais un souci,
alors j'espère bien te trouver à nouveau par là si l'occasion se présente
...encore merci!
lSteph
"michdenis" a écrit dans le message de news:Bonjour Le Steph,
Comme je n'ai pas retenu dans la version finale, l'objet de ta
préoccupation... je ne vois pas l'intérêt à commenter si ce n'est
pour dire qu'il n'est pas toujours évident de composer avec toutes les
situations qui pourraient arriver et d'inclure dans la
procédure une parade à cet effet ...pour faire cela dans certains cas,
cela demande beaucoup de tests (temps) ... et cela je crois
que le demandeur de la question peut les faire et d'adapter le code au
besoin.
Si tu trouves des défauts à la version finale, fais moi parvenir la
parade
... pas les défauts ...;-)
Salutations!
"LSteph" a écrit dans le message de news:
%
Re, bonjour,
:o)ça, je ne comprends pas... est-ce vraiment important ?
Oui, c'est primordial outre la question posée, la réponse obtenue
est un support à la réflexion surtout compte tenu de la qualité de tes
contributions.
Pour exemple, je retiens que:
- l'utilisateur pourrait provoquer un break .enablecancelkey
-renommer la feuille > If sh.Name <> Feuil1.Name Then
...etc...
ou bien :
Si tu parles du If .saved true or false , juste que j'ai pas pigé le but
,
sans doute des tests consécutifs ont laissé ceci en l'état,
mais peut être si c'est sur le précédent code que tu m'as proposé et qui
résolvait pourtant déjà beaucoup de choses
il subsistait que par le Menu Fichier Fermer on déclanchait le message
"voulez vous ..? mais n'enregistrait pas
Application.EnableEvents = False avant le me.save du beforeclose a résolu
ce
pb
de même le enregistrer sous ne s'affichait pas , le fait d'ajouter le cas
de
saveasui a résolu cela aussi.
Sinon (ou encore) tu me questionnais sur le but::
Pouvoir distribuer tout classeur sécurisé contenant des macros, à des
utilisateurs peu expérimentés
qui risquent de ne pas activer des macros et fonctions nécessaires au
classeur pour fonctionner parce que le message raconte les risques ....
En tout cas merci beaucoup pour ton aide efficace et pédagogique, j'ai
enfin
compris comment utiliser cancel et saveasui.Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
....depuis le précédent
:o))
tu fais bien d'ajouter réellement car je m'en vais étudier pourquoi celui
que je proposais
ne l'est pas autant.
Mais cela aussi, c'est pour me faire avancer ...
Encore Merci !
lSteph
"michdenis" a écrit dans le message de news:
%Bonjour LSteph,
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
ça, je ne comprends pas... est-ce vraiment important ?
*-------------------
j'ai modifié
indiqué ' ' ' ici
*-------------------
Salutations!
"LSteph" a écrit dans le message de news:
Re, bonjour,
le truc qui clochait est résolu
je ne sais si c'est optimal mais voici ainsi, ce queprincipalement dans
le beforeSave
Juste une question pas compris :
If Me.Saved = False Or Me.Saved = True
Encore un grand Merci pour ton aide très précieuse
m'en sortais pas!
Bonne journée
lSteph
Private Sub Workbook_Activate()
Application.EnableEvents = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
If ThisWorkbook.Saved = False Then
res = MsgBox("Désirez-vous enregistrer les modifications apportées au
classeur " & _
ThisWorkbook.Name & " ?", vbInformation + vbYesNoCancel)
Select Case res
Case vbYes
Application.EnableEvents = False '''
Me.Save
Application.EnableEvents = True '''
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim A As String
Dim S As String
Dim SavN '''ici
S = Application.EnableCancelKey
Application.EnableCancelKey = xlDisabled
If Me.Saved = False Or Me.Saved = True Then
Application.ScreenUpdating = False
A = ActiveSheet.Name
With Feuil1
.Visible = True
.Select
End With
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = xlVeryHidden
End If
Next
Application.EnableEvents = False
If SaveAsUI Then ''' d'ici
SavN = Application.GetSaveAsFilename
If SavN <> False Then
Me.SaveAs SavN
End If
Else
Me.Save
End If ''à là
Application.EnableEvents = True
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Sheets(A).Select
Feuil1.Visible = xlVeryHidden
Application.EnableCancelKey = S
Me.Saved = True
End If
Cancel = True
End Sub
Private Sub Workbook_Open()
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Feuil1.Visible = xlVeryHidden
ThisWorkbook.Saved = True
End Sub
Pouvoir distribuer tout classeur sécurisé contenant des macros, à des
utilisateurs peu expérimentés
qui risquent de ne pas activer des macros et fonctions nécessaires
Et la preuve qu'on peut se faire avoir (se laisser distraire) par certains
tests, tu peux dans la version finale du fichier, enlever
la petite procédure bidon "ActiverEvents" et sa référence dans la
procédure événementielle "BeforeClose" ... c'est de la roupe de
sansonnet ! Comme l'onglet Feuil1 correspond enfin à la feuil4 dans la
fenêtre VBE, je me suis mépris moi-même lorsque j'ai effectué
un petit test en utilisant les subs événementielles de cette feuille
module pour m'assurer que les procédures événementielles
n'avaient pas été désactivées. Sans faire attention, j'ai conclu par
l'affirmative alors qu'il n'en était rien.
Voilà pour la petite histoire et ma petite jambe ! ;-))
Salutations!
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
u31DxqcoFHA.2904@tk2msftngp13.phx.gbl...
???....
Non, pourquoi quels défauts? C'est parfait
sur l'objectif ou préoccupation je répondais à ta question et pour le
reste
je te faisais part des points sur lesquels grâce à ton aide j'avais pu de
mon côté avancer..
;-)) pour les parades, précisément tu en trouves, là où je n'avais même
pas
vu que j'avais un souci,
alors j'espère bien te trouver à nouveau par là si l'occasion se présente
...encore merci!
lSteph
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
uanEGaaoFHA.3408@tk2msftngp13.phx.gbl...
Bonjour Le Steph,
Comme je n'ai pas retenu dans la version finale, l'objet de ta
préoccupation... je ne vois pas l'intérêt à commenter si ce n'est
pour dire qu'il n'est pas toujours évident de composer avec toutes les
situations qui pourraient arriver et d'inclure dans la
procédure une parade à cet effet ...pour faire cela dans certains cas,
cela demande beaucoup de tests (temps) ... et cela je crois
que le demandeur de la question peut les faire et d'adapter le code au
besoin.
Si tu trouves des défauts à la version finale, fais moi parvenir la
parade
... pas les défauts ...;-)
Salutations!
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
%23TGxC4ZoFHA.320@TK2MSFTNGP09.phx.gbl...
Re, bonjour,
:o)
ça, je ne comprends pas... est-ce vraiment important ?
Oui, c'est primordial outre la question posée, la réponse obtenue
est un support à la réflexion surtout compte tenu de la qualité de tes
contributions.
Pour exemple, je retiens que:
- l'utilisateur pourrait provoquer un break .enablecancelkey
-renommer la feuille > If sh.Name <> Feuil1.Name Then
...etc...
ou bien :
Si tu parles du If .saved true or false , juste que j'ai pas pigé le but
,
sans doute des tests consécutifs ont laissé ceci en l'état,
mais peut être si c'est sur le précédent code que tu m'as proposé et qui
résolvait pourtant déjà beaucoup de choses
il subsistait que par le Menu Fichier Fermer on déclanchait le message
"voulez vous ..? mais n'enregistrait pas
Application.EnableEvents = False avant le me.save du beforeclose a résolu
ce
pb
de même le enregistrer sous ne s'affichait pas , le fait d'ajouter le cas
de
saveasui a résolu cela aussi.
Sinon (ou encore) tu me questionnais sur le but::
Pouvoir distribuer tout classeur sécurisé contenant des macros, à des
utilisateurs peu expérimentés
qui risquent de ne pas activer des macros et fonctions nécessaires au
classeur pour fonctionner parce que le message raconte les risques ....
En tout cas merci beaucoup pour ton aide efficace et pédagogique, j'ai
enfin
compris comment utiliser cancel et saveasui.
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
....depuis le précédent
:o))
tu fais bien d'ajouter réellement car je m'en vais étudier pourquoi celui
que je proposais
ne l'est pas autant.
Mais cela aussi, c'est pour me faire avancer ...
Encore Merci !
lSteph
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23BKMyqYoFHA.3068@TK2MSFTNGP15.phx.gbl...
Bonjour LSteph,
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
ça, je ne comprends pas... est-ce vraiment important ?
*-------------------
j'ai modifié
indiqué ' ' ' ici
*-------------------
Salutations!
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
eT5hOyWoFHA.3552@TK2MSFTNGP10.phx.gbl...
Re, bonjour,
le truc qui clochait est résolu
je ne sais si c'est optimal mais voici ainsi, ce queprincipalement dans
le beforeSave
Juste une question pas compris :
If Me.Saved = False Or Me.Saved = True
Encore un grand Merci pour ton aide très précieuse
m'en sortais pas!
Bonne journée
lSteph
Private Sub Workbook_Activate()
Application.EnableEvents = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
If ThisWorkbook.Saved = False Then
res = MsgBox("Désirez-vous enregistrer les modifications apportées au
classeur " & _
ThisWorkbook.Name & " ?", vbInformation + vbYesNoCancel)
Select Case res
Case vbYes
Application.EnableEvents = False '''
Me.Save
Application.EnableEvents = True '''
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim A As String
Dim S As String
Dim SavN '''ici
S = Application.EnableCancelKey
Application.EnableCancelKey = xlDisabled
If Me.Saved = False Or Me.Saved = True Then
Application.ScreenUpdating = False
A = ActiveSheet.Name
With Feuil1
.Visible = True
.Select
End With
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = xlVeryHidden
End If
Next
Application.EnableEvents = False
If SaveAsUI Then ''' d'ici
SavN = Application.GetSaveAsFilename
If SavN <> False Then
Me.SaveAs SavN
End If
Else
Me.Save
End If ''à là
Application.EnableEvents = True
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Sheets(A).Select
Feuil1.Visible = xlVeryHidden
Application.EnableCancelKey = S
Me.Saved = True
End If
Cancel = True
End Sub
Private Sub Workbook_Open()
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Feuil1.Visible = xlVeryHidden
ThisWorkbook.Saved = True
End Sub
Pouvoir distribuer tout classeur sécurisé contenant des macros, à des
utilisateurs peu expérimentés
qui risquent de ne pas activer des macros et fonctions nécessaires
Et la preuve qu'on peut se faire avoir (se laisser distraire) par certains
tests, tu peux dans la version finale du fichier, enlever
la petite procédure bidon "ActiverEvents" et sa référence dans la
procédure événementielle "BeforeClose" ... c'est de la roupe de
sansonnet ! Comme l'onglet Feuil1 correspond enfin à la feuil4 dans la
fenêtre VBE, je me suis mépris moi-même lorsque j'ai effectué
un petit test en utilisant les subs événementielles de cette feuille
module pour m'assurer que les procédures événementielles
n'avaient pas été désactivées. Sans faire attention, j'ai conclu par
l'affirmative alors qu'il n'en était rien.
Voilà pour la petite histoire et ma petite jambe ! ;-))
Salutations!
"LSteph" a écrit dans le message de news:
???....
Non, pourquoi quels défauts? C'est parfait
sur l'objectif ou préoccupation je répondais à ta question et pour le
reste
je te faisais part des points sur lesquels grâce à ton aide j'avais pu de
mon côté avancer..
;-)) pour les parades, précisément tu en trouves, là où je n'avais même
pas
vu que j'avais un souci,
alors j'espère bien te trouver à nouveau par là si l'occasion se présente
...encore merci!
lSteph
"michdenis" a écrit dans le message de news:Bonjour Le Steph,
Comme je n'ai pas retenu dans la version finale, l'objet de ta
préoccupation... je ne vois pas l'intérêt à commenter si ce n'est
pour dire qu'il n'est pas toujours évident de composer avec toutes les
situations qui pourraient arriver et d'inclure dans la
procédure une parade à cet effet ...pour faire cela dans certains cas,
cela demande beaucoup de tests (temps) ... et cela je crois
que le demandeur de la question peut les faire et d'adapter le code au
besoin.
Si tu trouves des défauts à la version finale, fais moi parvenir la
parade
... pas les défauts ...;-)
Salutations!
"LSteph" a écrit dans le message de news:
%
Re, bonjour,
:o)ça, je ne comprends pas... est-ce vraiment important ?
Oui, c'est primordial outre la question posée, la réponse obtenue
est un support à la réflexion surtout compte tenu de la qualité de tes
contributions.
Pour exemple, je retiens que:
- l'utilisateur pourrait provoquer un break .enablecancelkey
-renommer la feuille > If sh.Name <> Feuil1.Name Then
...etc...
ou bien :
Si tu parles du If .saved true or false , juste que j'ai pas pigé le but
,
sans doute des tests consécutifs ont laissé ceci en l'état,
mais peut être si c'est sur le précédent code que tu m'as proposé et qui
résolvait pourtant déjà beaucoup de choses
il subsistait que par le Menu Fichier Fermer on déclanchait le message
"voulez vous ..? mais n'enregistrait pas
Application.EnableEvents = False avant le me.save du beforeclose a résolu
ce
pb
de même le enregistrer sous ne s'affichait pas , le fait d'ajouter le cas
de
saveasui a résolu cela aussi.
Sinon (ou encore) tu me questionnais sur le but::
Pouvoir distribuer tout classeur sécurisé contenant des macros, à des
utilisateurs peu expérimentés
qui risquent de ne pas activer des macros et fonctions nécessaires au
classeur pour fonctionner parce que le message raconte les risques ....
En tout cas merci beaucoup pour ton aide efficace et pédagogique, j'ai
enfin
compris comment utiliser cancel et saveasui.Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
....depuis le précédent
:o))
tu fais bien d'ajouter réellement car je m'en vais étudier pourquoi celui
que je proposais
ne l'est pas autant.
Mais cela aussi, c'est pour me faire avancer ...
Encore Merci !
lSteph
"michdenis" a écrit dans le message de news:
%Bonjour LSteph,
Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
ça, je ne comprends pas... est-ce vraiment important ?
*-------------------
j'ai modifié
indiqué ' ' ' ici
*-------------------
Salutations!
"LSteph" a écrit dans le message de news:
Re, bonjour,
le truc qui clochait est résolu
je ne sais si c'est optimal mais voici ainsi, ce queprincipalement dans
le beforeSave
Juste une question pas compris :
If Me.Saved = False Or Me.Saved = True
Encore un grand Merci pour ton aide très précieuse
m'en sortais pas!
Bonne journée
lSteph
Private Sub Workbook_Activate()
Application.EnableEvents = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
If ThisWorkbook.Saved = False Then
res = MsgBox("Désirez-vous enregistrer les modifications apportées au
classeur " & _
ThisWorkbook.Name & " ?", vbInformation + vbYesNoCancel)
Select Case res
Case vbYes
Application.EnableEvents = False '''
Me.Save
Application.EnableEvents = True '''
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim A As String
Dim S As String
Dim SavN '''ici
S = Application.EnableCancelKey
Application.EnableCancelKey = xlDisabled
If Me.Saved = False Or Me.Saved = True Then
Application.ScreenUpdating = False
A = ActiveSheet.Name
With Feuil1
.Visible = True
.Select
End With
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = xlVeryHidden
End If
Next
Application.EnableEvents = False
If SaveAsUI Then ''' d'ici
SavN = Application.GetSaveAsFilename
If SavN <> False Then
Me.SaveAs SavN
End If
Else
Me.Save
End If ''à là
Application.EnableEvents = True
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Sheets(A).Select
Feuil1.Visible = xlVeryHidden
Application.EnableCancelKey = S
Me.Saved = True
End If
Cancel = True
End Sub
Private Sub Workbook_Open()
For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Feuil1.Visible = xlVeryHidden
ThisWorkbook.Saved = True
End Sub