Word, Champ SAVEDATE dans en-tête, pb MAJ VBA
Fermé
Bobby917
Messages postés
2
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
2 mars 2009
-
2 mars 2009 à 11:26
m@rina Messages postés 21701 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 11 mars 2025 - 3 mars 2009 à 10:57
m@rina Messages postés 21701 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 11 mars 2025 - 3 mars 2009 à 10:57
A voir également:
- Word, Champ SAVEDATE dans en-tête, pb MAJ VBA
- Supprimer une page dans word - Guide
- Espace insécable word - Guide
- Organigramme word - Guide
- Tableau word - Guide
- Suivi des modifications word - Guide
2 réponses
m@rina
Messages postés
21701
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
11 mars 2025
11 407
2 mars 2009 à 14:25
2 mars 2009 à 14:25
Bonjour,
Je vois deux solutions à ton problème :
Tu écris une macro simple qui met tes champs à jour, et tu fais exécuter cette macro au démarrage ou à la sortie d'un des champs du formulaire :
Par contre cette macro aura toujours un temps de retard comme tu le fais remarquer toi-même.
Une autre solution sans doute plus judicieuse serait de surcharger les macros FileSaveAs et FileSave. Ainsi lorsque l'utilisateur enregistrera son document, les champs se mettront à jour en toute transparence. Et dans la macro on ajoute l'enregistrement après la mise à jour des champs pour ne pas avoir une version v-1.
m@rina
Je vois deux solutions à ton problème :
Tu écris une macro simple qui met tes champs à jour, et tu fais exécuter cette macro au démarrage ou à la sortie d'un des champs du formulaire :
Sub enreg() For x = 1 To 2 ActiveDocument.Fields(x).Update Next x End Sub
Par contre cette macro aura toujours un temps de retard comme tu le fais remarquer toi-même.
Une autre solution sans doute plus judicieuse serait de surcharger les macros FileSaveAs et FileSave. Ainsi lorsque l'utilisateur enregistrera son document, les champs se mettront à jour en toute transparence. Et dans la macro on ajoute l'enregistrement après la mise à jour des champs pour ne pas avoir une version v-1.
Sub FileSaveAs() Dialogs(wdDialogFileSaveAs).Show FileSave 'appelle la macro d'enregistrement pour mise à jour des champs End Sub
Sub FileSave() 'sauvegarde puis mets à jour les champs ActiveDocument.Save For x = 1 To 2 ActiveDocument.Fields(x).Update Next End Sub
m@rina
m@rina
Messages postés
21701
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
11 mars 2025
11 407
3 mars 2009 à 10:57
3 mars 2009 à 10:57
Bonjour,
Est-ce que le fichier est bien un modèle (dot) ?
Il me faudrait voir votre document car il n'est absolument pas normal que les champs de formulaire se réinitialisent. Si vous pouviez me mettre un exemple ici :
https://www.cjoint.com/
Pour SaveAs, ce n'est pas un événement, c'est une macro qui remplace la fonction native de Word Enregistrer sous. Les fonctions peuvent être réécrites de cette manière en surchargeant. Il suffit de connaître le nom en anglais.
m@rina
Est-ce que le fichier est bien un modèle (dot) ?
Il me faudrait voir votre document car il n'est absolument pas normal que les champs de formulaire se réinitialisent. Si vous pouviez me mettre un exemple ici :
https://www.cjoint.com/
Pour SaveAs, ce n'est pas un événement, c'est une macro qui remplace la fonction native de Word Enregistrer sous. Les fonctions peuvent être réécrites de cette manière en surchargeant. Il suffit de connaître le nom en anglais.
m@rina
2 mars 2009 à 18:15
J'ai appliqué votre seconde solution. Les champs du corps du texte sont bien mis à jours, le choix dans les listes déroulantes est bien conservé. Mais nada pour mes champs en en-tête.
J'ai donc modifié le code comme suit :
Je pourrais écrire for x=2 to 3 puisque le champ 1 est Creadate qui ne change pas. M'enfin ça paraîtrait bizarre à un relecteur.
Mes champs sont bien mis à jours, CHOUETTE !
MAIS
tous les autres champs du corps de texte sont réinitialisés... les choix des listes déroulantes sont perdus.
Pourtant l'enregistrement est fait avant, ils devraient être conservés ? J'en perds mon (peu de) latin...
Je supprime mon code et remets le votre, et là, à nouveau et contrairement à la première fois, tous les champs du corps de texte sont réinitialisés, les choix des listes déroulantes sont perdus. Que je travaille à partir du modèle de document, ou d'un document.
Pour info : avant d'appliquer votre code j'ai bien inactivé tout ce que j'avais écris par procédure événementielle BeforeSave.
Si vous avez une piste...
D'autre part, vous utilisez - et il fonctionne - l'événement SaveAs, pourtant il n'est pas répertorié dans la liste des événements disponibles. Comment se fait-ce ?
Merci,
Bobby