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

Word Discussion :

Index Word - Modification de la mise en page et ajout de données [WD-2007]


Sujet :

Word

  1. #1
    Candidat au Club
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Novembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Index Word - Modification de la mise en page et ajout de données
    Bonjour,

    Dans un document généalogique créé sous Word 2007 et que je souhaite enrichir et améliorer, il existe un tableau récapitulatif Word comprenant plus de 5000 lignes avec nom, prénom, branche de rattachement, année de naissance mais le numéro de page dans lequel la personne apparait dans le document ne figure malheureusement pas dans ce tableau.
    J'ai conservé ce tableau récapitulatif et j'ai créé en plus un index Word en marquant les 5000 entrées (ce qui a été un peu fastidieux) mais cet index ne m'indique que nom, prénom, numéro(s) de page.

    Ma question est la suivante : comment pourrais-je procéder pour fusionner les données du tableau récapitulatif et de l'index ?

    J'ai dans l'idée que le numéro de page se rattachant à un individu pourrait être extrait de l'index via une instruction VBA et être ensuite ajouté au tableau récapitulatif, mais j'ai beau chercher la syntaxe d'une telle instruction, je ne trouve pas...

    Merci de l'aide que vous pourriez m'apporter

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

    Avez-vous un exemple simplifié à mettre en ligne ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Novembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci de votre coopération

    Voici un extrait du document sur lequel je travaille et dans lequel, idéalement, je souhaiterais ajouter au tableau récapitulatif de la page 3 une colonne où figureraient les numéros de page (ceux qui sont identifiés dans l'index de la même page 3).

    Cordialement
    Fichiers attachés Fichiers attachés

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par chdns Voir le message

    En transformant votre document en .docm, la macro ci-dessous récupère les noms, prénoms, numéro de page dans une matrice. Il vous faudra ensuite réaliser deux boucles imbriquées sur votre tableau et sur la matrice pour comparer les couples colonne 1 + colonne 2 avec les noms prénoms de la matrice. Le numéro de page correspond à l'indice 2 de la matrice.
    De mon point de vue, il vous faudra peut-être compléter les cellules vides de la colonne Nom pour simplifier le code. La police des noms pourrait être de la même couleur que cellule du fond de cellule.
    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
     
    Sub RepererLesIndex()
     
    Dim I As Long, J As Long, IndexMatrice As Long
    Dim Contenu As String, ContenuNom As String, ContenuPrenoms As String, ListeDesPrenoms As Variant, PageDocument As String
    Dim MatriceNomsPrenoms() As Variant
     
        With ActiveDocument
     
            IndexMatrice = 0
            For I = 1 To .Indexes(2).Range.Paragraphs.Count
                Contenu = .Indexes(2).Range.Paragraphs(I).Range.Text
                If UBound(Split(Contenu, ":")) > 0 Then
                   ContenuNom = Split(Contenu, ":")(0)
                   ContenuPrenoms = Trim(Split(Contenu, ":")(1))
     
                   If UBound(Split(ContenuPrenoms, ";")) = 0 Then
                      ReDim Preserve MatriceNomsPrenoms(2, IndexMatrice)
                      MatriceNomsPrenoms(0, IndexMatrice) = Trim(ContenuNom)
                      MatriceNomsPrenoms(1, IndexMatrice) = Trim(Split(ContenuPrenoms, ",")(0))
                      PageDocument = Split(ContenuPrenoms, ",")(1)
                      MatriceNomsPrenoms(2, IndexMatrice) = Mid(PageDocument, 1, Len(PageDocument) - 1)
                      IndexMatrice = IndexMatrice + 1
                   Else
                      ListeDesPrenoms = Split(ContenuPrenoms, ";")
                      For J = LBound(ListeDesPrenoms) To UBound(ListeDesPrenoms)
                          ReDim Preserve MatriceNomsPrenoms(2, IndexMatrice)
                          MatriceNomsPrenoms(0, IndexMatrice) = Trim(ContenuNom)
                          MatriceNomsPrenoms(1, IndexMatrice) = Split(ListeDesPrenoms(J), ",")(0)
                          PageDocument = Split(ListeDesPrenoms(J), ",")(1)
                          MatriceNomsPrenoms(2, IndexMatrice) = PageDocument
                          IndexMatrice = IndexMatrice + 1
                      Next J
                      MatriceNomsPrenoms(2, IndexMatrice - 1) = Mid(PageDocument, 1, Len(PageDocument) - 2)
                   End If
                End If
            Next I
            ' Restitution de la matrice
            For IndexMatrice = LBound(MatriceNomsPrenoms, 2) To UBound(MatriceNomsPrenoms, 2)
              Debug.Print IndexMatrice & " - " & MatriceNomsPrenoms(0, IndexMatrice) & " - " & MatriceNomsPrenoms(1, IndexMatrice) & " - " & MatriceNomsPrenoms(2, IndexMatrice)
            Next IndexMatrice
     
        End With
     
    End Sub

  5. #5
    Candidat au Club
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Novembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Je vous remercie infiniment de votre implication dans la résolution de mon problème, résolution qui n'était manifestement pas à ma portée car j'aurais été bien incapable de produire
    le programme VBA que vous avez eu la gentillesse de me proposer.

    Votre réactivité et votre professionnalisme sont remarquables ; je vous en suis très reconnaissant.

    Merci encore

    Très cordialement

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par chdns Voir le message
    Pour la suite, une solution de contournement consiste à copier coller votre tableau dans Excel, puis de décharger la matrice dans un onglet du fichier Excel et de récupérer les numéros de page à partir d'une fonction RechercheV, et enfin de remettre le tableau Excel corrigé dans votre document Word.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par chdns Voir le message
    Le fichier joint est un exemple du transfert de la matrice sur un fichier Excel.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/03/2014, 15h05
  2. modification de la mise en page d un devis
    Par bssouf21 dans le forum Microsoft Dynamics CRM
    Réponses: 0
    Dernier message: 06/12/2011, 17h53
  3. Mise en page et groupement des données
    Par Kazadsak dans le forum iReport
    Réponses: 0
    Dernier message: 12/07/2010, 09h33
  4. Réponses: 2
    Dernier message: 24/10/2007, 11h44
  5. Réponses: 3
    Dernier message: 25/01/2007, 14h25

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