IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Mettre à jour les champs d'un document


Sujet :

VBA Word

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 322
    Points : 211
    Points
    211
    Par défaut Mettre à jour les champs d'un document
    Bonjour,

    j'ai une macro pour mettre à jour les champs d'un document
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub majChamps() 
          ActiveDocument.Fields.Update 
    End Sub
    mais celle-ci ne marche que pour le corps et non pour les en-tête et pieds de page. Auriez-vous une solution pour que la mise à jour puisse s'appliquer aux deux (c'est à dire vraiment tout le document) ?

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 322
    Points : 211
    Points
    211
    Par défaut
    j'ai trouvé en persévérant dans ma recherche

  3. #3
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    C'est une longue macro pour peu de chose.
    Si c'est dans ton pied de page, il suffit d'atteindre le pied de page.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  4. #4
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut pour mettre à jour les entêtes et pied de page
    Salut,

    Attention pour être sûr de mettre à jour tous les pieds de page et les entêtes, il faut les atteindre mais avec beaucoup de section avec des entêtes et pieds de page différents, c'est vite galère.

    La meilleure chose à effectuer est de passer ton document de mode page à mode normal ou réciproquement. C'est simple et facile.

    @+

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 322
    Points : 211
    Points
    211
    Par défaut
    en prenant le code de du dernier post, c'est pas si long que ça (5-6 lignes) je trouve.
    Merci pour vos commentaires

  6. #6
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Super

    @+

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    J'avais le meme problème, si jamais ca interesse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim J As Integer
    Dim K As Integer
     
    If ActiveDocument.Sections.Count > 2 Then
       For J = 3 To ActiveDocument.Sections.Count
          For K = 1 To ActiveDocument.Sections(J).Headers.Count
             ActiveDocument.Sections(J).Headers(K).Range.Fields.Update
          Next K
          For K = 1 To ActiveDocument.Sections(J).Footers.Count
             ActiveDocument.Sections(J).Footers(K).Range.Fields.Update
          Next K
       Next J
    End If

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 17
    Points : 10
    Points
    10
    Par défaut Mise à jour des champs word [plusieurs sections]
    J'ai trouvé une nouvelle solution nécéssitant aucune macro, pour mettre à jours des champs dans Word.
    Même les champs dans les en-têtes et pieds de page lorsque l'on a plusieurs sections, sont mis à jour.

    1 - Il faut faire un aperçu avant impression (ce qui va mettre à jour les champs du document)
    (si ce n'est pas le cas allez dans le Menu Outils-> Options -> Onglet Impression et cochez "Mettre à jour les champs")

    2 - Refermer l'aperçu.
    Si vous enregistrez à ce moment là, les champs n'auront pas été mis à jour pour de la prochaine ouverture (word n'a pas considéré cela comme une modification )

    3 - Il faut faire une "réelle" modification de votre document puis enregistrer pour que word prenne aussi en compte la mise à jour.
    Il suffit de d'ajouter un espace puis le supprimer et finalement enregistrer.

    Dorénavant vos champs sont à jour!!

    Une solution qui m'a bien rendu service !! Et rapide à faire

  9. #9
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut

    Juste que la question initial était la mise à jour des champs par macro !

    Il est probable que le code donné n'est que petite partie du code utilisé.

    Il y a encore plus facile, Ctrl + A suivi de F9 pour mettre les champs à jour !
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  10. #10
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut Eugiba,

    Ta solution fonctionne bien avec Word 2003 PC et Word 2004 mac mais ce n'est plus le cas avec Word 2007 (des sections sont récalcitrantes)

    Citation Envoyé par eugiba Voir le message
    J'ai trouvé une nouvelle solution nécéssitant aucune macro, pour mettre à jours des champs dans Word.
    Même les champs dans les en-têtes et pieds de page lorsque l'on a plusieurs sections, sont mis à jour.

    1 - Il faut faire un aperçu avant impression (ce qui va mettre à jour les champs du document)
    (si ce n'est pas le cas allez dans le Menu Outils-> Options -> Onglet Impression et cochez "Mettre à jour les champs")

    2 - Refermer l'aperçu.
    Si vous enregistrez à ce moment là, les champs n'auront pas été mis à jour pour de la prochaine ouverture (word n'a pas considéré cela comme une modification )

    3 - Il faut faire une "réelle" modification de votre document puis enregistrer pour que word prenne aussi en compte la mise à jour.
    Il suffit de d'ajouter un espace puis le supprimer et finalement enregistrer.

    Dorénavant vos champs sont à jour!!

    Une solution qui m'a bien rendu service !! Et rapide à faire
    Moi aussi elle m'a bien rendu service (surtout avec des gros documents). Dernier point, il fallait se positionner sur la dernière section sinon si le document contenait des sections continues et des sections à saut de page sur des pages paires, ce n'était pas correctement mis à jour dans la table des matières (n° de page).

    @+

  11. #11
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut Hitmax,

    Citation Envoyé par hitmax Voir le message
    J'avais le meme problème, si jamais ca interesse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim J As Integer
    Dim K As Integer
     
    If ActiveDocument.Sections.Count > 2 Then
       For J = 3 To ActiveDocument.Sections.Count
          For K = 1 To ActiveDocument.Sections(J).Headers.Count
             ActiveDocument.Sections(J).Headers(K).Range.Fields.Update
          Next K
          For K = 1 To ActiveDocument.Sections(J).Footers.Count
             ActiveDocument.Sections(J).Footers(K).Range.Fields.Update
          Next K
       Next J
    End If
    Très bien, mais tu as recopié du code que tu utilises par ailleurs car tu commences à la 3ième section pour la mise à jour ==>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
       Dim aI As Integer
       Dim aJ As Integer
     
       For aI = 1 To ActiveDocument.Sections.Count
          For aJ = 1 To ActiveDocument.Sections(aI).Headers.Count
             ActiveDocument.Sections(aI).Headers(aJ).Range.Fields.Update
          Next
          For aJ = 1 To ActiveDocument.Sections(aI).Footers.Count
             ActiveDocument.Sections(aI).Footers(aJ).Range.Fields.Update
          Next
       Next
    End If
    @+

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    Bonjour,

    Je remonte ce post car j'ai un souci similaire.
    Le code proposé à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
       Dim aI As Integer
       Dim aJ As Integer
     
       For aI = 1 To ActiveDocument.Sections.Count
          For aJ = 1 To ActiveDocument.Sections(aI).Headers.Count
             ActiveDocument.Sections(aI).Headers(aJ).Range.Fields.Update
          Next
          For aJ = 1 To ActiveDocument.Sections(aI).Footers.Count
             ActiveDocument.Sections(aI).Footers(aJ).Range.Fields.Update
          Next
       Next
    permet bien de mettre à jour les entêtes et pieds de page.

    Cependant, j'ai une forme (un carré brun) avec un texte dedans, contenant un champ.

    Existe-t-il un "ActiveDocument.Sections(aI).QUELQUECHOSE" qui me permette de mettre à jour également ce texte dans la forme ?

    En vous remerciant par avance,

  13. #13
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Ta forme est soit un IlineShape, soit un Shape.
    On atteint son contenu avec ShapeRange.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    Bonjour,

    Je pense que je n'ai pas été claire. En fait la forme n'est pas dans un formulaire mais bien dans Word, sous forme d'un carré, d'où le souci de mise à jour.

  15. #15
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Ta forme est soit un Sahpe soit un InlineShape et y accès avec un ShapeRange.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    Excusez-moi mais je n'ai toujours pas compris. Où puis-je voir ce paramètre ? que faut-il que je change ? est-ce dans les paramètres de la forme ou bien y a-t-il quelque chose à écrire dans le code ?
    En vous remerciant par avance,

  17. #17
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Ce n'est pas un paramètre, c'est le principe même des objets graphiques dans un document.
    Un objet graphique, que ce soit une zone de texte, une image, ... n'a que deux "états", soit c'est un Shape, soit un InlineShape.

    Si tu ne sais pas sii c'est un Shape ou un InlineShape, il suffit de les compter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox "Shapes = " & ActiveDocument.Shapes.Count
    MsgBox "InlineShapes = " & ActiveDocument.InlineShapes.Count
    Ce qui est contenu dans un objet graphique ne fait pas partie de la MainStory de Word, il faut donc adresser le range de l'objet.

    Voilà comment accéder au contenu d'un objet Shape.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Activedocument.Shapes(1).Select
    selection.ShapeRange(1).Select
    selection.Fields(1).Update
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    Merci, j'ai donc pu déterminer qu'il y avait 3 Shape.

    Dans le code fourni :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Activedocument.Shapes(1).Select
    selection.ShapeRange(1).Select
    selection.Fields(1).Update
    Je suppose qu'il faille remplacer le "1" par quelque chose car ça lève une erreur "Argument ou appel de procédure incorrect"

    Je suis vraiment désolée, je suppose que ce que je demande fait partie des bases...

    Merci par avance,

  19. #19
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Ton champ se trouve dans un des trois shapes.

    Le 1 représente l'idex du shape, son adresse.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    Si cela représente mes 3 Shapes, j'ai donc testé avec 1, 2 et 3 puisque je ne savais pas laquelle c'était. Or, l'erreur est toujours soulevée quelque soit l'index choisi. Manquerait-il quelque chose ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/05/2011, 10h24
  2. Mettre à jour les charsets des tables ET des champs
    Par dev_web2 dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/12/2009, 08h21
  3. Réponses: 7
    Dernier message: 06/06/2008, 10h12
  4. Réponses: 2
    Dernier message: 18/05/2008, 16h05
  5. Réponses: 3
    Dernier message: 09/07/2004, 10h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo