importer contenu paragraphe précis word-> excel

pitai

XLDnaute Nouveau
Bonjour à tous,

Ca fait quelque temps maintenant que je travaille sur un projet où il faut que j'extraie le contenu d'un document word vers un excel grâce à une macro VBA.
Ce document se présente ainsi:

1. Sommaire
2. ...
3. ...
i. Liste des règles (le paragraphe qui m'intéresse)
n. ...

J'aimerais pouvoir afficher uniquement le contenu du paragraphe : Liste des règles dans un nouvel onglet d'un classeur excel déjà ouvert. Avec le code donné en pièce-jointe, je suis juste parvenu à sélectionner le paragraphe en question mais je n'arrive pas à extraire son contenu.


Quelqu'un pourrait-il m'éclaire sur le sujet ?
Je vous remercie d'avance
 

Pièces jointes

  • test.xls
    29.5 KB · Affichages: 92
  • test.xls
    29.5 KB · Affichages: 105
  • test.xls
    29.5 KB · Affichages: 102

Grand Chaman Excel

XLDnaute Impliqué
Re : importer contenu paragraphe précis word-> excel

Bonjour pitai et bienvenue sur le forum,

Je crois qu'en modifiant une petite partie de ton code ainsi, ça devrait fonctionner :

Code:
 Dim str as String

      For Each Cible In WordDoc.Paragraphs
        
        If Trim(Cible.Range.Words(1)) = "Test" Then
            str = Cible.Range.Text
            Range("A1") = str
        End If
        
    Next Cible

A+
 

pitai

XLDnaute Nouveau
Re : importer contenu paragraphe précis word-> excel

Merci beaucoup Grand Chaman Excel pour votre réponse.

Par contre, j'ai testé le code et il m'affiche pas le contenu du paragraphe correctement (en réalité, il affiche "Test" suivi d'un carré blanc).

Par ailleurs, si le contenu du paragraphe est un tableau. Quel type de variable dois-je prendre pour str ? Word.Table ?
 

pitai

XLDnaute Nouveau
Re : importer contenu paragraphe précis word-> excel

EDIT: a priori j'ai trouvé la source du problème (le carré blanc)

Lorsque que les paragraphes et son contenu se trouvent sur la même ligne, alors le contenu est extrait correctement.

Cependant, comme dans tous les paragraphes, le contenu de ces derniers est situé après un saut de ligne. Comment donc prendre en compte ce saut de ligne et éviter ainsi ce fameux carré?
 

Grand Chaman Excel

XLDnaute Impliqué
Re : importer contenu paragraphe précis word-> excel

Bonjour pitai,

Je ne suis pas super familier avec ce genre d'opérations (Word -> Excel). J'ai fait quelques macros dans le passé, mais toujours quelque chose de simple et habituellement de Excel -> Word.
1) Peux-tu joindre un exemple de ton fichier Word et indiquer quel paragraphe tu veux extraire. (est-ce toujours la même longueur?, qu'est-ce qui détermine la fin du paragraphe?... il doit y avoir un moyen avec Word de déterminer le début et la fin du texte à extraire.)
2) Pour ta question du tableau, je ne sais pas comment faire.

A+
 

pitai

XLDnaute Nouveau
Re : importer contenu paragraphe précis word-> excel

Rebonjour,

J'ai mis en pièce jointe le .doc (grossièrement coupé parce qu'il fait une centaine de pages en fait).
Mon objectif est d'extraire les tableaux qui sont dans les paragraphes : Liste des règles IHM (page 5 et 7) et les mettre bout à bout dans un document Excel.

Les paragraphes contiennent généralement que le tableau à extraire (il se peut qu'il y ait un petit texte introductif avant, mais ce sont des cas à part) et ont toujours le même titre (Liste des règles IHM)

Les tableaux à extraire se présentent toujours de la même manière :
- 3 colonnes
- le même nom de colonne pour chaque tableau à extraire.

Mon approche est de limiter l'importation du .doc sous Excel à une partie du .doc qui m'intéresse. Etant donné que les paragraphes et les tableaux sont formalisés, j'aimerais automatiser l'extraction grâce à une macro.
Cependant, je n'arrive pas à faire une macro qui limite l'importation à la partie qui m'intéresse.

Mais, je ne sais pas si c'est la meilleure approche.


EDIT: Petit problème de version du document pour pouvoir uploader : le site n'accepte que les .docx. J'uploaderai mon fichier un peu plus tard dans la soirée. Merci
 

Pièces jointes

  • docu.zip
    27.6 KB · Affichages: 81
Dernière édition:

Grand Chaman Excel

XLDnaute Impliqué
Re : importer contenu paragraphe précis word-> excel

Bonjour pitai,

Voici un essai. La macro importe tous les tableaux du document Word choisi. S'il faut mettre le numéro du paragraphe (3.2.x Liste des règles ....) aussi, je ne sais pas comment faire.
En espérant que ça va t'aider un peu...

A+
 

Pièces jointes

  • Word to Excel2.xls
    35.5 KB · Affichages: 88

pitai

XLDnaute Nouveau
Re : importer contenu paragraphe précis word-> excel

Merci beaucoup Grand Chaman Excel, ça me fait une excellente base de travail.

Par contre, comme annoncé, le code que vous m'avez fourni importe tous les tableaux dont certains qui ne m'interéssent pas. Les tableaux qui m'intéressent sont formalisés avec toujours comme 1ère case : "Code". J'ai donc essayé d'imposer une condition avant l'importation des tableaux, mais qui ne marche pas. Problème de syntaxe ?

Code:
If WordDoc.Tables(i).Columns(1).Cells(1).Range.Text = "Code"

Autre chose:

J'aimerais appliquer ce même programme à plusieurs fichiers Word. Est-il possible d'importer tous les documents Word de cette façon ou une autre, mais de sorte que toutes les importations se font sur une même feuille Excel, les unes après les autres ?

Bonne journée
 
Dernière édition:

Grand Chaman Excel

XLDnaute Impliqué
Re : importer contenu paragraphe précis word-> excel

Bonjour pitai,

Voir dans le fichier joint avec la macro modifiée pour importer uniquement les tableaux avec le mot "Code" dans la 1re cellule.

Si la macro est exécuté plusieurs fois, les tableaux seront toujours ajoutés à la suite des autres. En effet, la variable wrow est recalculée à chaque fois et sert à déterminer à quelle ligne ajouter le tableau.

Si tous les documents Word sont dans un même répertoire, il serait possible de modifier la macro pour que tous les documents soient ouverts à la suite automatiquement, au lieu de le faire un à un à la fois.

Pour ce qui est du carré blanc, j'imagine que vous avez trouvé une réponse au problème car le message est modifié. De mon côté, je ne vois pas de carré blanc, mais plutôt un retour de ligne et un point noir (code ascii 10 et 7 respectivement.

A+
 

Pièces jointes

  • Word to Excel2a.xls
    50.5 KB · Affichages: 105

pitai

XLDnaute Nouveau
Re : importer contenu paragraphe précis word-> excel

Rebonjour Grand Chaman Excel et un grand merci à vous, c'est parfait.


Bonjour pitai,

Si tous les documents Word sont dans un même répertoire, il serait possible de modifier la macro pour que tous les documents soient ouverts à la suite automatiquement, au lieu de le faire un à un à la fois.

A+

C'est exactement ce que je recherche à faire. Comment cela marche-t-il ? Faut-il spécifier le chemin du répertoire dans la macro VBA ou bien après l'exécution de la macro, une fenêtre apparaît où l'on peut choisir son répertoire avec la souris ?


EDIT: J'ai effectivement réussi à retirer les carrés blancs en supprimant les 2 derniers caractères de chaque cellule.
 
Dernière édition:

Grand Chaman Excel

XLDnaute Impliqué
Re : importer contenu paragraphe précis word-> excel

Bonjour Pitai,

Je te propose ces 2 liens qui expliquent comment récupérer les données de plusieurs fichiers Excel. Avec Word, c'est la même technique, il suffit de changer l'extension de fichier. Il ne reste qu'à placer le code au début et la boucle sur les fichiers au bon endroit.

Le Grand Chaman Excel: VBA | Récupérer les données de plusieurs fichiers

Le Grand Chaman Excel: VBA | Récupérer les données de plusieurs fichiers (2); Fonction DIR

A+
 

pitai

XLDnaute Nouveau
Re : importer contenu paragraphe précis word-> excel

Ca marche !! Un grand merci à vous Grand Chaman Excel !! J'ai gagné un temps précieux grâce à votre aide.

Petit bémol tout de même. Les tableaux sont importés mais j'ai un message d'erreur qui s'affiche : "Erreur d'exécution 438 : Propriété ou méthode non gérée par cet objet".

Ca me renvoie ça pour la ligne de code (4ème ligne en dessous du commentaire "Optionnel, pour inscrire le nom du fichier"):

Code:
TableNo = wdDoc.tables.Count

Bizarre parce que les tableaux sont bien importés (il faudrait que je vérifie par rapport aux documents Word manuellement mais j'ai plus de 2000 lignes à contrôler). D'autant plus que la référence Microsoft Word xx.x Object Library a bien été ajoutée, donc je ne voie pas pourquoi il ne reconnaît pas la méthode Count


Sincérement merci et bonne continuation.
Je ne voudrais pas abuser plus longtemps.
 

pitai

XLDnaute Nouveau
Re : importer contenu paragraphe précis word-> excel

J'ai une dernière petite question de manière de coder.

J'ai 2 types de doublons dans ma liste :
1) Dans la colonne "Code" et dans la colonne "Description", un même code avec la même description
2) Dans la colonne "Code" et dans la colonne "Description", un même code avec une description différente

J'ai pensé à coder manuellement une macro de recherche avec des boucles For et If, mais je me suis aperçu qu'Excel a des outils optimisés de recherche de doublons (RechercheV, sommeprod etc...). J'ai beaucoup de lignes dans mon tableau et ce qui implique un nombre d'itérations et une durée d'exécution importantes.

J'aurais juste voulu savoir quel outil de recherche serait le plus adapté à mon type de recherche ?

Merci d'avance

EDIT: Finalement, la double boucle de recherche marche plutôt bien. Je reste preneur pour une suggestion d'optimisation. Merci
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 611
Messages
2 090 226
Membres
104 452
dernier inscrit
hamzamounir