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 : Extraire les titres du document et le niveau associé (1, 1.1, 1.1.1)


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2024
    Messages : 3
    Points : 1
    Points
    1
    Par défaut VBA : Extraire les titres du document et le niveau associé (1, 1.1, 1.1.1)
    Bonjour,

    Bonne année à tous!
    Je cherche à extraire tous les commentaires qui ont été faits sur un document word et les mettre sur excel.

    J'ai déjà développé une macro qui fonctionne et qui répond à 90% à mon besoin, elle est en pièce jointe.

    Par contre, il me manque une info à extraire et je ne sais pas comment :
    j'aimerai, pour chaque commentaire, ajouter dans deux colonnes les informations suivantes :
    - Le libellé du titre en chapeau, du texte commenté
    - le niveau de profondeur : 1, 1.1, 1.1.1

    Macro Word - extraction comm.txt

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 367
    Points
    367
    Par défaut TablesOfContents (Word)
    Bonjour, Bonne Année!
    Il faut simplement utiliser l'objet TablesOfContents pour trouver la profondeur et les titres

    ActiveDocument.TablesOfContents.MarkEntry Range:=Selection.Range, _
    Level:=2, Entry:="Introduction"

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2024
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci pour votre aide.

    Seulement l'objet TablesOfContents renvoie toute la table des matières.
    cela ne correspond pas à mon besoin qui est d'extraire seulement le titre concerné de la table des matières.
    j'ai essayé avec tablesOfContents.Item sans succès.

    Voici la macro que j'utilise (macro extraction titres). Elle extrait toute la table des matières dans la cellule A2.
    j'aimerai l'adapter pour que le 1er titre soit en A2, le second en A3 et ainsi de suite.

    ******************************

    Sub Export_Titre()
    '
    ' Export_Titre
    '
    '

    'Créer le projet Word vba
    Dim xlApp As Object
    Dim xlWB As Object
    Dim i As Integer
    On Error Resume Next
    Set xlApp = GetObject(, "Excel.Application")
    If Err Then
    Set xlApp = CreateObject("Excel.Application")
    End If
    On Error GoTo 0
    xlApp.Visible = True
    Set xlWB = xlApp.Workbooks.Add ' créer un nouveau classeur
    With xlWB.Worksheets(1)

    'En-tête
    .Cells(1, 1).Formula = "Titre"
    .Cells(1, 2).Formula = "Profondeur"

    'Reprendre les titres

    For i = 1 To ActiveDocument.TablesOfContents.Count
    .Cells(i + 1, 1).Formula = ActiveDocument.TablesOfContents(i).Range

    Next i

    End With
    Set xlWB = Nothing
    Set xlApp = Nothing

    End Sub

    *********************************

    Quelqu'un aurait une idée ?
    Merci à vous!
    Fichiers attachés Fichiers attachés

  4. #4
    Membre confirmé
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 351
    Points : 552
    Points
    552
    Par défaut
    Bonjour,

    Il vous faut passer par une boucle sur les paragraphes de la table des matières :

    Exemple :

    Nb : Chez moi, le caractère entre le dernier point de la hiérarchisation et le titre est le caractère 9.

    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
     
    Public MatriceContents() As Variant
    Public IndexTab As Integer
     
    Sub Export_Titre2()
     
    'Créer le projet Word vba
    Dim I As Integer, J As Integer
    Dim MonTableau As Variant
     
      With ActiveDocument
            IndexTab = 0
            For I = 1 To .TablesOfContents.Count
                With .TablesOfContents(I).Range
                     For J = 1 To .Paragraphs.Count
                         If Len(.Paragraphs(J).Range) > 2 Then
                            'MonTableau = Split(.Paragraphs(J).Range, "." & Chr(9))
                            MonTableau = Split(.Paragraphs(J).Range, Chr(9))
                            ReDim Preserve MatriceContents(2, IndexTab)
                            MatriceContents(0, IndexTab) = I
                            MatriceContents(1, IndexTab) = MonTableau(0)
                            MatriceContents(2, IndexTab) = Mid(MonTableau(1), 1, Len(MonTableau(1)) - 2)
                            IndexTab = IndexTab + 1
                        End If
                     Next J
              End With
            Next I
     End With
     
     'For IndexTab = LBound(MatriceContents, 2) To UBound(MatriceContents, 2)
     '     Debug.Print "TM : " & MatriceContents(0, IndexTab) & ", titre : " & MatriceContents(2, IndexTab) & ", profondeur : " & MatriceContents(1, IndexTab)
    ' Next IndexTab
     
    End Sub
    La variable MatriceContents étant public, vous pouvez l'utiliser dans votre autre procédure.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2024
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci beaucoup pour votre proposition de solution!

Discussions similaires

  1. Patrons pour extraire les titres
    Par mimihh dans le forum Général Java
    Réponses: 11
    Dernier message: 22/09/2013, 03h21
  2. extraire les titres des documents word
    Par funmatica dans le forum Langage
    Réponses: 0
    Dernier message: 31/08/2013, 00h09
  3. [VBA]Supprimer les Pages vides d'un document
    Par Sami-33 dans le forum Word
    Réponses: 1
    Dernier message: 25/07/2007, 20h54
  4. [VBA-E]Extraire les infos des cellules
    Par boosty dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/04/2006, 09h46

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