Rapatrier numéro de page où se trouve un signet

Brigitte

XLDnaute Barbatruc
Bonjour à tous,

Je voudrais faire une chose simple : dans un tableau figurant en début de document word, rapatrier le numéro de page des signets (en effet, pour des raisons de simplicité, pas de styles, de table des matières)... Ces pages peuvent évoluer... si je rajoute des éléments.

MERCI d'avance.
 

Pièces jointes

  • signets pages.doc
    26.5 KB · Affichages: 104

mromain

XLDnaute Barbatruc
Re : Rapatrier numéro de page où se trouve un signet

Bonsoir Brigitte :), le forum

Voici un exemple.

J’ai mis un .docm afin d’utiliser une propriété des tableaux non supportée par le format .doc.
Le titre du tableau, défini dans l’onglet Texte de remplacement des propriétés du tableau, est personnalisé. Cela simplifie le code VBA afin de savoir dans quel tableau il faut écrire.
On retrouve donc en début de code une constante qui doit avoir la même valeur que le titre du tableau.
VB:
Private Const TitreTableauRecap As String = "TabRecapSignet"

Public Sub ListerSignets()
Dim tabRecap As Table, signet As Bookmark
    
    'récupérer le tableau
     For Each tabRecap In ThisDocument.Tables
        If tabRecap.Title = TitreTableauRecap Then Exit For
    Next tabRecap
    If tabRecap Is Nothing Then
        MsgBox "Le tableau """ & TitreTableauRecap & """ n'a pas été trouvé dans le document." & vbNewLine & "Fin de la macro...", vbCritical, "Erreur"
        Exit Sub
    End If
    
    'nettoyer le tableau (spprimer toutes les lignes sauf les 2 premières)
     While tabRecap.Rows.Count > 2
        tabRecap.Rows(3).Delete
    Wend
    
    'boucler sur chaque signet, ajouter le lien hypertexte et le numéro de page
     For Each signet In ThisDocument.Bookmarks
        tabRecap.Rows.Add
        ThisDocument.Hyperlinks.Add tabRecap.Rows(tabRecap.Rows.Count).Cells(1).Range, , signet.Name, , signet.Name
        tabRecap.Rows(tabRecap.Rows.Count).Cells(2).Range.Text = signet.Range.Information(wdActiveEndPageNumber)
    Next signet
    
    'supprimer la 2ème ligne
     tabRecap.Rows(2).Delete
End Sub
A+
 

Pièces jointes

  • signets pages.zip
    18.3 KB · Affichages: 80

chris

XLDnaute Barbatruc
Re : Rapatrier numéro de page où se trouve un signet

Bonjour

Brigitte : contente de te voir. Bisous.
Coucou à mromain

En manuel : utiliser renvoi, Catégorie : signet, dans la liste déroulante Insérer un renvoi à sélectionner numéro de page.
 

Brigitte

XLDnaute Barbatruc
Re : Rapatrier numéro de page où se trouve un signet

Bonjour Mickaël et chris (sûre de te trouver là ;-)

Merci à vous deux. Pour Mickaël, le souci est que je ne dispose pas de word 2010 au boulot. Et le vba dans word, jamais utilisé.

Pour chris, j'ai commencé à trouver ca génial... j'ai tout fait puis pour le fun, tenté de rajouter une page... snif, ca met pas à jour les numéros !!! faut il faire autre chose pour ce faire ?

Bisous à tous les deux (especially à ma copine, on s'appelle ?)
 

chris

XLDnaute Barbatruc
Re : Rapatrier numéro de page où se trouve un signet

Bonjour

Pour la mise à jour manuelle : CTRL A (tout sélectionner) puis F9.

Sur 2010 les champs, les champs sont recalculée automatiquement lors de l'impression. Pour 2003 il faut activer une fois pour toute cette option afin que l'impression force le recalcul.

Brigitte : Oui, on s'appelle.
 

Brigitte

XLDnaute Barbatruc
Re : Rapatrier numéro de page où se trouve un signet

Re bonjour,

Merciiii chris, ca marche impeccc...

Pour la peine voici le mémo en "photos".

En revanche, je ne saisis pas où on doit activer l'option dans 2003 ?

Pour 2003 il faut activer une fois pour toute cette option afin que l'impression force le recalcul.
 

Pièces jointes

  • Signets avec pages.doc
    64.5 KB · Affichages: 102

chris

XLDnaute Barbatruc
Re : Rapatrier numéro de page où se trouve un signet

Re

C'est dans les options d'impression : mise à jour des champs. A faire une seule fois sur chaque PC.
Il n'était d'ailleurs pas logique que cette option ne soit pas cochée par défaut : d'où sa disparition en tant qu'option dans 2010.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 425
Membres
103 206
dernier inscrit
diambote