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 :

Génération automatique d'un tableau de renvois à partir de signets


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Génération automatique d'un tableau de renvois à partir de signets
    Bonjour à tous,

    J'ai une liste d'exigences (dans un style spécifique) qui sont définies tout le long d'un document Word.
    Je souhaiterais coder une macro qui permettrait de créer un tableau qui listerait toutes les exigences du document dans la première colonne.
    Pour l'instant, je l'ai fait manuellement en créant un signet pour chaque exigence et un renvoi dans un tableau que j'ai manuellement créé, mais la tâche est fastidieuse vu qu'il y en a une centaine.

    Comment feriez-vous pour générer et peupler ce tableau avec les renvois de chaque signet ?
    Je vous avouerai que ça dépasse clairement mes connaissances en la matière...

    En vous remerciant chaleureusement d'avance ;-)

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

    Ce qui doit être pénible, c'est la création de vos signets, non ?
    Quelle est votre règle de gestion pour les créer ?
    Vous devriez joindre un document expliquant votre méthode et la présentation à obtenir.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour Eric,

    En effet, j'ai en moyenne plus d'une cinquante de signets à créer pour une dizaine de documents.
    Je n'ai aucune règle de gestion particulière, je sélectionne une exigence puis je créé un signet "req_n".

    Voici la méthode très basique que j'utilise :
    1. Sélection du texte
    Insertion > Signet
    Nommage du signet puis clic sur Ajouter
    2. Dans le tableau de listage des exigences :
    Insertion > Renvoi
    Sélection du signet précédemment créé
    Clic sur Insérer

    Voici la présentation que je souhaiterais obtenir (en bleu, la colonne que je voudrais remplir automatiquement) :

    Nom : Capture.PNG
Affichages : 405
Taille : 85,4 Ko

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

    Ci-joint, une procédure permettant de créer vos signets dès lors que les 3 premiers caractères commencent par REQ pour les paragraphes situés avant le tableau des renvois.
    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
     
    Sub CreationDesSignetsReq()
     
    Dim DocEnCours As Document
    Dim I As Integer, NbSignets As Integer, ParagrapheDebut As Integer
     
        Set DocEnCours = ActiveDocument
        With DocEnCours
     
             ' Recherche du tableau des renvois (en supposant qu'il n'y ait qu'un seul tableau dans le document)
             '--------------------------------------------------------------------------------------------------
             .Tables(1).Range.Select
             Selection.HomeKey unit:=wdStory, Extend:=wdExtend
             ParagrapheDebut = Selection.Paragraphs.Count - .Tables(1).Range.Paragraphs.Count
             ' Recherche du dernier signet de type REQ
             '----------------------------------------
             NbSignets = 0
             For I = 1 To .Bookmarks.Count
                 With .Bookmarks(I)
                      If Mid(.Name, 1, Len("SignetReq")) = "SignetReq" Then NbSignets = NbSignets + 1
                 End With
             Next I
             ' Création des signets
             '---------------------
             For I = 1 To ParagrapheDebut
                 With .Paragraphs(I)
                      If .Range.Bookmarks.Count = 0 And UCase(Mid(DocEnCours.Paragraphs(I).Range.Text, 1, 3)) = "REQ" Then
                          NbSignets = NbSignets + 1
                         .Range.Select
                         DocEnCours.Bookmarks.Add Name:="SignetReq" & NbSignets
                      End If
                 End With
             Next I
     
        End With
     
        Set DocEnCours = Nothing
     
    End Sub

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour Eric,

    Je n'ai pas encore testé le code, mais je tenais déjà à vous remercier ;-)
    Je mettrai à jour ce post pour faire un retour sur cette procédure.

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/10/2010, 15h26
  2. Réponses: 4
    Dernier message: 02/02/2009, 15h29
  3. [SimpleXML] Génération automatique de fichier PHP à partir d'XML
    Par une_tite_question dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 12/03/2008, 11h42
  4. Réponses: 7
    Dernier message: 02/07/2007, 14h37
  5. Réponses: 2
    Dernier message: 27/05/2007, 20h09

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