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 :

Comment insérer mon pied de page personnalisé ? [WD-2007]


Sujet :

VBA Word

  1. #1
    Membre actif
    Avatar de Golard
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 288
    Points : 289
    Points
    289
    Par défaut Comment insérer mon pied de page personnalisé ?
    Bonjour,

    Je ne dois pas être très en forme aujourd'hui, mais je m'arrache les cheveux depuis ce matin pour insérer mon pied de page personnalisé par VBA. Je souhaite insérer du texte suivi du numéro de page.

    Le code suivant ne fonctionne pas car le n° de page écrase mon texte (je maitrise très mal les selection et range (même après avoir lu le chapitre Range et Selection de Olivier Lebeau):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
             With Selection.Sections.Last.Footers(wdHeaderFooterPrimary)
                    .Range.Text = "MON ENTETE "  & Chr(149)
                    .Range.Fields.Add Range:=Selection.Sections.Last.Headers(wdHeaderFooterEvenPages).Range, Type:=wdFieldPage
                End With
    Le code suivant ne fonctionne pas car le champ { PAGE } est pris en compte comme du texte et pas comme un champ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                With Selection.Sections.Last.Footers(wdHeaderFooterPrimary)
                    .Range.Text = "MON ENTETE " & Chr(149) & " { PAGE }"
                End With
    Le code suivant ne fonctionne pas car le n° de page n'est pas inséré sur la ligne de mon texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                With Selection.Sections.Last.Footers(wdHeaderFooterPrimary)
                    .Range.Text = "MON ENTETE " & Chr(149) & " "
                    .PageNumbers.Add
                End With
    Bref je pédale dans la semoule

    Merci d'avance à celui ou celle qui pourra m'aider

  2. #2
    Rédacteur/Modérateur

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

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

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

    Essaie avec un champ.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="Page"
    Il te suffit de sélectionner la zone et de déplacer le curseur sur la zone sélectionnée.

  3. #3
    Membre actif
    Avatar de Golard
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 288
    Points : 289
    Points
    289
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Salut,

    Essaie avec un champ.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="Page"
    Il te suffit de sélectionner la zone et de déplacer le curseur sur la zone sélectionnée.
    Bonjour Oli !
    Dans ton exemple, le champs de type wdFielEmpty ne prends pas en compte le paramètre Text.

    Pour ce qui est de l'utilisation de champs, je n'arrive pas à en insérer plusieurs dans l'entête (ou pied de page). Dés que j'ajoute un nouveau champs dans mon pied de page, même en positionnant le curseur, le champs remplace tout le pied de page.

    Ma solution actuelle : ajouter le champ page à mon pied de page, puis insérer du texte avant ou après le champs.

    CE CODE FONCTIONNE:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Footers(1).Range.Fields.Add Range:=.Range, Type:=wdFieldPage
    Footers(1).Range.Collapse Direction:=wdCollapseStart
    Footers(1).Range.InsertBefore (" MON TEXTE")
    CE CODE NE FONCTIONNE PAS (le champs remplace le pied de page):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Footers(1).Range.Text = " MON TEXTE"
    Footers(1).Range.Collapse Direction:=wdCollapseEnd
    Footers(1).Range.Fields.Add Range:=.Range, Type:=wdFieldPage
    Pourquoi je ne peux pas "insérer" mon champs sans supprimer mon texte ?

    Comment faire si je voulais insérer un deuxième champs (par exemple le champs date) ?

  4. #4
    Rédacteur/Modérateur

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

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

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

    surprenant, j'ai fait un copier coller du code que j'ai écrit dans le VBE.
    Code qui a fonctionné avant que je ne le poste.

    Pour revenir à ta question, chaque fois que tu utilises un Range.Text, tu n'ajoutes pas du texte mais tu le remplaces.

    C'est le même principe que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim monTxt as String
     
    monTxt = "première chaîne"
    monTxt = "seconde chaîne"
    A la fin du code, monTxt contiendra "seconde chaîne", la première chaîne ayant été remplacée. Range correspond à un tout et pas une partie.

    Soit tu définis une variable pour tout ton pied de page, mais je ne vois pas comment faire.
    Soit tu utilises un Objet Selection au lieu d'un objet Range et tu peux te déplacer dans ton document.

  5. #5
    Membre actif
    Avatar de Golard
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 288
    Points : 289
    Points
    289
    Par défaut
    Effectivement (j'ai rectifié ma précédente réponse),

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range.Fields.Add Range:=.Range, Type:=wdFieldEmpty, Text:="Page"
    équivaut à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range.Fields.Add Range:=.Range, Type:=wdFieldPage
    Mais comment faire pour ajouter 2 champs l'un à la suite de l'autre dans le même pied de page, sans que le deuxième ne "remplace" le premier ???
    Car l'objet Sélection dont tu parles ne me semble pas exploitable dans les entêtes & pied de page (sauf erreur de ma part?)

  6. #6
    Rédacteur/Modérateur

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

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

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

    Il faut utiliser un objet Selection.

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Select
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="Page"
    Selection.MoveEnd
    Selection.TypeText " / "
    Selection.MoveEnd
     
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="numPages"

  7. #7
    Membre actif
    Avatar de Golard
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 288
    Points : 289
    Points
    289
    Par défaut
    Merci, ça marche parfaitement !

    Il fallait abandonner l'objet Range et passer à l'objet Selection (que je cherchais bêtement à éviter) !!!

    Je flag RESOLU

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

Discussions similaires

  1. Comment insérer un bloc à ma page
    Par StephaneCa dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 28/03/2011, 11h37
  2. Comment insérer un saut de page?
    Par hittony dans le forum Cognos
    Réponses: 2
    Dernier message: 08/06/2010, 11h55
  3. [WD-2007] Insérer un pied de page différent
    Par solorac dans le forum Word
    Réponses: 2
    Dernier message: 25/02/2010, 12h02
  4. Entête et pied de page personnalisé
    Par Shaiky dans le forum Mise en forme
    Réponses: 5
    Dernier message: 06/01/2009, 11h52
  5. Mon pied de page s'envole
    Par une_tite_question dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 10/10/2008, 16h11

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