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

Word Discussion :

Extraire des données word pour les insérer sous excel [Toutes versions]


Sujet :

Word

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut Extraire des données word pour les insérer sous excel
    Bonjour tout le monde !

    J'ai un document word, dans lequel un certain nombre de données doivent être extraites et placées dans un tableau Excel.
    Toutes ces données ont un style précis (le même).
    On a par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Identifiant 1
    blablabla
    (Fin)
    Identifiant 1 a le style identifiant, blabla est un texte en style normal (paragraphe), et (Fin) a un style fin_identifiant.

    Évidemment, le document word possède un tas d'identifiants différents, séparés par du texte ou des schémas.

    J'aimerai automatiser l'extraction de ces données, pour arriver sous excel à un tableau sous la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Identifiant 1 | Identifiant 2 | etc.
    blablabla | autre texte | etc.
    J'espère que c'est suffisamment clair .

    Merci d'avance de vos réponses et/ou conseils !

  2. #2
    Expert confirmé
    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 : 62
    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
    Par défaut
    Salut Progfou,

    D'abord sache que c'est possible d'extraire les données mais je vois des problèmes pour la mise en forme du résultat comme tu demandes. En effet comme blabla est un ou plusieurs paragraphes il va comporter des marques de fin de paragraphe (=retour chariot), des marques de saut de lignes, des images (peut-être)... ==> Dans ton cas, il peut se résumer, peut-être, une simple ligne mais je préfère généraliser (vu que ça ne coûte pas cher) et donc prévoir qu'il y a plusieurs paragraphes...

    Citation Envoyé par progfou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Identifiant 1 | Identifiant 2 | etc.
    blablabla | autre texte | etc.
    En revanche, je peux faire sans problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Identifiant 1 | blablabla 
    Identifiant 2 | autre texte
    etc.
    Dis-moi si ça te convient.

    @+

  3. #3
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Ca me convient tout à fait !

  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
    Par défaut
    Salut,

    c'est alors beaucoup plus facile dans tous les sens.

    combien de ligne auras-tu au total ?

    Le nombre de colonnes étant limité ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Je peux avoir plus d'une centaine d'identifiants, le nombre de colonnes ne sera pas très important.

  6. #6
    Expert confirmé
    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 : 62
    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
    Par défaut
    Salut,

    OK alors voici le code de la macro

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    Sub DVP_ExtraireLeTexteEntre2ParaMarqueurs()
        '// Aller en début de document
        Selection.HomeKey Unit:=wdStory
     
        '// Inserer un tableau de 2 colonnes et de 2 lignes
        ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=2, NumColumns:=2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
     
        '// Rechercher le texte de style "Identifiant"
        Selection.Find.ClearFormatting
        Selection.Find.Style = ActiveDocument.Styles("Identifiant")
        With Selection.Find
            .Text = "^?"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindStop
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute
        While Selection.Find.Found
            With Selection
                .MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
                .MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
            End With
     
            '// On stocke le texte de l'identifiant
            aIdentifiant = Trim(Selection.Text)
            Selection.MoveRight Unit:=wdCharacter, Count:=2
     
            Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
            While Selection.Paragraphs(Selection.Paragraphs.Count).Style <> "Fin_Identifiant"
                Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
            Wend
            Selection.MoveUp Unit:=wdParagraph, Count:=1, Extend:=wdExtend
     
            ActiveDocument.Range(Start:=ActiveDocument.Tables(1).Cell(Row:=ActiveDocument.Tables(1).Rows.Count - 1, Column:=1).Range.Start, End:=ActiveDocument.Tables(1).Cell(Row:=ActiveDocument.Tables(1).Rows.Count - 1, Column:=1).Range.Start).InsertAfter aIdentifiant
            ActiveDocument.Range(Start:=ActiveDocument.Tables(1).Cell(Row:=ActiveDocument.Tables(1).Rows.Count - 1, Column:=2).Range.Start, End:=ActiveDocument.Tables(1).Cell(Row:=ActiveDocument.Tables(1).Rows.Count - 1, Column:=2).Range.Start).InsertAfter Selection.Text
            '// On ajoute une ligne pour le tableau
            ActiveDocument.Tables(1).Rows.Add BeforeRow:=ActiveDocument.Tables(1).Rows(ActiveDocument.Tables(1).Rows.Count)
     
            Selection.MoveDown Unit:=wdParagraph, Count:=1
     
            Selection.Find.Style = ActiveDocument.Styles("Identifiant")
            With Selection.Find
                .Text = "^?"
                .Replacement.Text = ""
                .Forward = True
                .Wrap = wdFindStop
                .Format = True
                .MatchCase = False
                .MatchWholeWord = False
                .MatchWildcards = False
                .MatchSoundsLike = False
                .MatchAllWordForms = False
            End With
            Selection.Find.Execute
        Wend
     
        '// On supprime les 2 dernières lignes du tableau
        ActiveDocument.Tables(1).Rows(ActiveDocument.Tables(1).Rows.Count).Delete
        ActiveDocument.Tables(1).Rows(ActiveDocument.Tables(1).Rows.Count).Delete
     
        ActiveDocument.Tables(1).Select
        Selection.Copy
        '// Le presse-papier contient maintenant le tableau
     
        '// on supprime les modifications que l'on vient de faire sur le document. Attention,le tabelau n'est plus que dans le presse-papier
        'ActiveDocument.Close SaveChanges:=PromptToSave
    End Sub
    Attention, j'ai mis la dernière instruction en commentaires car elle ferme ton document sans en sauvegarder les modifications (donc le tableau) ==> le seul endroit où se situe ton tableau est le presse-papier.

    @+

  7. #7
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Merci beaucoup, c'est exactement ce que je voulais !
    Même si ça ne s'enregistre pas directement sous Excel, le copier/coller fonctionne bien .

  8. #8
    Expert confirmé
    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 : 62
    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
    Par défaut
    Salut,

    Oui, en effet mais il fallait bien te laisser un petit truc à faire

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 10/12/2023, 03h40
  2. Réponses: 0
    Dernier message: 05/09/2014, 21h11
  3. Réponses: 8
    Dernier message: 19/12/2013, 08h18
  4. Réponses: 9
    Dernier message: 14/03/2011, 20h06
  5. Extraire des données SAP en VBA à partir d'Excel
    Par Mike Twain dans le forum Général VBA
    Réponses: 1
    Dernier message: 06/02/2011, 21h22

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