Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Exécuter une macro lors de la sauvegarde d'un document Word

4 réponses
Avatar
bernie.bern
Bonjour.

J'ai besoin d'exécuter une certaine macro lorsque l'utilisateur
sauvegarde son document Word : j'ai donc nommé cette macro FileSave.
Elle s'exécute bien lorsqu'on clique sur sauver, ou
fichier/Enregistrer, ou encore fichier/enregistrer sous à condition
que le fichier ait été modifié...

J'aimerais pouvoir exécuter cette macro dans TOUS les cas où le
document est sauvegardé (par exemple, si l'utilisateur ferme Word et
que le document a été modifié, une fenêtre lui demande s'il veut le
sauvegarder)

S'il y avait une façon simple de procéder, ça me conviendrait
parfaitement.

Ma version de Word : 2002

Ah, encore une chose importante : je suis un parfait débutant en VB...

Merci d'avance pour vos conseils avisés !

P.S. : j'ai déjà posté ce message sur fr.com.lang.basic, mais je n'ai
pas obtenu de réponse.

4 réponses

Avatar
Circé
Bonjour,

Je pense qu'il faut plutôt que tu utilises l'événement BeforeSave. Ainsi
l'action se déclenchera à chaque fois que l'utilisateur voudra enregistrer.

Regarde dans l'aide et cherche DocumentBeforeSave

Circé


Bernard wrote:
|| Bonjour.
||
|| J'ai besoin d'exécuter une certaine macro lorsque l'utilisateur
|| sauvegarde son document Word : j'ai donc nommé cette macro FileSave.
|| Elle s'exécute bien lorsqu'on clique sur sauver, ou
|| fichier/Enregistrer, ou encore fichier/enregistrer sous à condition
|| que le fichier ait été modifié...
||
|| J'aimerais pouvoir exécuter cette macro dans TOUS les cas où le
|| document est sauvegardé (par exemple, si l'utilisateur ferme Word et
|| que le document a été modifié, une fenêtre lui demande s'il veut le
|| sauvegarder)
||
|| S'il y avait une façon simple de procéder, ça me conviendrait
|| parfaitement.
||
|| Ma version de Word : 2002
||
|| Ah, encore une chose importante : je suis un parfait débutant en
|| VB...
||
|| Merci d'avance pour vos conseils avisés !
||
|| P.S. : j'ai déjà posté ce message sur fr.com.lang.basic, mais je n'ai
|| pas obtenu de réponse.
Avatar
Bernard Bandiera
Circé écrivait dans le message :
Bonjour,

Je pense qu'il faut plutôt que tu utilises l'événement BeforeSave.
Ainsi l'action se déclenchera à chaque fois que l'utilisateur voudra
enregistrer.

Regarde dans l'aide et cherche DocumentBeforeSave

Circé


Merci, Circé, pour ton aide.

Juste un petit problème : dans ma macro, j'avais un tableau de String en
"Public" (utilisé dans 2 fonctions) ; ave cla solution que tu me donnes, je
n'arrive pas à rendre ce tableau Public. Une solution de coqntournement
serait que la fonction appelante passe ce tableau en paramète à l'appelée,
mais comment faire ? Est-ce possible, d'ailleurs, de passer en paramètre un
tableau de String ? Si oui, quelle est la syntaxe ? J'ai cherché dans
l'aide, sans succès.

Désolé, mais je débute vraiment en VB. En C, Perl ou Java, ça ne me poserait
pas de problème, mais là...

--
Bernard

Gloire à qui, n'ayant pas d'idéal sacro-saint
Se borne à ne pas trop emmerder son voisin
Georges Brassens - Don Juan

Avatar
Geo
Bonjour Bernard


Merci, Circé, pour ton aide.
Juste un petit problème : dans ma macro, j'avais un tableau de
String

en "Public" (utilisé dans 2 fonctions) ; ave cla solution que tu me
donnes, je n'arrive pas à rendre ce tableau Public.


Pour rendre une variable accessible de plusieurs sub il faut la
déclarer en dehors des sub et fonctions, en tête:
Option Explicit
Dim MonTableauPublique(10) as string
Sub App_DocumentBeforeSave

etc.

Sinon avec la procédure que tu comptais employer, je pense que tu
aurais pu ajouter ActiveDocument.Saved = false.
Mais le DocumentBeforeSave est quand même plus propre.

--

A+

Avatar
Anacoluthe
Bonjour !

'Bernard Bandiera' nous a écrit ...
Merci, Circé, pour ton aide.
Juste un petit problème : dans ma macro, j'avais un tableau de String en
"Public" (utilisé dans 2 fonctions) ; ave cla solution que tu me donnes, je
n'arrive pas à rendre ce tableau Public. Une solution de coqntournement
serait que la fonction appelante passe ce tableau en paramète à l'appelée,
mais comment faire ? Est-ce possible, d'ailleurs, de passer en paramètre un
tableau de String ? Si oui, quelle est la syntaxe ? J'ai cherché dans
l'aide, sans succès.


Une variable n'est publique que dans les modules d'un même projet.

Utilisez un type Variant pour une variable tableau et redéfinissez
dans la fonction/procédure le tableau de variables.
Petit exemple pour comprendre les syntaxes :

Function UnTableau() As String()
Dim Tablo(3) As String
Tablo(1) = "j'ai "
Tablo(2) = "tout "
Tablo(3) = "compris"
UnTableau = Tablo
End Function

Sub Test()
Dim Truc As Variant
Truc = UnTableau
For i = 1 To 3
Selection.TypeText Truc(i)
Next i
End Sub

Anacoluthe
« Le yukulélé est à la guitare ce que le string est au caleçon. »
- Thomas FERSEN