Bonjour Aerial,

Envoyé par
Aerial
pour chacun des fichiers, de générer une ligne dans un excel.
Vous pouvez immédiatement démarrer le projet en définissant ses constantes nommées.
Répondez en décrivant chaque constante. Où trouvez les documents Word ?
A partir de quelle ligne et dans quelle colonne on va renseigner la feuille Excel ?
Pour y mettre quoi ? Le nom du document ? Son chemin complet ? Son nombre de lignes ? De pages ? L'auteur ? Sa date ?
1. Démarrez avec la maquette DocName() et surtout ses constantes
Ouvrir Excel. Une feuille vide apparaît.
Ouvrir le Visual Basic Editeur par Alt+F11, c-a-d :
Excel menu "Outils" > "Macro" > "Visual Basic Editeur" (VBE)
Cliquez sur le VBE menu "Insérer" > "Module".
Dans la fenêtre propriétés du Module1, renommer "Module1" en "ModDoc"
Dans la fenêtre d'Edition de ModDoc, copier-coller :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Option Explicit
Public Const pathDoc = "\*.doc" ' Chemin relatif des documents Word dans le répertoire du .xls
Public Const indSheetDoc = 1 ' Feuille "Document"
Public Const rowName = 2 ' Première ligne pour inscrire le nom du document
Public Const colName = 1 ' Colonne des noms de document
Function DocName() As Integer
Dim fileName As String, indRow As Integer, nbrDoc As Integer
fileName = Dir(ThisWorkbook.Path + pathDoc)
indRow = rowName
nbrDoc = 0
While fileName <> ""
Cells(indRow, colName) = fileName
indRow = indRow + 1
nbrDoc = nbrDoc + 1
fileName = Dir
Wend
Debug.Print "Nombre de documents traités : " & nbrDoc
DocName = nbrDoc
End Function |
Sauvegardez le projet dans DocMngt.xls
2. Testez DocName() maintenant
Copier deux documents Word .doc dans le même répertoire que DocMngt.xls
Dans la fenêtre d'Exécution immédiate (Ctlr+G) du VBE, copier-coller et valider par ENTER :
Nombre de documents traités : 2
2
La fonction DocName() a retourné le nombre de documents traités. Soit 2 s'il y a deux documents Word .doc dans le même répertoire que DocMngt.xls
Dans la feuille de calcul "Feuil1" renommée en "Document" dans DocMngt.xls,
DocName() a écrit en A2 le nom du premier document Word et en A3 le nom du second .doc.
Si ce n'est pas ce qui est attendu, mieux décrire les spécifications de votre projet en s'aidant de la définition de constantes en VBA que vous pouvez commenter. Etablir ce qui est attendu avec un niveau de description analogue à cette maquette. Comparez comment une seule ligne de votre spécification a pu générer les quatre chapitres de cet article.
3. Adaptez DocName() selon votre contexte
Si vous choisissez de définir où trouver les .doc par un chemin absolu en remplaçant :
Public Const pathDoc = "\*.doc" ' Chemin relatif des documents Word dans le répertoire du .xls
par :
Public Const pathDoc = "C:\MesDocuments\*.doc" ' Chemin absolu des documents Word
Adaptez le chemin à votre répertoire de documents contenant une copie de quelques .doc pour le test de la maquette.
Il faudra changer le code pour récupérer chaque nom de document :
fileName = Dir(ThisWorkbook.Path + pathDoc)
peut devenir :
4. Définir le projet avec précision
Après avoir réussi cette étape volontairement la plus simple possible, définir avec le même niveau de précision ce que l'on veut extraire de la page de garde et où dans la feuille Excel on veut traiter ces informations.
Définir dans votre réponse de nouvelles constantes de rangée, de colonne, et éventuellement un nouveau n° de feuille si on doit ranger ces informations dans une nouvelle feuille.
Idem pour la gestion des annexes. Définir avec précision en donnant un exemple minimal ce qu'il y a à extraire sans divulguer un contenu sensible.
Une seule ligne de description n'est pas suffisante, car à partir de :

Envoyé par
Aerial
- Pour les pages suivantes, remplir les colonnes avec le contenu qui se trouve entre deux sauts de page
Si on doit recopier le contenu des pages suivantes, hors la page de garde, dans des colonnes (notez l'imprécision à résoudre par des constantes) comme il y a "un gros millier de documents .doc", on risque de faire exploser la ou les feuilles Excel si on ne spécifie pas le possible contenu à extraire, s'il faut extraire certains mots clés, s'il y a des tables, des mises en forme particulière (bold, italic, color), des schémas ou des images, des notes de bas de page, des hyperliens, etc.
Dans chaque cas, précisez ce qu'il convient de faire pour simplifier le problème.
___________
En bas de ce message s'il vous a apporté des éléments de réponse pertinents, pensez également à voter en cliquant sur le bouton vert
ci-dessous.
Partager