XL pour MAC Importer données doc Word vers classeur Excel

Chris Toff

XLDnaute Nouveau
Bonjour à tous.tes,

Je sais que ce sujet à déjà été abordé sur ce forum et j'aimerai une aide pour récupérer les données de mes factures et intervention crées sous Word et les importer dans un classeur sous Excel.
Je ne l'ai pas fait dès le départ car j'étais plus préoccupé par le développement de mon entreprise mais maintenant il faut que je trouve une solution pour intégrer ces données dans un logiciel de gestion d'entreprise.

- Mes factures sont dans un dossier puis classées par genre : documents>nomentreprise>facture>particuliers ou professionnels>installations, dépannages ou maintenances >années

- Mes interventions sont un dossier puis classées par année et numéro : documents>nomentreprise>interventions>années>numéro

J'ai crée un classeur Excel très classique (Nom, Prénom, Adresse, ...) dans lequel j'aimerai importer les informations récupérées dans les documents factures et interventions.

J'ai vu qu'il existe une fonction avec un code VBA et j'ai essayé de comprendre comment utiliser cette macro sur les forums mais je ne sais pas du tout comment cela fonctionne.

Je joint un exemple de facture, d'intervention et le classeur Excel et je vous remercie par avance de votre aide.

Cordialement,
Christophe.
 

Pièces jointes

  • Exemple facture.docx
    141.4 KB · Affichages: 3
  • Exemple fiche intervention.docx
    32.3 KB · Affichages: 5
  • Classeur clients importés.xlsx
    10.5 KB · Affichages: 5

Chris Toff

XLDnaute Nouveau
Pour faire plus simple j'aimerai adapter et utiliser le code suivant, mais j'ai besoin de votre aide pour entre les variables et chemin depuis le doc Word vers la feuille Excel.

' ----------------------------------------------------------------
' Extraction des données à partir de fichier Word vers Excel
' Par : Grand Chaman Excel -- 2013/03/05
'-----------------------------------------------------------------
Sub Importation_Donnees_Word()

' -- Déclaration des variables
Dim wb As Workbook 'classeur Excel dans lequel on importe les données
Dim ws As Worksheet 'onglet Excel dans lequel on importe les données
Dim sChemin As String 'répertoire contenant les fichiers Word
Dim sNomFichier As String 'nom du fichier Word
Dim WApp As Object, WDoc As Object, WSel As Object
Dim i As Integer

' -- Initialisation des variables
Set wb = ThisWorkbook
Set ws = wb.Sheets(1) 'on sauvegarde dans la 1re feuille
sChemin = ChoisirRepertoire & "\" 'fonction pour choisir le répertoire contenant les fichier Word
'sChemin = ThisWorkbook.Path & "\" 'si les fichiers Word se trouvent dans le même répertoire que le fichier Excel
sNomFichier = Dir(sChemin & "*.doc*") 'pour ouvrir tous les fichiers .doc*. 1er fichier.

Set WApp = CreateObject("Word.Application") 'pour créer un objet Word
WApp.Visible = True 'ne pas afficher Word pendant l'exécution
i = ws.Range("A" & Rows.Count).End(xlUp).Row + 1 '1re ligne où on va écrire les données dans le fichier Excel

Application.ScreenUpdating = False

' -- Boucle sur les fichiers
Do While Len(sNomFichier) > 0

Set WDoc = WApp.Documents.Open(sChemin & sNomFichier) 'ouvre le document Word
Application.StatusBar = "Écriture ligne " & i 'message dans Excel pour voir la progression

' Nom du fichier
ws.Cells(i, 1) = sNomFichier

' No de facture (par la fonction FIND)
WApp.Selection.HomeKey unit:=6 'Retourne au début du fichier Word
WApp.Selection.Find.ClearFormatting 'on "vide la mémoire" de la fonction Recherche
WApp.Selection.Find.Execute "N° Facture" 'On trouve le texte "No Facture"
WApp.Selection.MoveRight unit:=3, Count:=2, Extend:=2 'On se déplace de 3 mots
Set WSel = WApp.Selection 'sélection du texte trouvé
ws.Cells(i, 2) = Trim(Split(WSel, ":")(1)) 'Le No de facture est la 2e chaîne de caractères séparés par 2 ":"

' No Vendeur (dans le 2e tableau, ligne 2, colonne 1)
WDoc.Tables(2).Cell(2, 1).Range.Copy 'copie la valeur dans le presse papier
ws.Select 'bascule vers Excel
ws.Cells(i, 3).PasteSpecial (xlPasteValues) 'colle la valeur dana la cellule

' No du bon de commande (dans le 2e tableau, ligne 2, colonne 2)
WDoc.Tables(2).Cell(2, 2).Range.Copy
ws.Select
ws.Cells(i, 4).PasteSpecial (xlPasteValues)

' Nom du client (par la fonction FIND)
WApp.Selection.HomeKey unit:=6
WApp.Selection.Find.ClearFormatting
WApp.Selection.Find.Execute "FACTURER À :"
WApp.Selection.MoveRight unit:=3, Count:=2, Extend:=1
Set WSel = WApp.Selection
ws.Cells(i, 5) = Split(WSel, ":")(1)

' Montant total dû (dans le 3e tableau, ligne 10, colonne 2)
WDoc.Tables(3).Cell(10, 2).Range.Copy
ws.Select
ws.Cells(i, 6).PasteSpecial (xlPasteValues)

i = i + 1 'prochaine ligne
WDoc.Close False 'fermer le document Word sans enregistrer
sNomFichier = Dir 'prochain document
Loop

SortieNormale:
Application.ScreenUpdating = True
WApp.Quit 'Fermer l'instance de Word
Application.StatusBar = False 'Remise à zéro de la barre d'état

End Sub
La fonction qui suit permet de récupérer le chemin d’accès d’un répertoire choisi par l’utilisateur:

Function ChoisirRepertoire() As String
' -- Fonction permettant de choisir un répertoire
Dim oRepertoire As Object
ChoisirRepertoire = ""
Set oRepertoire = CreateObject("Shell.Application").BrowseForFolder(0, "Choisir un répertoire", 0)
If (Not oRepertoire Is Nothing) Then ChoisirRepertoire = oRepertoire.Items.Item.Path
Set oRepertoire = Nothing
End Function
 

Discussions similaires

Haut Bas