Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres VBA pour Word à partir de VBA pour Excel

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

JLH974

XLDnaute Nouveau
Bonjour à tous
J'ai un fichier .docx gigantesque de près de 5900 pages pour 19 Mo
Il contient près de 30.000 signets et 130.000 renvois
C'est le décryptage des actes d'état-civil de Tamatave avec le répertoire de toutes les personnes citées
Chaque personne a un signet, chaque acte a un signet et les renvois permettent de naviguer entre les différents éléments du fichier
Je voudrais à partir d'un fichier Excel automatiser le traitement des données contenues
Je connais mieux VBA pour Excel mais pas du tout VBA pour Word
Comment accéder au contenu du signet, au texte suivant le signet et cerise sur le gâteau au paragraphe situé juste après le paragraphe désigné par le signet

Jean-Luc
 
Je ne sais pas la difficulté pour les récupérer via VBA Word bien qu'il soit possible de connaître le texte du signet et sa position :
Code:
 ActiveDocument.Bookmarks("Zone1").Range.Text

De mémoire les signets sont enregistrés comme liens internes tu peux exporter le document sous le format HTML (filtré) et chercher les balises <a name=hhh> ..</a> faciles à capturer par les expressions régulières ainsi tu peux les exposer dans le document
 
Bonsoir
En fait je travaille à partir d'un classeur Excel ouvert et actif (pour des raisons de facilité en ce qui concerne les synthèses) et j'analyse le fichier .docx enregistré sur mon disque dur :

Set wrd = CreateObject("Word.Application")
wrd.Documents.Open Filename:="D:\Généalogie\ProjetRelevéActesTamatave-1866-1922\RelevésActesTamatave-Madagascar-1866-1918-Version36.docx"
' je remplis un tableau Signet(NombreSignets)
NombreSignets = 0

For n = 1 To wrd.ActiveDocument.bookmarks.Count
' MsgBox Left(Trim(wrd.ActiveDocument.bookmarks(n).Name), 4)
If Left(Trim(wrd.ActiveDocument.bookmarks(n).Name), 4) <> "Acte" And Left(Trim(wrd.ActiveDocument.bookmarks(n).Name), 4) <> "MADT" And Left(Trim(wrd.ActiveDocument.bookmarks(n).Name), 4) <> "Clas" Then
' Ne sélectionne que les noms de personne et pas les actes
NombreSignets = NombreSignets + 1
If NombreSignets = 1 Then
ReDim Signet(NombreSignets)
Else
ReDim Preserve Signet(NombreSignets)
End If

Signet(NombreSignets).TexteSignet = Trim(wrd.ActiveDocument.bookmarks(n).Name)
Signet(NombreSignets).PageSignet = wrd.ActiveDocument.bookmarks(n).Range.Information(3)
Paragraphe = wrd.ActiveDocument.Range(Start:=1, End:=wrd.ActiveDocument.bookmarks(n).Start).Paragraphs.Count + 2
Signet(NombreSignets).NuméroParagrapheSignet = Paragraphe
Signet(NombreSignets).TexteParagrapheSignet = wrd.ActiveDocument.Paragraphs(Paragraphe).Range
Signet(NombreSignets).PositionSignet = wrd.ActiveDocument.bookmarks(n).Start

End If

Next n

Mais j'ai simplement recopié et légèrement adapté ce code sans trop le comprendre et en particulier
wrd.ActiveDocument.Range(Start:=1, End:=wrd.ActiveDocument.bookmarks(n).Start).Paragraphs.Count + 2
C'est là où je voudrais en plus le paragraphe suivant et savoir comment modifier Range(Start:=1, End:=wrd.ActiveDocument.bookmarks(n).Start).Paragraphs.Count + 2 pour l'avoir

Jean-Luc
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…