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 :

VBA WORD -Insérer une forme colorée sur plusieurs pages


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2017
    Messages : 9
    Points : 2
    Points
    2
    Par défaut VBA WORD -Insérer une forme colorée sur plusieurs pages
    Bonjour,

    j'ai un document Word de 10 pages. Les 5 prmeières pages correspondent à la partie "Informations générales", j'aimerai les signaler par l'insertion d'un rectangle rouge en bas à gauche de chaque page. Les 5 dernières pages correspondent à la partie "Coupe", j'aimerai les signaler par l'insertion d'un rectangle rouge en bas à gauche de chaque page. Dans mon code l'utilisateur rentre le titre de la partie, la première page et la dernière page de la partie. En fonction de ses indications le programme sait de quelle couleur est le rectangle à insérer et sur quelles pages. Les boîtes de dialogue s'affichent mais aucun rectangle avez-vous une idée pourquoi ? Merci!

    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
     
     
    Sub Intercalaire()
     
    Set Ici = ActiveDocument
    Dim titre
    Dim pageD
    Dim pageP
     
    titre = InputBox("Tapez le titre de la partie")
    pageP = InputBox("Tapez le numéro de la première page de la partie")
    pageD = InputBox("Tapez le numéro de la denrière page de la partie")
    If Not IsNumeric(pageP) Then Exit Sub
    If Not IsNumeric(pageD) Then Exit Sub
     
    Select Case page
        Case "Informations générales"
         For i = pageP To pageD
         Set rect = Ici.Pages(i).Shapes.AddShape(msoShapeRectangle, 543, 760, 50, 80)
    With rect
    .Fill.ForeColor.RGB = RGB(225, 0, 0)
    .Line.ForeColor.RGB = RGB(225, 0, 0)
    End With
        Next i
     
        Case "Coupe"
         For i = pageP To pageD
         Set rect = Ici.Pages(i).Shapes.AddShape(msoShapeRectangle, 543, 760, 50, 80)
    With rect
    .Fill.ForeColor.RGB = RGB(0, 225, 0)
    .Line.ForeColor.RGB = RGB(0, 225, 0)
    End With
        Next i
     
    End Select
     
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PeaceAndLo Voir le message
    Bonjour,

    Si ces formes doivent être incorporées, pourquoi ne le sont-elles pas dès le départ dans un modèle .dotm ou .dotx par exemple ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2017
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    car mon nombre de pages est variable, j'aurai plusieurs documents à réaliser.

    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PeaceAndLo Voir le message
    Remarque : En créant deux sections, vos utilisateurs ne seraient peut être pas obligés de saisir des infos dans les InputBox.

    En ce qui concerne la méthode pour définir la page, il faut vous servir des paragraphes et les balayer pour savoir à quelles pages ils appartiennent. La sélection d'un paragraphe vous permet de vous positionner sur la page et de créer la forme ensuite.

    Exemple pour connaître la page du paragraphe 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MsgBox ActiveDocument.Paragraphs(1).Range.Information(wdActiveEndPageNumber)

  5. #5
    Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2017
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Cette instruction me renvoie le numéro 1 à chaque fois (alors que même mon premier paragraphe se siture en page 2).
    Je voudrais changer un peu de stratégie et aller dans le sommaire (qui sera identique pour tous les documents) chercher les numéros de pages puis insérer la forme. Est-ce que c'est possible ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Nb : En supposant que votre document possède deux sections : Vous accédez avec ce code à chaque page de votre document. La forme peut donc être choisie en fonction de la section. Le nombre de pages de la section est bordé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .Range.Information(wdActiveEndPageNumber)
    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
     
    Sub EssaiPaginerLeDocument()
     
    Dim MonDocument As Document
    Dim MaSection As Section
    Dim PageEnCours As Integer, I As Integer, J As Integer
     
        Set MonDocument = ActiveDocument
        With MonDocument
     
             For J = 1 To .Sections.Count
     
             Set MaSection = .Sections(J)
             With MaSection
                    For PageEnCours = 1 To .Range.Information(wdActiveEndPageNumber)
                        For I = 1 To .Range.Paragraphs.Count
                            If .Range.Paragraphs(I).Range.Information(wdActiveEndPageNumber) = PageEnCours Then
                               .Range.Paragraphs(I).Range.Select
                               MsgBox "Section : " & J & ", page en cours " & PageEnCours & Chr(10) & "Texte : " & Selection.Range.Text
                               Exit For
                          End If
                        Next I
                    Next PageEnCours
             End With
             Set MaSection = Nothing
             Next J
        End With
        Set MonDocument = Nothing
     
    End Sub

  7. #7
    Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2017
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour ce code il fonctionne super!
    Néanmoins ne suis-je pas obligé d'insérer des sauts de section sur chaque document à la main puisque par exemple la partie 1 du document 1 sera plus ongue que la partie 1 du document 2 ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PeaceAndLo Voir le message
    Néanmoins ne suis-je pas obligé d'insérer des sauts de section sur chaque document à la main puisque par exemple la partie 1 du document 1 sera plus ongue que la partie 1 du document 2 ?
    Est-il possible qu'un paragraphe fasse plus d'une page ? Sinon, non. Il faut simplement tester vos différents cas.

    Il ne vous reste plus qu'à tester la création de vos formes en fonction de la section 1 ou 2. Je pense qu'il vous faudra revoir leur position et la couleur pour la section 2 si cela doit être en rouge.

  9. #9
    Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2017
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Oui en fait il s'agit vraiment de parties du style:

    1) Informations

    a) bla

    b) bla

    c) bla

    2) ...

    Ces parties contiennent des sous-parties avec du texte et des tableaux... et s'étalent sur plusieurs page à chaque fois

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PeaceAndLo Voir le message
    Ces parties contiennent des sous-parties avec du texte et des tableaux... et s'étalent sur plusieurs page à chaque fois
    Oui mais un paragraphe peut-il faire plus d'une page ?

  11. #11
    Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2017
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    non pas un paragraphe de texte mais un tableau peut faire plusieurs pages

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PeaceAndLo Voir le message
    non pas un paragraphe de texte mais un tableau peut faire plusieurs pages
    Dans ce cas là, quel est le résultat une fois les routines pour créer les formes, intégrées au code ?

  13. #13
    Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2017
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Je ne comprends pas votre question.
    Ci-joint un fichier word exemple de ce que je veux obtenir (actuellement j'ai le fichier sans les rectangles en bas à droite de chaque page que je cherche à insérer en VBA : une sorte d'intercalaire par partie, qui se répète sur chaque page de la partie, à l'intérieur de mon document).
    Fichiers attachés Fichiers attachés

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PeaceAndLo Voir le message
    Pour votre information, regardez ce document en rapport avec mes 1er et 2ème messages. Augmentez la taille des sections 1 et 2 en ajoutant des paragraphes. Que se passe-t-il ?

    Pièce jointe 305652

  15. #15
    Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2017
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    J'ai fait ce que vous avez dit (ajouter des paragraphes) ça fonctionne toujours bien : les pages défilent une à une et la section change au niveau du changement de partie. C'est une solution parfaite si je peux insérer automatiquement un saut de section avat chaque début de partie

  16. #16
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PeaceAndLo Voir le message
    La solution consiste donc à créer deux sections, désolidariser les pieds de pages entre sections et insérer les différentes formes dans chaque pied de page. Il n'y a pas besoin de VBA pour cela. C'est pour cette raison que vous auriez intérêt à créer un modèle .dotx pour formater votre document selon ce principe.

    Au cas, où il faudrait générer d'autres couleurs si des sections étaient ajoutées sans "liens pied de page avec le précédent", il faudrait utiliser le programme en injectant les formes dans la partie footers de la section et ne pas travailler page par page.

  17. #17
    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,

    Je reprends l'idée d'Éric d'un modèle avec les deux sections prédéfinies, mais sans macro pantoute.

    Tout ce que cela prend, c'est une forme de la bonne couleur dans le pied de page. Et comme les entêtes et pieds de page de chaque section peuvent différer...

    Pour atteindre le bon titre, il suffit d'utiliser les styles, le volet de navigation, un peu d'effort et au pire, un peu de formation, ou un mode d'emploi.


    Oupss ! Désolé Éric, ma réponse est partie avant l'arrivée de ta dernière réponse, avec laquelle je suis parfaitement d'accord.
    Images attachées Images attachées  
    À 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.

  18. #18
    Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2017
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Bonjour Eric, Bonjour Clément,
    merci infiniment pour vos conseils! J'ai dait un modèle et ça marche d'enfer!
    Bonne continuation et bonne journée!

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

Discussions similaires

  1. CSS d'impression : Séparer une forme sur plusieurs pages
    Par the5et dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 04/05/2014, 09h53
  2. Word intégrer une image sur plusieurs pages
    Par Jasmine80 dans le forum Word
    Réponses: 6
    Dernier message: 18/02/2010, 09h28
  3. Une même applet sur plusieurs pages
    Par suckthewindow dans le forum Applets
    Réponses: 6
    Dernier message: 20/08/2008, 16h36
  4. [VBA-Word] appliquer une macro sur un groupe de document
    Par perophron dans le forum VBA Word
    Réponses: 22
    Dernier message: 11/06/2007, 18h27
  5. [VBA-W] [Word] Insérer une image MSChart
    Par fredo1664 dans le forum VBA Word
    Réponses: 2
    Dernier message: 20/11/2002, 09h09

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