vba impossible de fermer le classeur ... de force !

Le
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

Else
Cancel = True
End If
End With
End If
End Sub


Je suis perdu ;-(

Merci pour votre aide !


--
Cordialement @+
j.p
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LSteph
Le #4231901
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

LSteph
Le #4231881
..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
Le #4231821
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"
..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
Le #4231811
Re,

"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 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
Le #4231801
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"
..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
Le #4231791
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"
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
Le #4231711
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" 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"
..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 !









Publicité
Poster une réponse
Anonyme