Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/08/2006, 21h32   #1
Invité de passage
 
Inscription : août 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 11
Points : 1
Points : 1
Par défaut Réponse boite de dialogue prédéfinie "Enregistrer les modifications"

Bonjour,

J'ai créé un formulaire dans Word qui intègre du code dont une partie s'exécute à la fermeture du fichier (procédure sub document_close).

Problème : le code s'exécute même si l'utilisateur répond Non à la boite de dialogue "Voulez-vous enregistrer les modifications effectuées ?", et avant même que l'utilisateur ait répondu !
J'ai donc besoin de récupérer la réponse de l'utilisateur pour bloquer l'exécution. Comment faire ?
J'ai tenté de biaiser en utilisant une Msgbox, mais la boite prédéfinie apparait quand même après la mienne !

2e question : comment fermer sans enregistrer ?
Je suis déjà dans une procédure document_close et si je mets une méthode close je rappelle ma procédure en cours...

Merci d'avance de votre aide !

Catherine
catherineFR27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2006, 21h42   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
essai quelque chose du genre :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Private Sub Document_Close()
Dim rep As Integer
rep = MsgBox("Sauvegarde du document", vbYesNo)
 
 If rep = vbYes Then
   'On Sauve
   ThisDocument.Save
 Else
   'Abandon
   ThisDocument.Saved = True
End If
End Sub
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 09h34   #3
Invité de passage
 
Inscription : août 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 11
Points : 1
Points : 1
Merci de ta réponse.

Tout se passe bien si je réponds oui à la msgbox : le code s'exécute et la boite prédéfinie "enregistrer les modifications" n'apparait pas.

Par contre si je réponds non, la boite prédéfinie apparait quand même et c'est c'est elle qui prend le pas sur la msgbox : si j'y réponds oui, les modif sont enregistrées même si j'ai répondu non à la msgbox.

Catherine
catherineFR27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 10h47   #4
Invité de passage
 
Inscription : août 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 11
Points : 1
Points : 1
Citation:
Envoyé par catherineFR27
Merci de ta réponse.

Tout se passe bien si je réponds oui à la msgbox : le code s'exécute et la boite prédéfinie "enregistrer les modifications" n'apparait pas.

Par contre si je réponds non, la boite prédéfinie apparait quand même et c'est c'est elle qui prend le pas sur la msgbox : si j'y réponds oui, les modif sont enregistrées même si j'ai répondu non à la msgbox.

Catherine
Correction après nouveaux tests : la boite de dialogue prédéfinie apparait même quand je réponds OUI à la msgbox perso !

Aucune idée du nom que peut porter cette fameuse boite prédéfinie svp ?

Merci !

Catherine
catherineFR27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 12h03   #5
Candidat au titre de Membre du Club
 
Inscription : juin 2005
Messages : 21
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 21
Points : 12
Points : 12
Et si on désactive carrement l'alerte pour la remplacer par ton MsgBox ?

Code :
application.displayalerts = false

Penser après a remettre le code = true sinon toutes les alertes excel seront bloquées.
Phenx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 12h26   #6
Invité de passage
 
Inscription : août 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 11
Points : 1
Points : 1
C'est sans effet... déjà testé.

Citation:
Envoyé par Phenx
Et si on désactive carrement l'alerte pour la remplacer par ton MsgBox ?

Code :
application.displayalerts = false

Penser après a remettre le code = true sinon toutes les alertes excel seront bloquées.
En fait la boite de dialogue prédéfinie s'affiche qu'elle que soit la valeur de la propriété activedocument.saved (j'ai rajouté des msgbox en cours de route pour l'afficher).
Word doit utiliser autrechose pour tester l'existence de modifications dans le fichier...

Catherine
catherineFR27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2006, 17h18   #7
Invité de passage
 
Inscription : août 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 11
Points : 1
Points : 1
Merci à vous pour vos réponses.
Mes divers essai montrent que le code ci-dessous proposé par bbil :

Citation:
Envoyé par bbil
essai quelque chose du genre :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Private Sub Document_Close()
Dim rep As Integer
rep = MsgBox("Sauvegarde du document", vbYesNo)
 
 If rep = vbYes Then
   'On Sauve
   ThisDocument.Save
 Else
   'Abandon
   ThisDocument.Saved = True
End If
End Sub
fonctionne dans un document word vierge, mais pas dans mon formulaire contenant 2 tableaux et une petite vingtaine de contrôles activeX type textbox, checkbox...
Je continue donc mon enquête.

Merci encore de vos suggestions.

Catherine
catherineFR27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h35.


 
 
 
 
Partenaires

Hébergement Web