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 :

Insérer saut de page si texte sur 2 pages


Sujet :

VBA Word

  1. #1
    Membre du Club Avatar de popi33370
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 89
    Points : 47
    Points
    47
    Par défaut Insérer saut de page si texte sur 2 pages
    Bonjour,

    J'ai un cas particulier à régler et votre aide me sera très utile pour avancer vers une solution.

    J'arrive à générer un document Word qui ressemble à ceci (extrait) :
    Nom : 1.jpg
Affichages : 533
Taille : 322,1 Ko
    et mon problème est bien visible ici = j'ai un organisme qui est à cheval sur 2 pages ce qui gêne la lecture

    Je recherche une solution pour insérer un saut de page juste avant le titre (ici "ECTI - Délégation départementale" qui est de style "Titre 3") uniquement si la ligne de fin (ici un long trait qui est de style "Titre 7") se trouve sur une autre page.

    Je commence à me débrouiller en VBA Word, mais il y a encore trop de notions qui m'échappent : je sais parcourir tous les paragraphes, et peut-être qu'ici une stratégie serait de vérifier qu'entre un "Titre 3" et son "Titre 7" si on trouve un saut de page alors on remonte au "Titre 3" pour insérer un saut de page et l'autre doit normalement disparaitre en dynamique ... Facile à dire ...

    D'avance un grand merci pour vos suggestions

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Juste pour être sûr.

    1) Les trois lignes en haut de la colonne de gauche de la deuxième page, sont en fait la fin de la colonne de droite de la première page ?

    2) En "sautant" la page, est-ce que "ECTI - Délégation départementale" doit rester à droite, ou doit-il commencer à gauche de l'autre page ?

    Ceci dit, je ne sais pas trop. Cela demande réflexion.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Membre du Club Avatar de popi33370
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 89
    Points : 47
    Points
    47
    Par défaut
    Bonjour,

    Oui, c'est du texte avec mise en page sur 2 colonnes donc la fin de la page en bas à droite continue sur la page suivante en haut à gauche.

    Je pensais à une approche de ce style :
    - je parcours tous les paragraphes du début à la fin
    - si je trouve un "Titre 3" je garde le numéro de page
    - si je trouve un "Titre 7" je compare son numéro de page avec celui du "Titre 3" précédent
    et si pas même page alors je remonte jusqu'au "Titre 3" et j'insère un saut de page

    Mais j'ai pas encore l'habileté suffisante avec le VBA de Word pour gérer ça

  4. #4
    Membre du Club Avatar de popi33370
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 89
    Points : 47
    Points
    47
    Par défaut
    Finalement j'y suis arrivé et je publie ce bout de code car ça pourrait servir à d'autres :
    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
     
    For Each PAR In ActiveDocument.Paragraphs
        PAR.Range.Select
        If (PAR.Style = "Titre 3") Then
            LPAGE = Selection.Range.Information(wdActiveEndAdjustedPageNumber)
            NPAR = 1
        End If
     
        If (PAR.Style = "Titre 7") Then
            CPAGE = Selection.Range.Information(wdActiveEndAdjustedPageNumber)
            If (CPAGE <> LPAGE) Then
                Selection.MoveUp Unit:=wdParagraph, Count:=NPAR
                Selection.InsertBreak
            End If
        End If
        If (NPAR > 0) Then NPAR = NPAR + 1
    Next PAR
    Le principe est simple :
    - je parcours mes paragraphes
    - si "Titre 3" je garde son numéro de page et à partir de là je compte le nombre de paragraphes jusqu'au "Titre 7" suivant (dans NPAR)
    - si "Titre 7" et page différente alors je remonte de NPAR et j'insère un saut de page
    et ça fonctionne bien

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    N'est-ce pas plus simple d'utiliser les fonctionalité basique de word?
    Dans le formatage des paragraphes "Keep with next" pour les titres et "keep together" pour les autres paragraphes. Il faut juste être certain de ne pas ainsi créer de gigantesques paragraphes.

  6. #6
    Membre du Club Avatar de popi33370
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 89
    Points : 47
    Points
    47
    Par défaut
    J'y avais pensé, mais chaque ligne de mon document est un paragraphe formaté avec un style différent, d'où le seul repère étant les styles "Titre 3" et "Titre 7".

    Mais si on peut faire plus simple je suis preneur MERCI

Discussions similaires

  1. transformer liste d'1 colonne sur x pages => plusieurs colonnes sur UNE page
    Par liste excel dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/05/2011, 11h13
  2. Changement du texte sur la page Index
    Par badrel dans le forum Référencement
    Réponses: 3
    Dernier message: 29/09/2007, 01h16
  3. Encadrer tout un texte sur une page
    Par martini37 dans le forum Mise en forme
    Réponses: 1
    Dernier message: 02/01/2007, 21h11
  4. Insérer une image ou un texte dans un page pré-concue
    Par Mawashigeri dans le forum Langage
    Réponses: 1
    Dernier message: 01/07/2006, 11h00
  5. [XSL][Templates]Du texte sur une page déterminée?
    Par cackybis dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 13/06/2006, 09h58

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