Tutoriel Word/Excel Recupération d'Info





  1. Objectif de cette page

Ce tutoriel présente une solution pour récupérer dans Excel des informations d'un formulaire Word. L'utilisation recoupe celle d'une base de données, mais en nettement plus lourd. L'intérêt n'est donc pas la légèreté d'utilisation, mais les documents words sont facilement échangeables. Ce procédé permet donc de synthétiser les informations venant de plusieurs sources (par exemple des informations qui doivent être fournies par un client).



  2. Fichiers exemples

Les fichiers créés pour cet exemple sont dans le zip : tutorielrecupinfo.zip



  3. Création du document Word



  3. 1. Création du formulaire

Dans Word, afficher la barre des formules (dans les barres d'outils).
Dans votre document, insérer un champ texte par l'intermédiaire de la barre de formule :



  3. 2. Personnalisation des champs

Double-cliquez sur le champ (partie grisée), la fenêtre suivante apparait :



  3. 3. Résultat final

Au final, j'obtiens un fichier avec 7 champs : CNom, CContact, CWeb, CEmail, CVille, CIdClient, CLoginClient. Le fichier ressemble à ceci :

N'oubliez pas de cliquez sur "Protection du formulaire" sur votre modèle de manière à ne pouvoir modifier que les champs, et plus le texte.


  3. 4. Saisies d'information

Maintenant, il faut copier/coller ce fichier pour en faire plusieurs, et tous les mettre dans le même répertoire.
Dans le fichier zip (tutorielrecupinfo.zip), vous trouverez également des exemples de document afin de faire des tests.


  4. Création du document Excel



  4. 1. Création du fichier

Créer le fichier dans le même répertoire que les documents word. Dans mon cas, je l'ai appelé "resum_client.xls".


  4. 2. Macro

La macro suivante permet de faire la synthèse. Il y a 4 variables qui seront à modifier en fonction de votre cas (en bleu turquoise et gras) :
Sub import_client()
Dim Fich As Worksheet
Set Fich = ThisWorkbook.Worksheets("All_Clients")
chemin = "d:\tutorielrecupinfo\"
mesfichiers = Dir(chemin & "*.doc")
Dim Variables As Variant
Variables = Array("CNom", "CContact", "CWeb", "CEmail", "CVille", "CIdClient", "CLoginClient")

nb_Champs = 7
num_row = 1
i = 0

For i = 0 To nb_Champs - 1
  Fich.Cells(num_row, i + 1) = Variables(i)
Next i

Set FichierWord = CreateObject("word.application")
FichierWord.Visible = True
FichierWord.DisplayAlerts = False

Do While mesfichiers <> ""
  If mesfichiers <> "." And mesfichiers <> ".." And mesfichiers <> "clients.doc" Then
    monDocument = chemin & mesfichiers
    FichierWord.documents.Open Filename:=monDocument, ReadOnly:=True
    num_row = num_row + 1
    num_col = 1
    For i = 0 To nb_Champs - 1
      Fich.Cells(num_row, i + 1) = FichierWord.activedocument.formfields(Variables(i)).result
    Next i
    FichierWord.documents.Close (0)
  End If
  mesfichiers = Dir
Loop
FichierWord.Quit

End Sub
Une fois ce code saisi dans une macro (en utilisant le menu "Outils/Macro/Visual Basic Editor"), exécutez-la en appuyant sur "Alt+F8" et en la choisissant dans la liste des macros.

Une page sur les macros expliquera plus précisement ce code dans quelques temps.

Le résultat obtenu sera le suivant :






Page modifiée le : 13/12/2003
Site modifié le : 16/05/2016


Valid XHTML 1.0 Transitional