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 :

Macro Word et coupure saut de section


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 14
    Points
    14
    Par défaut Macro Word et coupure saut de section
    Bonjour,
    J'ai un fichier Word de 360 pages (issu d'un publipostage).
    Chaque document fait 3 pages. Je veux donc le couper en 120 documents et les renommer 1 par 1.
    Pour cela, j'ai inséré des sauts de section après chaque bloc de 3 pages, et construit un fichier excel avec le nom de 120 personnes (colonne A "Nom" : Laurent, Marrion, etc...).
    La macro marchait bien au départ.
    Mon problème est que lors de la coupure du 1er Word de 3 pages, je souhaite supprimer le saut de section (à la fin de la 3ème page) car sa présence me déclenche l'ajout d'une 4ème page vierge.
    J'ai donc ajouté un Control H en VBA pour supprimer ce saut de section en bas de 3ème page, mais cela perturbe mon ordre de saut de section et la macro ne peut pas sélectionner la section suivante. Elle récupère bien le 2nd nom mais revient sur la première section et ne prend pas la suivante.
    Je ne vois pas comment faire à part conserver ma 4ème page vierge dans tous mes documents.....
    Est ce qu'un de vous sait comment régler ce problème ?
    Merci beaucoup pour votre aide

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    Sub couper_sections()
     
       Application.Browser.Target = wdBrowseSection
     
        j = 2
     
        For i = 1 To ((ActiveDocument.Sections.Count) - 1)
     
     'recherche de l'identifiant dans Excel "ordre.xls"
     Dim xlApp As Object
     Set xlApp = CreateObject("Excel.Application")
     xlApp.Visible = True
     xlApp.Workbooks.Open ("\\xxxxx\Moi\ordre.xls")
     DocNum = xlApp.ActiveSheet.Cells(j, 1).Value
     xlApp.activeworkbook.Close True
     xlApp.Quit
     Set xlApp = Nothing
     
          'Selectionne et copie le texte de la section dans le presse-papier
          ActiveDocument.Bookmarks("\Section").Range.Copy
     
          'Crée un nouveau document et colle le texte du presse-papier
          Documents.Add
          Selection.Paste
     
       ' Retire le saut de section qui a été copié
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "^b"    'saut de section ^b / saut de page ^m
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
     
        'enregistrement et fermeture du nouveau Word
         ChangeFileOpenDirectory "\\xxxxx\Moi\Doc\"
         ActiveDocument.SaveAs FileName:=DocNum & ".doc"
         ActiveDocument.Close
     
        'section suivante
         ActiveDocument.Select
         Application.Browser.Next
     
        'ordre.xls ligne+1
         j = j + 1
     
       Next i 'section suivante
     
       ActiveDocument.Close savechanges:=wdDoNotSaveChanges
     
    End Sub

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 413
    Points : 16 255
    Points
    16 255
    Par défaut
    Bonjour

    Le publipostage crée un saut de section entre chaque document. Pourquoi en créer un nouveau puis vouloir supprimer l'existant ?

    Utilise-le directement dans ta boucle...
    La logique la plus simple est
    1. chercher le 1er saut,
    2. reculer d'un caractère,
    3. sélectionner de ce point au début
    4. couper et coller dans un nouveau document à sauvegarder et fermer
    5. supprimer le caractère saut de section qui se trouve au point d'insertion


    A la fin ne pas enregistrer le document vidé si tu souhaites le conserver dans son été initial de 360 pages...
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

Discussions similaires

  1. Réponses: 7
    Dernier message: 05/05/2011, 08h23
  2. Macro pour supprimer des sauts de page vide word 2007
    Par Sandrine1 dans le forum VBA Word
    Réponses: 6
    Dernier message: 09/11/2010, 21h38
  3. Réponses: 2
    Dernier message: 04/07/2010, 11h58
  4. date macro word 2000
    Par cmgirondins dans le forum VBA Word
    Réponses: 14
    Dernier message: 07/09/2005, 11h09
  5. [MACRO][WORD] lancer macro word
    Par jcarre dans le forum Documents
    Réponses: 3
    Dernier message: 02/12/2004, 09h01

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