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

Word Discussion :

Application d'un modèle en masse [WD-2010]


Sujet :

Word

  1. #1
    Candidat au Club
    Femme Profil pro
    Assistante administratif
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Assistante administratif

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Application d'un modèle en masse
    Bonjour à tous ,

    Je travaille actuellement sur un projet de refonte de documents, dans leur mise en page principalement et j'ai donc à cet effet créé un modèle.

    La nouvelle mise en page concerne plus de 100 documents (qui ont tous été créés de la même façon (mêmes noms de titres...).

    Maintenant que j'ai mon modèle tout beau tout neuf qui s'applique bien, j'aimerais l'appliquer à ma centaine de documents, sans avoir à les ouvrir un par un...

    ça vous semble possible? une idée sur la question?

    Je vous remercie beaucoup pour votre aide

  2. #2
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Il va te falloir le faire en VBA.
    Je vois bien quelque chose de ce style.

    Ouverture du document
    Changement modèle avec par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.AttachedTemplate = "Mondoc.dotm"
    Fermeture du document

    Il ne reste qu'à boucler sur tous les fichiers d'un répertoire.
    Un peu de lecture sur la gestion des fichiers en VBA

    Il est préférable lors de l'attribution du nom du modèle de document de lui donner un chemin absolu et éventuellement sans lettre de lecteur réseau.

  3. #3
    Candidat au Club
    Femme Profil pro
    Assistante administratif
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Assistante administratif

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour Carden,

    Merci pour ta réponse, je vais essayer.

    et merci pour le lien, je suis en plein apprentissage du VBA donc il tombe au poil

  4. #4
    Candidat au Club
    Femme Profil pro
    Assistante administratif
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Assistante administratif

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour

    Alors l'application du modèle fonctionne bien, je n'ai pas encore essayé la boucle, par contre, l'en-tête et le pied de page ne se mettent pas à jour.
    y-a-t-il une possibilité pour que, de la même manière, j'applique le même en-tête et le même pied de page à tous mes documents?

    Merci

  5. #5
    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 : 61
    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 Ptitbidule,

    En fait, la solution de Carden752 est bonne mais Word ne met pas à jour spontanément les champs (sauf quelques-uns bien spécifiques) ==> il faut donc mettre à jour tes champs (ce qui par ailleurs est nécessaire pour ta table des matières aussi). De base, c'est super simple. Tu ouvres le document (Carden752 t'a déjà dit comment faire), donc c'est OK. Tu sélectionnes tout le document (l'équivalent du <Ctrl>+<A>) puis tu exécutes la commande "Mettre à jour les champs" ('équivalent du <F9>). Et là, c'est magique, les tables sont mises à jour, les champs renvoient sur les bonnes pages... le bonheur mais hélas ce bonheur est loin d'être parfait : tes entêtes et tes pieds de page ne sont pas mis à jour. Et comme tu es en Word 2010, tu vas pleurer (avant ne Word 2003, ça marchait avec une seule commande). Là, tu vas devoir parcourir tes sections les unes après les autres (si, si, je t'avais dit que tu allais pleurer), remarque, toi qui veux apprendre le VBA, c'est un bon exercice. En fait, tu pourrais te contenter que des sections différentes voire dans certains cas, simplement ouvrir l'entête et le pied de page provoque la mise à jour mais bon puisque tu y es.

    En plus, pour chaque section (même si tu ne l'utilises pas), Word créé 3 entêtes : entête normal, entête des pages paires/paires différentes, entête de la première page (je répète même si tu ne les utilises pas) et pareil pour les pieds de page. Il faut donc les mettre à jour tous les 3 (la section les utilise) pour mettre à jour correctement.

    Voilà le code (enfin l'essentiel, il faut lui ajouter un peu de ta touche perso)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Sub Sauve
        '// On sauvegarde, juste pour éviter de perdre son travail
        ActiveDocument.Save
     
        '// On met à jour les champs dans le corps du texte
        ActiveDocument.Fields.Update
     
        '// On parcourt les sections
        For aI = 1 To ActiveDocument.Sections.Count
            If ActiveDocument.Sections(aI).PageSetup.DifferentFirstPageHeaderFooter Then
                ActiveDocument.Sections(aI).Headers(wdHeaderFooterFirstPage).Range.Fields.Update
                ActiveDocument.Sections(aI).Footers(wdHeaderFooterFirstPage).Range.Fields.Update
            End If
            If ActiveDocument.Sections(aI).PageSetup.OddAndEvenPagesHeaderFooter Then
                ActiveDocument.Sections(aI).Headers(wdHeaderFooterEvenPages).Range.Fields.Update
                ActiveDocument.Sections(aI).Footers(wdHeaderFooterEvenPages).Range.Fields.Update
            End If
            ActiveDocument.Sections(aI).Headers(wdHeaderFooterPrimary).Range.Fields.Update
            ActiveDocument.Sections(aI).Footers(wdHeaderFooterPrimary).Range.Fields.Update
        Next
     
        '// On sauvegarde le résultat attendu et on change de mouchoir (car on a beaucoup pleuré)
        ActiveDocument.Save
    End Sub
    @+

    rem: l'objet Range est vraiment important, voici un article de Heureux-Oli qui traite de la différence entre l'objet Sélection et l'objet Range

  6. #6
    Candidat au Club
    Femme Profil pro
    Assistante administratif
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Assistante administratif

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    hello Sepia

    Merci beaucoup! Je vais chercher la cafetière et je m'y met

    et je vous dis quoi dans.... bon je préfère pas me demander combien de temps ça va me prendre vu que je l'ai jamais fait, mais je crois avoir compris l'essentiel...

    Juste une chose : en fait pour que ça fonctionne, au préalable il faut que les infos dans les en-têtes et pieds de page fassent référence à des champs qui soient les mêmes que dans mon modèle c'est ça?

  7. #7
    Candidat au Club
    Femme Profil pro
    Assistante administratif
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Assistante administratif

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Hello again

    alors j'ai voulu essayer sinon avec une macro replace, pour ne remplacer qu'un seul mot dans les pieds de page, seulement, il me les remplace dans tout le document...
    où est-ce que je me trompe? j'ai essayé plusieurs syntaxes, j'ai toujours le même résultat...

    Sub headerfooter()

    Dim headerfooter As Range

    For Each headerfooter In ActiveDocument.StoryRanges
    With headerfooter.Find
    .Text = "SARL"
    .Replacement.Text = "SAS"
    .Wrap = wdFindContinue
    .Execute Replace:=wdReplaceAll
    End With
    Next headerfooter



    End Sub


    Merci pour votre aide

  8. #8
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Activedocument.storyranges ne correspond pas aux en-têtes et pieds de pages.

    Peut-être filtrer en utilisant la propriété storytype
    Quelque chose de ce style à adapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub headerfooter()
     
    Dim headerfooter As Range
     
    For Each headerfooter In ActiveDocument.StoryRanges
    If (headerfooter.StoryType = wdPrimaryFooterStory Or headerfooter.StoryType = wdPrimaryHeaderStory Or headerfooter.StoryType = wdEvenPagesFooterStory Or headerfooter.StoryType = wdEvenPagesHeaderStory Or headerfooter.StoryType = wdFirstPageFooterStory Or headerfooter.StoryType = wdFirstPageHeaderStory) Then
    With headerfooter.Find
    .Text = "SARL"
    .Replacement.Text = "SAS"
    .Wrap = wdFindContinue
    .Execute Replace:=wdReplaceAll
    End With
    End If
    Next headerfooter
     
     
     
    End Sub

  9. #9
    Candidat au Club
    Femme Profil pro
    Assistante administratif
    Inscrit en
    Juin 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Assistante administratif

    Informations forums :
    Inscription : Juin 2008
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Cooool ça marche

    Merci Pour votre aide. y'a plus qu'à !

    merci à bientôt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 25/04/2008, 14h38
  2. [TP] Application utilisant modèle des Chaînes de Markov Cachées ?
    Par williamdunord dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 17/02/2008, 22h19
  3. Modèles déformables (masse-ressort)
    Par tib0000 dans le forum Physique
    Réponses: 7
    Dernier message: 27/10/2007, 14h22
  4. modèle windows application visual studio
    Par iks22 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 31/05/2007, 18h29
  5. Réponses: 6
    Dernier message: 07/03/2007, 14h04

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