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
 
Salut,
Comme on n'a pas de fichier exemple, pour faire des tests, j'en ai fabriqué un avec quelques signets et quelques paragraphes (en pièce jointe).
Voici du code vba mis dans un classeur Excel, qui lit tous les signets du document Word et qui affiche le texte qui suit le signet jusqu'à la fin du paragraphe. Il y a une option pour inclure aussi le paragraphe suivant. Attention le range de word n'est pas celui d'excel alors il faut mettre dans les références la Microsoft Word object Library :

et voici ce que j'obtiens comme résultat :

Nullosse
 

Pièces jointes

- 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…