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 :

Extraire des données d'un fichier Word


Sujet :

VBA Word

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 61
    Points : 34
    Points
    34
    Par défaut Extraire des données d'un fichier Word
    Bonjour,

    J'ai un fichier Word contenant des termes et leur définition (dictionnaire). Les termes sont en gras et commencent, à chaque fois, une nouvelle ligne.

    J'aimerais faire une macro qui extrait chaque terme et sa définition vers un fichier texte ou xml.

    Ne connaissant pas trop le VB, je commence par quelques trucs basiques mais cela ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Selection.Find.ClearFormatting
    With Selection.Find
    .Font.Bold = True
    End With
    Selection.Find.Execute
    Selection.HomeKey Unit:=wdLine
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    Pouvez-vous m'aider ? Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Salut,

    Le fait de faire un find n'est à mon sens pas la bonne méthode.

    Les définitions sont-elles mélangées à du texte indésirable ou n'y as-t-il que les définitions dans le document ?

    Selon le contenu, la macro devra être différente.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    Le document ne contient qu'une suite de termes et de définitions exactement comme un dictionnaire...

    ...mais les définitions sont parfois un peu complexes et peuvent inclure des images ou des formules. Pour info, elles sont aussi réparties sur 2 colonnes dans le document.

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Tu ne veux que le texte.

    Aurais-tu une page en exemple ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    Oui, je ne veux que le texte.

    Quel type de méthode puis-je utiliser en dehors du Find ?

    Comment sélectionner et extraire les données qui m'intéressent ? (même avec un certain taux d'erreurs)

    Merci de me donner qques pistes de recherche,

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Plutot que le find, faire une boucle sur tous les paragraphes du document.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub ExtraireMots()
    Dim pAra As Paragraph
     
    For Each pAra In ActiveDocument.Paragraphs
     
    Next pAra
     
    End Sub
    Si il y a un cractère spécifique qui suit le mot, c'est encore plus facile.
    on peut alors utiliser la fonction Instr()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub ExtraireMots()
    Dim pAra As Paragraph
    Dim i As Integer
     
    For Each pAra In ActiveDocument.Paragraphs
        i = Instr( pAra.range.text, "MonCaractère") 'i correspond à la position du caractère dans le paragraphe
     
    Next pAra
     
    End Sub
    Ensuite, avec un Left() et un Right() ou un mid(), on peut extraire ce dont on a besoin pour l'envoyer dans un autre fichier.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    Merci pour ces pistes.

    Il n'y a malheureusement pas de caractère permettant de localiser les termes mais chaque terme est en gras. Je compte donc utiliser cette information pour extraire les termes.

    Une 1ère étape serait donc d'extraire du document tous les termes en gras.

    Savez-vous comment faire ?

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    On peut récupérer le premier mot de la chaîne qui compose le paragraphe.

  9. #9
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    en oubliant pas de vérifier s'il est ou non en gras

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/12/2008, 15h23
  2. [Excel] Extraire des données d'un fichier xls en php
    Par splinternabs dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 06/04/2006, 09h11
  3. Extraire des donnés d'un fichier texte
    Par sadsad dans le forum Langage
    Réponses: 2
    Dernier message: 07/02/2006, 15h09
  4. Comment extraire des infos d'un fichier Word ?
    Par Raoul d'Andrésy dans le forum VBA Word
    Réponses: 4
    Dernier message: 02/12/2005, 17h20
  5. Réponses: 7
    Dernier message: 29/09/2005, 10h19

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