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

Numérotation des révisions incrémentée

43 réponses
Avatar
C15
Bonjour à tous, bonjour à toutes (dont Circé bien sûr)

J'ai un document avec un en-tête dans lequel j'ai un
tableau avec REV 0 dans une cellule et nov 09 dans une autre.

Est-il possible que lorsque je modifie ce document
le mois correspondant à la date de révision s'affiche (par exemple déc 09)
le numéro de la révision change (REV 1) ?

Merci de votre aide.

A+

C15

10 réponses

1 2 3 4 5
Avatar
C15
Bonsoir à tous et à toutes,

J'ai peut-être trouvé une piste :

pour la révision j'insère le champ Revnum qui me donne le nombre de
révisions effectuées.
pour la date, j'insère la date du dernier enregistrement Savedate au
format qui va bien.

Mon raisonnement est-il correct ?

Par contre la macro suivante n'a pas l'air de marcher pour que ces 2
champs, qui sont dans l'en-tête, s'actualisent à l'ouverture.

>>>
Sub autoexec()
ActiveDocument.Fileds.Update
End Sub
>>>>

Il semblerait qu'elle ne fonctionne que pour les champs qui sont dans le
corps du document.


Merci de votre aide.

A+

C15


C15 a écrit :
Bonjour à tous, bonjour à toutes (dont Circé bien sûr)

J'ai un document avec un en-tête dans lequel j'ai un
tableau avec REV 0 dans une cellule et nov 09 dans une autre.

Est-il possible que lorsque je modifie ce document
le mois correspondant à la date de révision s'affiche (par exemple
déc 09)
le numéro de la révision change (REV 1) ?

Merci de votre aide.

A+

C15


Avatar
Geo
Bonjour
[ Cette réponse est faite sur le forum public Word :
news://msnews.microsoft.com/microsoft.public.fr.word ]



Sub autoexec()
ActiveDocument.Fileds.Update
End Sub
>>>>

Il semblerait qu'elle ne fonctionne que pour les champs qui sont dans le corps du
document.



en théorie elle fonctionne pour tout le document, en pratique, il me
semble bien que vous avez raison.

Vous pouvez choisir dans quelle partie appliquer le update :
exemple inspiré de l'aide :
Set myRange = ActiveDocument.Sections(1).Footers _
(wdHeaderFooterPrimary).Range
myRange.fields.update

Soit on fait une boucle génrale sur l'ensemble des parties d'un
document :
Dim P As Range
For Each P In ActiveDocument.StoryRanges
P.fields.update
Next P

Pas testé complètement

--
A+
Avatar
Circé
Bonsoir à tous les deux,

Il y a, dans la FAQ, une macro qui met à jour tous les champs de tous
les en-têtes et de tous les pdp :

http://faqword.com/index.php/faq/vba-solutions/548-comment-mettre-a-jour-tous-les-champs-situes-dans-tous-les-entetes-et-pieds-de-page-dun-document-.html

Circé
http://faqword.com

C15 avait soumis l'idée :
Bonsoir à tous et à toutes,



J'ai peut-être trouvé une piste :



pour la révision j'insère le champ Revnum qui me donne le nombre de
révisions effectuées.
pour la date, j'insère la date du dernier enregistrement Savedate au format
qui va bien.



Mon raisonnement est-il correct ?



Par contre la macro suivante n'a pas l'air de marcher pour que ces 2 champs,
qui sont dans l'en-tête, s'actualisent à l'ouverture.



>>>
Sub autoexec()
ActiveDocument.Fileds.Update
End Sub
>>>>



Il semblerait qu'elle ne fonctionne que pour les champs qui sont dans le
corps du document.




Merci de votre aide.



A+



C15




C15 a écrit :
Bonjour à tous, bonjour à toutes (dont Circé bien sûr)

J'ai un document avec un en-tête dans lequel j'ai un
tableau avec REV 0 dans une cellule et nov 09 dans une autre.

Est-il possible que lorsque je modifie ce document
le mois correspondant à la date de révision s'affiche (par exemple déc
09)
le numéro de la révision change (REV 1) ?

Merci de votre aide.

A+

C15




Avatar
C15
Bonsoir Circé... et les autres,

Merci de cette réponse.

J'ai mis cette macro dans mon document et l'ai renommée AutoOpen pour
qu'elle se déclenche à l'ouverture du fichier.
Cela marche.

Mais, dans mes en-têtes j'ai utilisé le champ RevNum pour que mon
information Rev X s'incrémente dès que je modifie le document.

Le problème est que je voudrais que ce Rev X ne concerne que la section
courante, même mieux la page actuelle.

Revnum décompte le nombre de fois où le fichier, dans son ensemble, a
été sauvegardé et donc l'information Rev X est la même dans tous les
en-têtes, même si j'ai mis des sauts de section partout.

Pour résumer y-a-t'il un moyen de décompter les modifications faites
dans une section ?

Merci de ton aide.

A+

C15


Circé a écrit :
Bonsoir à tous les deux,

Il y a, dans la FAQ, une macro qui met à jour tous les champs de tous
les en-têtes et de tous les pdp :

http://faqword.com/index.php/faq/vba-solutions/548-comment-mettre-a-jour-tous-les-champs-situes-dans-tous-les-entetes-et-pieds-de-page-dun-document-.html


Circé
http://faqword.com

C15 avait soumis l'idée :
Bonsoir à tous et à toutes,



J'ai peut-être trouvé une piste :



pour la révision j'insère le champ Revnum qui me donne le nombre
de révisions effectuées.
pour la date, j'insère la date du dernier enregistrement Savedate
au format qui va bien.



Mon raisonnement est-il correct ?



Par contre la macro suivante n'a pas l'air de marcher pour que ces 2
champs, qui sont dans l'en-tête, s'actualisent à l'ouverture.



>>>
Sub autoexec()
ActiveDocument.Fileds.Update
End Sub
>>>>



Il semblerait qu'elle ne fonctionne que pour les champs qui sont dans
le corps du document.




Merci de votre aide.



A+



C15




C15 a écrit :
Bonjour à tous, bonjour à toutes (dont Circé bien sûr)

J'ai un document avec un en-tête dans lequel j'ai un
tableau avec REV 0 dans une cellule et nov 09 dans une autre.

Est-il possible que lorsque je modifie ce document
le mois correspondant à la date de révision s'affiche (par
exemple déc 09)
le numéro de la révision change (REV 1) ?

Merci de votre aide.

A+

C15








Avatar
Circé
Bonsoir,

Il n'y a pas, à ma connaissance, de moyen de savoir combien de fois a
été révisée une section en particulier.

Cela étant dit, on peut effectivement créer une macro qui met à jour
les champs de la section courante :

Sub maj_champ2()
Dim oField As Field
Dim oHeader As HeaderFooter

For Each oHeader In Selection.Sections(1).Headers
If oHeader.Exists Then
For Each oField In oHeader.Range.Fields
oField.Update
Next oField
End If
Next oHeader
End Sub

Circé
http://faqword.com


C15 a émis l'idée suivante :
Bonsoir Circé... et les autres,



Merci de cette réponse.



J'ai mis cette macro dans mon document et l'ai renommée AutoOpen pour qu'elle
se déclenche à l'ouverture du fichier.
Cela marche.



Mais, dans mes en-têtes j'ai utilisé le champ RevNum pour que mon information
Rev X s'incrémente dès que je modifie le document.



Le problème est que je voudrais que ce Rev X ne concerne que la section
courante, même mieux la page actuelle.



Revnum décompte le nombre de fois où le fichier, dans son ensemble, a été
sauvegardé et donc l'information Rev X est la même dans tous les en-têtes,
même si j'ai mis des sauts de section partout.



Pour résumer y-a-t'il un moyen de décompter les modifications faites dans une
section ?



Merci de ton aide.



A+



C15




Circé a écrit :
Bonsoir à tous les deux,

Il y a, dans la FAQ, une macro qui met à jour tous les champs de tous les
en-têtes et de tous les pdp :

http://faqword.com/index.php/faq/vba-solutions/548-comment-mettre-a-jour-tous-les-champs-situes-dans-tous-les-entetes-et-pieds-de-page-dun-document-.html


Circé
http://faqword.com

C15 avait soumis l'idée :
Bonsoir à tous et à toutes,



J'ai peut-être trouvé une piste :



pour la révision j'insère le champ Revnum qui me donne le nombre de
révisions effectuées.
pour la date, j'insère la date du dernier enregistrement Savedate au
format qui va bien.



Mon raisonnement est-il correct ?



Par contre la macro suivante n'a pas l'air de marcher pour que ces 2
champs, qui sont dans l'en-tête, s'actualisent à l'ouverture.



>>>
Sub autoexec()
ActiveDocument.Fileds.Update
End Sub
>>>>



Il semblerait qu'elle ne fonctionne que pour les champs qui sont dans le
corps du document.




Merci de votre aide.



A+



C15




C15 a écrit :
Bonjour à tous, bonjour à toutes (dont Circé bien sûr)

J'ai un document avec un en-tête dans lequel j'ai un
tableau avec REV 0 dans une cellule et nov 09 dans une autre.

Est-il possible que lorsque je modifie ce document
le mois correspondant à la date de révision s'affiche (par exemple
déc 09)
le numéro de la révision change (REV 1) ?

Merci de votre aide.

A+

C15










Avatar
C15
Bonsoir,

J'ai essayé ta macro.

Elle marche bien, mais...

en rappelant que dans chaque en-tête de section (non identique au
précédent mais avec des pages paires et impaires), j'ai le champ Revnum
qui doit m'afficher les nombres de sauvegardes (et indirectement le
nombre de modifs)

je suis dans une section d'un document qui en comporte plusieurs
j'y fais une modif
je sauvegarde (sans fermer)
j'éxécute la macro
au début elle mettait à jour l'en-tête de la section en cours et de la
section précédente !!!!
ensuite j'ai augmenté le texte d'une page pour avoir donc 1 section
répartie sur 1,5 pages
j'ai sauvegardé et exécuter la macro, l'en-tête a été mis à jour.
j'ai supprimé du texte pour revenir à une section par page
seule la section en cours était mise à jour (?).

Par contre imaginons 3 sections avec REV 10 12 10
je fais 2 modifs sur la sec 1 ==>Rev 12 12 10
je fais 1 modif sur la sec 2 ==>Rev 12 15 10
j'aurai bien voulu avoir 12 13 10 ;-((

Une fois de plus tu as raison, a priori il n'y a pas de décompte des MAJ
par section

Comme c'est pour un document important, je ne peux prendre de risque, je
n'utiliserai pas Revnum.

Par contre pour la date et la numérotation des pages, ta macro marche
super bien.


Merci encore de ton aide.

A+

C15



Circé a écrit :
Bonsoir,

Il n'y a pas, à ma connaissance, de moyen de savoir combien de fois a
été révisée une section en particulier.

Cela étant dit, on peut effectivement créer une macro qui met à jour les
champs de la section courante :

Sub maj_champ2()
Dim oField As Field
Dim oHeader As HeaderFooter

For Each oHeader In Selection.Sections(1).Headers
If oHeader.Exists Then
For Each oField In oHeader.Range.Fields
oField.Update
Next oField
End If
Next oHeader
End Sub

Circé
http://faqword.com


C15 a émis l'idée suivante :
Bonsoir Circé... et les autres,



Merci de cette réponse.



J'ai mis cette macro dans mon document et l'ai renommée AutoOpen pour
qu'elle se déclenche à l'ouverture du fichier.
Cela marche.



Mais, dans mes en-têtes j'ai utilisé le champ RevNum pour que mon
information Rev X s'incrémente dès que je modifie le document.



Le problème est que je voudrais que ce Rev X ne concerne que la
section courante, même mieux la page actuelle.



Revnum décompte le nombre de fois où le fichier, dans son ensemble, a
été sauvegardé et donc l'information Rev X est la même dans tous les
en-têtes, même si j'ai mis des sauts de section partout.



Pour résumer y-a-t'il un moyen de décompter les modifications faites
dans une section ?



Merci de ton aide.



A+



C15




Circé a écrit :
Bonsoir à tous les deux,

Il y a, dans la FAQ, une macro qui met à jour tous les champs de tous
les en-têtes et de tous les pdp :

http://faqword.com/index.php/faq/vba-solutions/548-comment-mettre-a-jour-tous-les-champs-situes-dans-tous-les-entetes-et-pieds-de-page-dun-document-.html


Circé
http://faqword.com

C15 avait soumis l'idée :
Bonsoir à tous et à toutes,



J'ai peut-être trouvé une piste :



pour la révision j'insère le champ Revnum qui me donne le nombre
de révisions effectuées.
pour la date, j'insère la date du dernier enregistrement
Savedate au format qui va bien.



Mon raisonnement est-il correct ?



Par contre la macro suivante n'a pas l'air de marcher pour que ces 2
champs, qui sont dans l'en-tête, s'actualisent à l'ouverture.



>>>
Sub autoexec()
ActiveDocument.Fileds.Update
End Sub
>>>>



Il semblerait qu'elle ne fonctionne que pour les champs qui sont
dans le corps du document.




Merci de votre aide.



A+



C15




C15 a écrit :
Bonjour à tous, bonjour à toutes (dont Circé bien sûr)

J'ai un document avec un en-tête dans lequel j'ai un
tableau avec REV 0 dans une cellule et nov 09 dans une autre.

Est-il possible que lorsque je modifie ce document
le mois correspondant à la date de révision s'affiche (par
exemple déc 09)
le numéro de la révision change (REV 1) ?

Merci de votre aide.

A+

C15














Avatar
Circé
Bonjour,


Le 03/12/2009, C15 a supposé :
Bonsoir,

J'ai essayé ta macro.

Elle marche bien, mais...




Par contre imaginons 3 sections avec REV 10 12 10
je fais 2 modifs sur la sec 1 ==>Rev 12 12 10
je fais 1 modif sur la sec 2 ==>Rev 12 15 10
j'aurai bien voulu avoir 12 13 10 ;-((



Ah ben oui... quand le champ se met à jour, il se met à jour ! :D

Une fois de plus tu as raison, a priori il n'y a pas de décompte des MAJ par
section



C'est le problème...

Comme c'est pour un document important, je ne peux prendre de risque, je
n'utiliserai pas Revnum.



On pourrait imaginer que la macro ajoute 1 à un chiffre qu'on mettrait
en en-tête, à chaque fois qu'on ferait une mise à jour des champs
d'en-tête dans la section en cours.

Par contre pour la date et la numérotation des pages, ta macro marche super
bien.


Merci encore de ton aide.

A+

C15



Circé a écrit :
Bonsoir,

Il n'y a pas, à ma connaissance, de moyen de savoir combien de fois a été
révisée une section en particulier.

Cela étant dit, on peut effectivement créer une macro qui met à jour les
champs de la section courante :

Sub maj_champ2()
Dim oField As Field
Dim oHeader As HeaderFooter

For Each oHeader In Selection.Sections(1).Headers
If oHeader.Exists Then
For Each oField In oHeader.Range.Fields
oField.Update
Next oField
End If
Next oHeader
End Sub

Circé
http://faqword.com


C15 a émis l'idée suivante :
Bonsoir Circé... et les autres,



Merci de cette réponse.



J'ai mis cette macro dans mon document et l'ai renommée AutoOpen pour
qu'elle se déclenche à l'ouverture du fichier.
Cela marche.



Mais, dans mes en-têtes j'ai utilisé le champ RevNum pour que mon
information Rev X s'incrémente dès que je modifie le document.



Le problème est que je voudrais que ce Rev X ne concerne que la section
courante, même mieux la page actuelle.



Revnum décompte le nombre de fois où le fichier, dans son ensemble, a été
sauvegardé et donc l'information Rev X est la même dans tous les en-têtes,
même si j'ai mis des sauts de section partout.



Pour résumer y-a-t'il un moyen de décompter les modifications faites dans
une section ?



Merci de ton aide.



A+



C15




Circé a écrit :
Bonsoir à tous les deux,

Il y a, dans la FAQ, une macro qui met à jour tous les champs de tous les
en-têtes et de tous les pdp :

http://faqword.com/index.php/faq/vba-solutions/548-comment-mettre-a-jour-tous-les-champs-situes-dans-tous-les-entetes-et-pieds-de-page-dun-document-.html


Circé
http://faqword.com

C15 avait soumis l'idée :
Bonsoir à tous et à toutes,



J'ai peut-être trouvé une piste :



pour la révision j'insère le champ Revnum qui me donne le nombre de
révisions effectuées.
pour la date, j'insère la date du dernier enregistrement Savedate au
format qui va bien.



Mon raisonnement est-il correct ?



Par contre la macro suivante n'a pas l'air de marcher pour que ces 2
champs, qui sont dans l'en-tête, s'actualisent à l'ouverture.



>>>
Sub autoexec()
ActiveDocument.Fileds.Update
End Sub
>>>>



Il semblerait qu'elle ne fonctionne que pour les champs qui sont dans le
corps du document.




Merci de votre aide.



A+



C15




C15 a écrit :
Bonjour à tous, bonjour à toutes (dont Circé bien sûr)

J'ai un document avec un en-tête dans lequel j'ai un
tableau avec REV 0 dans une cellule et nov 09 dans une autre.

Est-il possible que lorsque je modifie ce document
le mois correspondant à la date de révision s'affiche (par exemple
déc 09)
le numéro de la révision change (REV 1) ?

Merci de votre aide.

A+

C15
















Avatar
Geo
Bonjour

On pourrait imaginer que la macro ajoute 1 à un chiffre qu'on mettrait en en-tête, à
chaque fois qu'on ferait une mise à jour des champs d'en-tête dans la section en cours.



C'est le problème de l'automatisation.
Le jour où on veut en sortir c'est galère.

Est-ce qu'il ne faudrait pas mettre un compteur de révision par section
dans les propriétés du document et demander à l'utilisateur de préciser
à chaque fermeture du document sur quelles sections la révision a porté
?
Si les documents ont tous le même nombre de sections, ça me parait
abordable. Le tout est de savoir si le jeu en vaut la chandelle.

--
A+
Avatar
C15
bonsoir Geo et Circé,

En naviguant hier soir sur Faqword.com, Circé tu connais ? ;-)))))
j'ai trouvé ceci :
http://www.faqword.com/index.php/faq/vba-solutions/516-comment-utiliser-un-signet-en-tant-que-variable-dans-une-macro-.html

J'ai pensé que si j'attribuai au chiffre correspondant à la rev (REV X)
un signet (revs1)et en l'utilisant en tant que variable comme le propose
le code ci-dessus, par une macro il suffirait de faire +1 pour
enregistrer la révision (par combinaison de ces 2 macros).
J'arrive donc sans le savoir à la proposition de Circé reprise par Geo.

Le problème c'est la mise en musique, car là j'entre dans mon domaine
d'incompétence.

A partir de la 1ère macro :
>>>
Sub maj_champ2()
Dim oField As Field
Dim oHeader As HeaderFooter

For Each oHeader In Selection.Sections(1).Headers
If oHeader.Exists Then
For Each oField In oHeader.Range.Fields
oField.Update
Next oField
End If
Next oHeader
End Sub
>>>

et de la 2ième
>>>
Public Sub ChercheEtStockeLeSignetToto()
Dim MaVariable As String, MonSignet As String
MonSignet = "toto"
If ActiveDocument.Bookmarks.Exists(MonSignet) Then
MaVariable = ActiveDocument.Bookmarks(MonSignet).Range.Text
End If
End Sub
>>>

je me suis lancé dans un mix de cela avec la certitude que cela ne
pourrait marcher (lié au fait que je ne sais comment traiter ces
variables) qu'après de sévères corrections faites pas les spécialistes
du genre (suivez-mon regard).

Je vais sans doute vous faire rigoler (ou vous faire désespérer de la
nature humaine) mais voilà comment j'ai initié l'affaire.
A vous de voir comment l'essai peut être transformé (comme dirait
Sébastien Chabal)

>>>
Sub maj_champ3()
Dim oField As Field
Dim oHeader As HeaderFooter
Dim MaVariable As Integer, MonSignet As Integer

MonSignet = "revs1"

If ActiveDocument.Bookmarks.Exists(MonSignet) Then
MaVariable = ActiveDocument.Bookmarks(MonSignet).Range.Text + 1
End If

For Each oHeader In Selection.Sections(1).Headers
If oHeader.Exists Then
For Each oField In oHeader.Range.Fields
oField.Update
Next oField
End If
Next oHeader
End Sub
>>>


Merci de votre aide.

A+

C15


Geo a écrit :
Bonjour

On pourrait imaginer que la macro ajoute 1 à un chiffre qu'on
mettrait en en-tête, à chaque fois qu'on ferait une mise à jour des
champs d'en-tête dans la section en cours.



C'est le problème de l'automatisation.
Le jour où on veut en sortir c'est galère.

Est-ce qu'il ne faudrait pas mettre un compteur de révision par section
dans les propriétés du document et demander à l'utilisateur de préciser
à chaque fermeture du document sur quelles sections la révision a porté ?
Si les documents ont tous le même nombre de sections, ça me parait
abordable. Le tout est de savoir si le jeu en vaut la chandelle.



Avatar
Geo
Bonjour

Ouais mais vu la déculottée qu'on s'est pris, il y a des références
qu'il vaut mieux éviter. ;o)

Si on reprend le raisonnement avant de programmer, on définirait un
signet dans chaque section, revs1, revs2, revs3 qui correspond au
numéro de version de cette section.
Intérêt : on peut utiliser la valeur dans une macro et donc
l'incrémenter et placer la valeur modifiée dans le même signet.
On devrait y arriver.
J'aurais plutôt pensé à glisser ça dans les propriétés de document,
mais peu importe, à la limite le signet permet de prévoir un nombre de
sections variables.
Mais comment déclencher cette macro ?
A chaque enregistrement ?
déjà ça me parait un peu beaucoup, mais comment savoir quelle(s)
section a été modifiée ?
A l'ouverture ? Même question.

Avez-vous prévu de "suivre" les modifications ? ce serait peut-être une
piste pour savoir ce qui est modifié.

--
A+
1 2 3 4 5