Exécuter une macro lors de la sauvegarde d'un document Word
4 réponses
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.
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
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.
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.
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.
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
Circé écrivait dans le message eBsGh5gSEHA.4068@TK2MSFTNGP09.phx.gbl :
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
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
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+
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.
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+
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
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
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