vba impossible de fermer le classeur ... de force !
7 réponses
j-pascal
Bonjour,
Je souhaite que mon classeur se ferme sans laisser le choix à l'utilisateur
de cliquer sur "Annuler" dans le msgbox ! Il peut cliquer évidemment cliquer
sur "Oui" ou "Non". L'important étant que le classeur ne reste pas ouvert !
Voici le code :
Sub Validité()
Dim Code As Variant
JourDeValidité = Range("U6").Value
If JourDeValidité > 0 Then
MsgBox ("Validité de l'application : " & JourDeValidité & "
jour(s)"), vbOKOnly + vbInformation, "A noter"
Else
MsgBox ("La date limite d'utilisation a expiré !"), vbOKOnly +
vbInformation, "Contactez l'auteur"
Code = InputBox("Entrez le nouveau code ...", "contactez
l'auteur ...")
If Code <> "travail" Then
MsgBox "Code erroné !"
With ThisWorkbook
ChDir .Path
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
'"yyyymmmdd-hhnn"
Application.EnableEvents = False
'ActiveWorkbook.Save
ThisWorkbook.Close
End With
Else
End If
End If
End Sub
Sachant que j'ai ceci dans ThisWorkbook :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : " &
"Date Heure Fichier.xls" & " ?", vbYesNo)
With ThisWorkbook
ChDir .Path
If tst = 6 Then
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
'"yyyymmmdd-hhnn"
'ActiveSheet.Protect Password:="travail" 'ajout du 25/02/07
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
LSteph
Bonsoir,
On dirait un code repris d'un autre code qui normalement allait dans une private sub...
Comme on l'a déjà dit ce genre de code ne tient que si l'utilisateur daigne activer les macros et de plus ne désactive pas les évènnements ne fait pas Ctrl+Pause ou toute autre échapatoire
Je souhaite que mon classeur se ferme sans laisser le choix à l'utilisateur de cliquer sur "Annuler" dans le msgbox remplace
msgbox "Code erroné !" par application.statusbar= "Code erroné !"
Bon courage.
Cordialement.
lSteph
Bonsoir,
On dirait un code repris d'un autre code qui normalement allait dans
une private sub...
Comme on l'a déjà dit ce genre de code ne tient que si l'utilisateur
daigne activer les macros et de plus ne désactive pas les évènnements
ne fait pas Ctrl+Pause ou toute autre échapatoire
Je souhaite que mon classeur se ferme sans laisser le choix à
l'utilisateur de cliquer sur "Annuler" dans le msgbox
remplace
msgbox "Code erroné !"
par
application.statusbar= "Code erroné !"
On dirait un code repris d'un autre code qui normalement allait dans une private sub...
Comme on l'a déjà dit ce genre de code ne tient que si l'utilisateur daigne activer les macros et de plus ne désactive pas les évènnements ne fait pas Ctrl+Pause ou toute autre échapatoire
Je souhaite que mon classeur se ferme sans laisser le choix à l'utilisateur de cliquer sur "Annuler" dans le msgbox remplace
msgbox "Code erroné !" par application.statusbar= "Code erroné !"
Bon courage.
Cordialement.
lSteph
LSteph
..autre possibilité exemple:
Sub fermeture() Application.EnableCancelKey = xlDisabled
On Error GoTo fin MsgBox "on ferme" fin: ThisWorkbook.Close True End Sub
Bonjour,
Je souhaite que mon classeur se ferme sans laisser le choix à l'utilisateur de cliquer sur "Annuler" dans le msgbox ! Il peut cliquer évidemment cliquer sur "Oui" ou "Non". L'important étant que le classeur ne reste pas ouvert !
Voici le code :
Sub Validité() Dim Code As Variant JourDeValidité = Range("U6").Value If JourDeValidité > 0 Then MsgBox ("Validité de l'application : " & JourDeValidité & " jour(s)"), vbOKOnly + vbInformation, "A noter" Else MsgBox ("La date limite d'utilisation a expiré !"), vbOKOnly + vbInformation, "Contactez l'auteur" Code = InputBox("Entrez le nouveau code ...", "contactez l'auteur ...") If Code <> "travail" Then MsgBox "Code erroné !" With ThisWorkbook ChDir .Path .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name '"yyyymmmdd-hhnn"
Application.EnableEvents = False 'ActiveWorkbook.Save ThisWorkbook.Close End With Else End If End If End Sub
Sachant que j'ai ceci dans ThisWorkbook :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim tst If SaveAsUI Then MsgBox "Désolé, l'option Enregistrer sous... est impossible !", vbExclamation, "choix possibles : Enregistrer ou Fermer" Cancel = True Else tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : " & "Date Heure Fichier.xls" & " ?", vbYesNo)
With ThisWorkbook ChDir .Path If tst = 6 Then .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name '"yyyymmmdd-hhnn"
'ActiveSheet.Protect Password:="travail" 'ajout du 25/02/07
Else Cancel = True End If End With End If End Sub
Je suis perdu ;-(
Merci pour votre aide !
..autre possibilité exemple:
Sub fermeture()
Application.EnableCancelKey = xlDisabled
On Error GoTo fin
MsgBox "on ferme"
fin:
ThisWorkbook.Close True
End Sub
Bonjour,
Je souhaite que mon classeur se ferme sans laisser le choix à
l'utilisateur de cliquer sur "Annuler" dans le msgbox ! Il peut cliquer
évidemment cliquer sur "Oui" ou "Non". L'important étant que le classeur
ne reste pas ouvert !
Voici le code :
Sub Validité()
Dim Code As Variant
JourDeValidité = Range("U6").Value
If JourDeValidité > 0 Then
MsgBox ("Validité de l'application : " & JourDeValidité & "
jour(s)"), vbOKOnly + vbInformation, "A noter"
Else
MsgBox ("La date limite d'utilisation a expiré !"), vbOKOnly
+ vbInformation, "Contactez l'auteur"
Code = InputBox("Entrez le nouveau code ...", "contactez
l'auteur ...")
If Code <> "travail" Then
MsgBox "Code erroné !"
With ThisWorkbook
ChDir .Path
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
'"yyyymmmdd-hhnn"
Application.EnableEvents = False
'ActiveWorkbook.Save
ThisWorkbook.Close
End With
Else
End If
End If
End Sub
Sachant que j'ai ceci dans ThisWorkbook :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : "
& "Date Heure Fichier.xls" & " ?", vbYesNo)
With ThisWorkbook
ChDir .Path
If tst = 6 Then
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
'"yyyymmmdd-hhnn"
'ActiveSheet.Protect Password:="travail" 'ajout du 25/02/07
Sub fermeture() Application.EnableCancelKey = xlDisabled
On Error GoTo fin MsgBox "on ferme" fin: ThisWorkbook.Close True End Sub
Bonjour,
Je souhaite que mon classeur se ferme sans laisser le choix à l'utilisateur de cliquer sur "Annuler" dans le msgbox ! Il peut cliquer évidemment cliquer sur "Oui" ou "Non". L'important étant que le classeur ne reste pas ouvert !
Voici le code :
Sub Validité() Dim Code As Variant JourDeValidité = Range("U6").Value If JourDeValidité > 0 Then MsgBox ("Validité de l'application : " & JourDeValidité & " jour(s)"), vbOKOnly + vbInformation, "A noter" Else MsgBox ("La date limite d'utilisation a expiré !"), vbOKOnly + vbInformation, "Contactez l'auteur" Code = InputBox("Entrez le nouveau code ...", "contactez l'auteur ...") If Code <> "travail" Then MsgBox "Code erroné !" With ThisWorkbook ChDir .Path .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name '"yyyymmmdd-hhnn"
Application.EnableEvents = False 'ActiveWorkbook.Save ThisWorkbook.Close End With Else End If End If End Sub
Sachant que j'ai ceci dans ThisWorkbook :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim tst If SaveAsUI Then MsgBox "Désolé, l'option Enregistrer sous... est impossible !", vbExclamation, "choix possibles : Enregistrer ou Fermer" Cancel = True Else tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : " & "Date Heure Fichier.xls" & " ?", vbYesNo)
With ThisWorkbook ChDir .Path If tst = 6 Then .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name '"yyyymmmdd-hhnn"
'ActiveSheet.Protect Password:="travail" 'ajout du 25/02/07
Else Cancel = True End If End With End If End Sub
Je suis perdu ;-(
Merci pour votre aide !
j-pascal
Bsr,
J'ai mis ce code en pratique. Ca marche bien ! Je ne comprends pas pourquoi on "ferme" s'il y a une erreur !
JP
"LSteph" a écrit dans le message de news:
..autre possibilité exemple:
Sub fermeture() Application.EnableCancelKey = xlDisabled
On Error GoTo fin MsgBox "on ferme" fin: ThisWorkbook.Close True End Sub
Bonjour,
Je souhaite que mon classeur se ferme sans laisser le choix à l'utilisateur de cliquer sur "Annuler" dans le msgbox ! Il peut cliquer évidemment cliquer sur "Oui" ou "Non". L'important étant que le classeur ne reste pas ouvert !
Voici le code :
Sub Validité() Dim Code As Variant JourDeValidité = Range("U6").Value If JourDeValidité > 0 Then MsgBox ("Validité de l'application : " & JourDeValidité & " jour(s)"), vbOKOnly + vbInformation, "A noter" Else MsgBox ("La date limite d'utilisation a expiré !"), vbOKOnly + vbInformation, "Contactez l'auteur" Code = InputBox("Entrez le nouveau code ...", "contactez l'auteur ...") If Code <> "travail" Then MsgBox "Code erroné !" With ThisWorkbook ChDir .Path .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name '"yyyymmmdd-hhnn"
Application.EnableEvents = False 'ActiveWorkbook.Save ThisWorkbook.Close End With Else End If End If End Sub
Sachant que j'ai ceci dans ThisWorkbook :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim tst If SaveAsUI Then MsgBox "Désolé, l'option Enregistrer sous... est impossible !", vbExclamation, "choix possibles : Enregistrer ou Fermer" Cancel = True Else tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : " & "Date Heure Fichier.xls" & " ?", vbYesNo)
With ThisWorkbook ChDir .Path If tst = 6 Then .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name '"yyyymmmdd-hhnn"
'ActiveSheet.Protect Password:="travail" 'ajout du 25/02/07
Else Cancel = True End If End With End If End Sub
Je suis perdu ;-(
Merci pour votre aide !
Bsr,
J'ai mis ce code en pratique. Ca marche bien !
Je ne comprends pas pourquoi on "ferme" s'il y a une erreur !
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
Om2TYNeXHHA.4008@TK2MSFTNGP05.phx.gbl...
..autre possibilité exemple:
Sub fermeture()
Application.EnableCancelKey = xlDisabled
On Error GoTo fin
MsgBox "on ferme"
fin:
ThisWorkbook.Close True
End Sub
Bonjour,
Je souhaite que mon classeur se ferme sans laisser le choix à
l'utilisateur de cliquer sur "Annuler" dans le msgbox ! Il peut cliquer
évidemment cliquer sur "Oui" ou "Non". L'important étant que le classeur
ne reste pas ouvert !
Voici le code :
Sub Validité()
Dim Code As Variant
JourDeValidité = Range("U6").Value
If JourDeValidité > 0 Then
MsgBox ("Validité de l'application : " & JourDeValidité & "
jour(s)"), vbOKOnly + vbInformation, "A noter"
Else
MsgBox ("La date limite d'utilisation a expiré !"), vbOKOnly +
vbInformation, "Contactez l'auteur"
Code = InputBox("Entrez le nouveau code ...", "contactez
l'auteur ...")
If Code <> "travail" Then
MsgBox "Code erroné !"
With ThisWorkbook
ChDir .Path
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
'"yyyymmmdd-hhnn"
Application.EnableEvents = False
'ActiveWorkbook.Save
ThisWorkbook.Close
End With
Else
End If
End If
End Sub
Sachant que j'ai ceci dans ThisWorkbook :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : "
& "Date Heure Fichier.xls" & " ?", vbYesNo)
With ThisWorkbook
ChDir .Path
If tst = 6 Then
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
'"yyyymmmdd-hhnn"
'ActiveSheet.Protect Password:="travail" 'ajout du 25/02/07
J'ai mis ce code en pratique. Ca marche bien ! Je ne comprends pas pourquoi on "ferme" s'il y a une erreur !
JP
"LSteph" a écrit dans le message de news:
..autre possibilité exemple:
Sub fermeture() Application.EnableCancelKey = xlDisabled
On Error GoTo fin MsgBox "on ferme" fin: ThisWorkbook.Close True End Sub
Bonjour,
Je souhaite que mon classeur se ferme sans laisser le choix à l'utilisateur de cliquer sur "Annuler" dans le msgbox ! Il peut cliquer évidemment cliquer sur "Oui" ou "Non". L'important étant que le classeur ne reste pas ouvert !
Voici le code :
Sub Validité() Dim Code As Variant JourDeValidité = Range("U6").Value If JourDeValidité > 0 Then MsgBox ("Validité de l'application : " & JourDeValidité & " jour(s)"), vbOKOnly + vbInformation, "A noter" Else MsgBox ("La date limite d'utilisation a expiré !"), vbOKOnly + vbInformation, "Contactez l'auteur" Code = InputBox("Entrez le nouveau code ...", "contactez l'auteur ...") If Code <> "travail" Then MsgBox "Code erroné !" With ThisWorkbook ChDir .Path .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name '"yyyymmmdd-hhnn"
Application.EnableEvents = False 'ActiveWorkbook.Save ThisWorkbook.Close End With Else End If End If End Sub
Sachant que j'ai ceci dans ThisWorkbook :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim tst If SaveAsUI Then MsgBox "Désolé, l'option Enregistrer sous... est impossible !", vbExclamation, "choix possibles : Enregistrer ou Fermer" Cancel = True Else tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : " & "Date Heure Fichier.xls" & " ?", vbYesNo)
With ThisWorkbook ChDir .Path If tst = 6 Then .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name '"yyyymmmdd-hhnn"
'ActiveSheet.Protect Password:="travail" 'ajout du 25/02/07
Else Cancel = True End If End With End If End Sub
Je suis perdu ;-(
Merci pour votre aide !
j-pascal
Re,
"LSteph" a écrit dans le message de news:
Bonsoir,
On dirait un code repris d'un autre code qui normalement allait dans une private sub...
Comme on l'a déjà dit ce genre de code ne tient que si l'utilisateur daigne activer les macros et de plus ne désactive pas les évènnements ne fait pas Ctrl+Pause ou toute autre échapatoire
Je t'assure que je fais de gros efforts pour comprendre tout ça, mais cette notion de fermeture est loin d'être limpide pour moi. J'ai failli ajouter à mon dernier post "L'auteur se reconnaîtra !". J'espère que tu ne m'en veux pas de ne pas l'avoir fait ...
Je souhaite que mon classeur se ferme sans laisser le choix à l'utilisateur de cliquer sur "Annuler" dans le msgbox remplace
msgbox "Code erroné !" par application.statusbar= "Code erroné !"
En un mot, peux-tu me dire l'effet que ça a ? Veux-tu voir l'application ?
@+ ?
JP
Bon courage.
Cordialement.
lSteph
Re,
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
eFi7mGeXHHA.3984@TK2MSFTNGP02.phx.gbl...
Bonsoir,
On dirait un code repris d'un autre code qui normalement allait dans une
private sub...
Comme on l'a déjà dit ce genre de code ne tient que si l'utilisateur
daigne activer les macros et de plus ne désactive pas les évènnements ne
fait pas Ctrl+Pause ou toute autre échapatoire
Je t'assure que je fais de gros efforts pour comprendre tout ça, mais cette
notion de fermeture est loin d'être limpide pour moi.
J'ai failli ajouter à mon dernier post "L'auteur se reconnaîtra !". J'espère
que tu ne m'en veux pas de ne pas l'avoir fait ...
Je souhaite que mon classeur se ferme sans laisser le choix à
l'utilisateur de cliquer sur "Annuler" dans le msgbox
remplace
msgbox "Code erroné !"
par
application.statusbar= "Code erroné !"
En un mot, peux-tu me dire l'effet que ça a ?
Veux-tu voir l'application ?
On dirait un code repris d'un autre code qui normalement allait dans une private sub...
Comme on l'a déjà dit ce genre de code ne tient que si l'utilisateur daigne activer les macros et de plus ne désactive pas les évènnements ne fait pas Ctrl+Pause ou toute autre échapatoire
Je t'assure que je fais de gros efforts pour comprendre tout ça, mais cette notion de fermeture est loin d'être limpide pour moi. J'ai failli ajouter à mon dernier post "L'auteur se reconnaîtra !". J'espère que tu ne m'en veux pas de ne pas l'avoir fait ...
Je souhaite que mon classeur se ferme sans laisser le choix à l'utilisateur de cliquer sur "Annuler" dans le msgbox remplace
msgbox "Code erroné !" par application.statusbar= "Code erroné !"
En un mot, peux-tu me dire l'effet que ça a ? Veux-tu voir l'application ?
@+ ?
JP
Bon courage.
Cordialement.
lSteph
LSteph
C'est juste un exemple ..., ce qui empêche l'annulation c'est Application.EnableCancelKey = xlDisabled pour la suite on peut supposer y glisser du code avant d'arriver à la fermeture et que lors de l'execution l'utilisateur fasse planter ce code d'une façon ou une autre dans cette hypothèse il convient d'arriver à fin: ThisWorkbook.Close True
Cordialement.
lSteph
Bsr,
J'ai mis ce code en pratique. Ca marche bien ! Je ne comprends pas pourquoi on "ferme" s'il y a une erreur !
JP
"LSteph" a écrit dans le message de news:
..autre possibilité exemple:
Sub fermeture() Application.EnableCancelKey = xlDisabled
On Error GoTo fin MsgBox "on ferme" fin: ThisWorkbook.Close True End Sub
Bonjour,
Je souhaite que mon classeur se ferme sans laisser le choix à l'utilisateur de cliquer sur "Annuler" dans le msgbox ! Il peut cliquer évidemment cliquer sur "Oui" ou "Non". L'important étant que le classeur ne reste pas ouvert !
Voici le code :
Sub Validité() Dim Code As Variant JourDeValidité = Range("U6").Value If JourDeValidité > 0 Then MsgBox ("Validité de l'application : " & JourDeValidité & " jour(s)"), vbOKOnly + vbInformation, "A noter" Else MsgBox ("La date limite d'utilisation a expiré !"), vbOKOnly + vbInformation, "Contactez l'auteur" Code = InputBox("Entrez le nouveau code ...", "contactez l'auteur ...") If Code <> "travail" Then MsgBox "Code erroné !" With ThisWorkbook ChDir .Path .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name '"yyyymmmdd-hhnn"
Application.EnableEvents = False 'ActiveWorkbook.Save ThisWorkbook.Close End With Else End If End If End Sub
Sachant que j'ai ceci dans ThisWorkbook :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim tst If SaveAsUI Then MsgBox "Désolé, l'option Enregistrer sous... est impossible !", vbExclamation, "choix possibles : Enregistrer ou Fermer" Cancel = True Else tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : " & "Date Heure Fichier.xls" & " ?", vbYesNo)
With ThisWorkbook ChDir .Path If tst = 6 Then .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name '"yyyymmmdd-hhnn"
'ActiveSheet.Protect Password:="travail" 'ajout du 25/02/07
Else Cancel = True End If End With End If End Sub
Je suis perdu ;-(
Merci pour votre aide !
C'est juste un exemple ...,
ce qui empêche l'annulation c'est
Application.EnableCancelKey = xlDisabled
pour la suite
on peut supposer y glisser du code
avant d'arriver à la fermeture et que
lors de l'execution l'utilisateur fasse
planter ce code d'une façon ou une autre
dans cette hypothèse il convient d'arriver à fin:
ThisWorkbook.Close True
Cordialement.
lSteph
Bsr,
J'ai mis ce code en pratique. Ca marche bien !
Je ne comprends pas pourquoi on "ferme" s'il y a une erreur !
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
Om2TYNeXHHA.4008@TK2MSFTNGP05.phx.gbl...
..autre possibilité exemple:
Sub fermeture()
Application.EnableCancelKey = xlDisabled
On Error GoTo fin
MsgBox "on ferme"
fin:
ThisWorkbook.Close True
End Sub
Bonjour,
Je souhaite que mon classeur se ferme sans laisser le choix à
l'utilisateur de cliquer sur "Annuler" dans le msgbox ! Il peut
cliquer évidemment cliquer sur "Oui" ou "Non". L'important étant que
le classeur ne reste pas ouvert !
Voici le code :
Sub Validité()
Dim Code As Variant
JourDeValidité = Range("U6").Value
If JourDeValidité > 0 Then
MsgBox ("Validité de l'application : " & JourDeValidité &
" jour(s)"), vbOKOnly + vbInformation, "A noter"
Else
MsgBox ("La date limite d'utilisation a expiré !"),
vbOKOnly + vbInformation, "Contactez l'auteur"
Code = InputBox("Entrez le nouveau code ...", "contactez
l'auteur ...")
If Code <> "travail" Then
MsgBox "Code erroné !"
With ThisWorkbook
ChDir .Path
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name '"yyyymmmdd-hhnn"
Application.EnableEvents = False
'ActiveWorkbook.Save
ThisWorkbook.Close
End With
Else
End If
End If
End Sub
Sachant que j'ai ceci dans ThisWorkbook :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
MsgBox "Désolé, l'option Enregistrer sous... est impossible
!", vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme
: " & "Date Heure Fichier.xls" & " ?", vbYesNo)
With ThisWorkbook
ChDir .Path
If tst = 6 Then
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name '"yyyymmmdd-hhnn"
'ActiveSheet.Protect Password:="travail" 'ajout du 25/02/07
C'est juste un exemple ..., ce qui empêche l'annulation c'est Application.EnableCancelKey = xlDisabled pour la suite on peut supposer y glisser du code avant d'arriver à la fermeture et que lors de l'execution l'utilisateur fasse planter ce code d'une façon ou une autre dans cette hypothèse il convient d'arriver à fin: ThisWorkbook.Close True
Cordialement.
lSteph
Bsr,
J'ai mis ce code en pratique. Ca marche bien ! Je ne comprends pas pourquoi on "ferme" s'il y a une erreur !
JP
"LSteph" a écrit dans le message de news:
..autre possibilité exemple:
Sub fermeture() Application.EnableCancelKey = xlDisabled
On Error GoTo fin MsgBox "on ferme" fin: ThisWorkbook.Close True End Sub
Bonjour,
Je souhaite que mon classeur se ferme sans laisser le choix à l'utilisateur de cliquer sur "Annuler" dans le msgbox ! Il peut cliquer évidemment cliquer sur "Oui" ou "Non". L'important étant que le classeur ne reste pas ouvert !
Voici le code :
Sub Validité() Dim Code As Variant JourDeValidité = Range("U6").Value If JourDeValidité > 0 Then MsgBox ("Validité de l'application : " & JourDeValidité & " jour(s)"), vbOKOnly + vbInformation, "A noter" Else MsgBox ("La date limite d'utilisation a expiré !"), vbOKOnly + vbInformation, "Contactez l'auteur" Code = InputBox("Entrez le nouveau code ...", "contactez l'auteur ...") If Code <> "travail" Then MsgBox "Code erroné !" With ThisWorkbook ChDir .Path .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name '"yyyymmmdd-hhnn"
Application.EnableEvents = False 'ActiveWorkbook.Save ThisWorkbook.Close End With Else End If End If End Sub
Sachant que j'ai ceci dans ThisWorkbook :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim tst If SaveAsUI Then MsgBox "Désolé, l'option Enregistrer sous... est impossible !", vbExclamation, "choix possibles : Enregistrer ou Fermer" Cancel = True Else tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : " & "Date Heure Fichier.xls" & " ?", vbYesNo)
With ThisWorkbook ChDir .Path If tst = 6 Then .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name '"yyyymmmdd-hhnn"
'ActiveSheet.Protect Password:="travail" 'ajout du 25/02/07
Else Cancel = True End If End With End If End Sub
Je suis perdu ;-(
Merci pour votre aide !
LSteph
Pas de souci, je voulais juste te rappeler que si tout cela semble intéressant à expérimenter cela restera assez facilement contournable.
l'autre option avec enablecancelkey est sans doute mieux
remplace msgbox "Code erroné !" par application.statusbar= "Code erroné !"
En un mot, peux-tu me dire l'effet que ça a ?
Oui, cela indique le message dans la barre d'état (en bas) statusbar ainsi tu n'attends pas un Ok ( ou Ctrl+Pause ) de l'utilisateur.
Cordialement.
lSteph
Re,
"LSteph" a écrit dans le message de news:
Bonsoir,
On dirait un code repris d'un autre code qui normalement allait dans une private sub...
Comme on l'a déjà dit ce genre de code ne tient que si l'utilisateur daigne activer les macros et de plus ne désactive pas les évènnements ne fait pas Ctrl+Pause ou toute autre échapatoire
Je t'assure que je fais de gros efforts pour comprendre tout ça, mais cette notion de fermeture est loin d'être limpide pour moi. J'ai failli ajouter à mon dernier post "L'auteur se reconnaîtra !". J'espère que tu ne m'en veux pas de ne pas l'avoir fait ...
Je souhaite que mon classeur se ferme sans laisser le choix à l'utilisateur de cliquer sur "Annuler" dans le msgbox remplace
msgbox "Code erroné !" par application.statusbar= "Code erroné !"
En un mot, peux-tu me dire l'effet que ça a ? Veux-tu voir l'application ?
@+ ?
JP
Bon courage.
Cordialement.
lSteph
Pas de souci, je voulais juste te rappeler que si tout cela semble
intéressant à expérimenter cela restera assez facilement contournable.
l'autre option avec enablecancelkey est sans doute mieux
remplace
msgbox "Code erroné !"
par
application.statusbar= "Code erroné !"
En un mot, peux-tu me dire l'effet que ça a ?
Oui, cela indique le message dans la barre d'état (en bas) statusbar
ainsi tu n'attends pas un Ok ( ou Ctrl+Pause ) de l'utilisateur.
Cordialement.
lSteph
Re,
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
eFi7mGeXHHA.3984@TK2MSFTNGP02.phx.gbl...
Bonsoir,
On dirait un code repris d'un autre code qui normalement allait dans
une private sub...
Comme on l'a déjà dit ce genre de code ne tient que si l'utilisateur
daigne activer les macros et de plus ne désactive pas les évènnements
ne fait pas Ctrl+Pause ou toute autre échapatoire
Je t'assure que je fais de gros efforts pour comprendre tout ça, mais
cette notion de fermeture est loin d'être limpide pour moi.
J'ai failli ajouter à mon dernier post "L'auteur se reconnaîtra !".
J'espère que tu ne m'en veux pas de ne pas l'avoir fait ...
Je souhaite que mon classeur se ferme sans laisser le choix à
l'utilisateur de cliquer sur "Annuler" dans le msgbox
remplace
msgbox "Code erroné !"
par
application.statusbar= "Code erroné !"
En un mot, peux-tu me dire l'effet que ça a ?
Veux-tu voir l'application ?
Pas de souci, je voulais juste te rappeler que si tout cela semble intéressant à expérimenter cela restera assez facilement contournable.
l'autre option avec enablecancelkey est sans doute mieux
remplace msgbox "Code erroné !" par application.statusbar= "Code erroné !"
En un mot, peux-tu me dire l'effet que ça a ?
Oui, cela indique le message dans la barre d'état (en bas) statusbar ainsi tu n'attends pas un Ok ( ou Ctrl+Pause ) de l'utilisateur.
Cordialement.
lSteph
Re,
"LSteph" a écrit dans le message de news:
Bonsoir,
On dirait un code repris d'un autre code qui normalement allait dans une private sub...
Comme on l'a déjà dit ce genre de code ne tient que si l'utilisateur daigne activer les macros et de plus ne désactive pas les évènnements ne fait pas Ctrl+Pause ou toute autre échapatoire
Je t'assure que je fais de gros efforts pour comprendre tout ça, mais cette notion de fermeture est loin d'être limpide pour moi. J'ai failli ajouter à mon dernier post "L'auteur se reconnaîtra !". J'espère que tu ne m'en veux pas de ne pas l'avoir fait ...
Je souhaite que mon classeur se ferme sans laisser le choix à l'utilisateur de cliquer sur "Annuler" dans le msgbox remplace
msgbox "Code erroné !" par application.statusbar= "Code erroné !"
En un mot, peux-tu me dire l'effet que ça a ? Veux-tu voir l'application ?
@+ ?
JP
Bon courage.
Cordialement.
lSteph
j-pascal
Bonjour,
Merci pour cette réponse ; c'est plus clair. Je vais faire un petit tour au marché pour m'aérer le(s) neurone(s) ... Je reprends tout ça tout à l'heure ;-)
A+
NB : Merci également pour ta précédente réponse.
"LSteph" a écrit dans le message de news: e2$
C'est juste un exemple ..., ce qui empêche l'annulation c'est Application.EnableCancelKey = xlDisabled pour la suite on peut supposer y glisser du code avant d'arriver à la fermeture et que lors de l'execution l'utilisateur fasse planter ce code d'une façon ou une autre dans cette hypothèse il convient d'arriver à fin: ThisWorkbook.Close True
Cordialement.
lSteph
Bsr,
J'ai mis ce code en pratique. Ca marche bien ! Je ne comprends pas pourquoi on "ferme" s'il y a une erreur !
JP
"LSteph" a écrit dans le message de news:
..autre possibilité exemple:
Sub fermeture() Application.EnableCancelKey = xlDisabled
On Error GoTo fin MsgBox "on ferme" fin: ThisWorkbook.Close True End Sub
Bonjour,
Je souhaite que mon classeur se ferme sans laisser le choix à l'utilisateur de cliquer sur "Annuler" dans le msgbox ! Il peut cliquer évidemment cliquer sur "Oui" ou "Non". L'important étant que le classeur ne reste pas ouvert !
Voici le code :
Sub Validité() Dim Code As Variant JourDeValidité = Range("U6").Value If JourDeValidité > 0 Then MsgBox ("Validité de l'application : " & JourDeValidité & " jour(s)"), vbOKOnly + vbInformation, "A noter" Else MsgBox ("La date limite d'utilisation a expiré !"), vbOKOnly + vbInformation, "Contactez l'auteur" Code = InputBox("Entrez le nouveau code ...", "contactez l'auteur ...") If Code <> "travail" Then MsgBox "Code erroné !" With ThisWorkbook ChDir .Path .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name '"yyyymmmdd-hhnn"
Application.EnableEvents = False 'ActiveWorkbook.Save ThisWorkbook.Close End With Else End If End If End Sub
Sachant que j'ai ceci dans ThisWorkbook :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim tst If SaveAsUI Then MsgBox "Désolé, l'option Enregistrer sous... est impossible !", vbExclamation, "choix possibles : Enregistrer ou Fermer" Cancel = True Else tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : " & "Date Heure Fichier.xls" & " ?", vbYesNo)
With ThisWorkbook ChDir .Path If tst = 6 Then .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name '"yyyymmmdd-hhnn"
'ActiveSheet.Protect Password:="travail" 'ajout du 25/02/07
Else Cancel = True End If End With End If End Sub
Je suis perdu ;-(
Merci pour votre aide !
Bonjour,
Merci pour cette réponse ; c'est plus clair.
Je vais faire un petit tour au marché pour m'aérer le(s) neurone(s) ... Je
reprends tout ça tout à l'heure ;-)
A+
NB : Merci également pour ta précédente réponse.
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
e2$zeueXHHA.2640@TK2MSFTNGP06.phx.gbl...
C'est juste un exemple ...,
ce qui empêche l'annulation c'est
Application.EnableCancelKey = xlDisabled
pour la suite
on peut supposer y glisser du code
avant d'arriver à la fermeture et que
lors de l'execution l'utilisateur fasse
planter ce code d'une façon ou une autre
dans cette hypothèse il convient d'arriver à fin:
ThisWorkbook.Close True
Cordialement.
lSteph
Bsr,
J'ai mis ce code en pratique. Ca marche bien !
Je ne comprends pas pourquoi on "ferme" s'il y a une erreur !
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
Om2TYNeXHHA.4008@TK2MSFTNGP05.phx.gbl...
..autre possibilité exemple:
Sub fermeture()
Application.EnableCancelKey = xlDisabled
On Error GoTo fin
MsgBox "on ferme"
fin:
ThisWorkbook.Close True
End Sub
Bonjour,
Je souhaite que mon classeur se ferme sans laisser le choix à
l'utilisateur de cliquer sur "Annuler" dans le msgbox ! Il peut cliquer
évidemment cliquer sur "Oui" ou "Non". L'important étant que le
classeur ne reste pas ouvert !
Voici le code :
Sub Validité()
Dim Code As Variant
JourDeValidité = Range("U6").Value
If JourDeValidité > 0 Then
MsgBox ("Validité de l'application : " & JourDeValidité & "
jour(s)"), vbOKOnly + vbInformation, "A noter"
Else
MsgBox ("La date limite d'utilisation a expiré !"), vbOKOnly
+ vbInformation, "Contactez l'auteur"
Code = InputBox("Entrez le nouveau code ...", "contactez
l'auteur ...")
If Code <> "travail" Then
MsgBox "Code erroné !"
With ThisWorkbook
ChDir .Path
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
'"yyyymmmdd-hhnn"
Application.EnableEvents = False
'ActiveWorkbook.Save
ThisWorkbook.Close
End With
Else
End If
End If
End Sub
Sachant que j'ai ceci dans ThisWorkbook :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme :
" & "Date Heure Fichier.xls" & " ?", vbYesNo)
With ThisWorkbook
ChDir .Path
If tst = 6 Then
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
'"yyyymmmdd-hhnn"
'ActiveSheet.Protect Password:="travail" 'ajout du 25/02/07
Merci pour cette réponse ; c'est plus clair. Je vais faire un petit tour au marché pour m'aérer le(s) neurone(s) ... Je reprends tout ça tout à l'heure ;-)
A+
NB : Merci également pour ta précédente réponse.
"LSteph" a écrit dans le message de news: e2$
C'est juste un exemple ..., ce qui empêche l'annulation c'est Application.EnableCancelKey = xlDisabled pour la suite on peut supposer y glisser du code avant d'arriver à la fermeture et que lors de l'execution l'utilisateur fasse planter ce code d'une façon ou une autre dans cette hypothèse il convient d'arriver à fin: ThisWorkbook.Close True
Cordialement.
lSteph
Bsr,
J'ai mis ce code en pratique. Ca marche bien ! Je ne comprends pas pourquoi on "ferme" s'il y a une erreur !
JP
"LSteph" a écrit dans le message de news:
..autre possibilité exemple:
Sub fermeture() Application.EnableCancelKey = xlDisabled
On Error GoTo fin MsgBox "on ferme" fin: ThisWorkbook.Close True End Sub
Bonjour,
Je souhaite que mon classeur se ferme sans laisser le choix à l'utilisateur de cliquer sur "Annuler" dans le msgbox ! Il peut cliquer évidemment cliquer sur "Oui" ou "Non". L'important étant que le classeur ne reste pas ouvert !
Voici le code :
Sub Validité() Dim Code As Variant JourDeValidité = Range("U6").Value If JourDeValidité > 0 Then MsgBox ("Validité de l'application : " & JourDeValidité & " jour(s)"), vbOKOnly + vbInformation, "A noter" Else MsgBox ("La date limite d'utilisation a expiré !"), vbOKOnly + vbInformation, "Contactez l'auteur" Code = InputBox("Entrez le nouveau code ...", "contactez l'auteur ...") If Code <> "travail" Then MsgBox "Code erroné !" With ThisWorkbook ChDir .Path .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name '"yyyymmmdd-hhnn"
Application.EnableEvents = False 'ActiveWorkbook.Save ThisWorkbook.Close End With Else End If End If End Sub
Sachant que j'ai ceci dans ThisWorkbook :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim tst If SaveAsUI Then MsgBox "Désolé, l'option Enregistrer sous... est impossible !", vbExclamation, "choix possibles : Enregistrer ou Fermer" Cancel = True Else tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : " & "Date Heure Fichier.xls" & " ?", vbYesNo)
With ThisWorkbook ChDir .Path If tst = 6 Then .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name '"yyyymmmdd-hhnn"
'ActiveSheet.Protect Password:="travail" 'ajout du 25/02/07