But recherché : Lister tous les fichiers contenus dans un répertoire (si possible, y compris ceux figurant dans les sous-répertoires) et restituer sur feuille comportant 3 colonnes :
A-Nom du fichier (chemin complet non indispensable)
B-Taille du fichier en Octets
C-Date de modification du fichier
Ecueil : je me suis inspiré des divers fils, notamment celui du suprême https://forum.openoffice.org/fr/forum/v ... 689#p67689. La solution proposée par alhazred le 29/11/2012 liste parfaitement le nom de chacun des fichiers présents à la racine du répertoire choisi en commençant la restitution en cellule A2.
Je souhaite que figure en B2 la taille du fichier et en C2 la date de modification du fichier.
Naïvement, après le :
MaFeuille.getCellByPosition(0,x).string = Direction
j'ai souhaité insérer
MaFeuille.getCellByPosition(1,x).value = Direction.Size
ou
MaFeuille.getCellByPosition(2,x).value = Direction.DateLastModified.Value
Bien évidemment, j'ai des messages d'erreur. Ce que je n'arrive pas à faire (par manque de compréhension du code pompé), c'est définir comme un fichier chaque élément restitué (pour en extraire ses propriétés : .Size et .DateLastModified.Value)
Et s'il y a moyen que la procédure aille gratouiller tous les sous-répertoires de la même façon, je suis preneur ! (Ce n'est pas la priorité, mais ce serait un plus appréciable ! )
Merci beaucoup
Code : Tout sélectionner
'Cette macro va lister sous calc le contenu d'un répertoire
'Philippe Bronchart 2008 (modifications par alhazred, signalées par ***)
Sub Listerunrepertoire
Dim MonDoc as object, Mesfeuilles as object, MaFeuille as object
Dim Dossier As object , Valeur As Integer , lerep as string, Ocurseur as object
Dim Direction As string , Resultat As String
MonDoc = ThisComponent 'Sélectionne le document en cours
MesFeuilles=MonDoc.sheets ' les feuilles du classeur
MaFeuille = Mesfeuilles.GetByName("feuille1")' la feuille1
'la boite de dialogue pour choisir le dossier
Dossier = CreateUnoService("com.sun.star.ui.dialogs.FolderPicker") 'création du service sélection d'un fichier
Valeur = Dossier.Execute()
'si il y au moins un choix
If Valeur = 1 Then lerep=ConvertFromUrl(Dossier.getDirectory()) Else Exit Sub '*** on convertit l'URL, sinon on ne fait rien
'on fabrique le chemin de direction
Direction=dir((lerep)&"\*",0) '*** tous les fichiers du répertoire
'Direction=dir((lerep)&"\*.ods",0) '*** seulement les classeurs .ods
'Direction=dir((lerep)&"\*",16) '*** seulement les sous-répertoires
'on fait une boucle tant qu'il il y a des fichiers
oCurseur = MaFeuille.createCursor '*** création du curseur avant la boucle (inutile de répéter)
x = 1 '*** si on veut commencer en ligne 2
Do While Len(Direction) > 0
MaFeuille.getCellByPosition(0,x).string = Direction ' on écrit en A2 feuille1 (0,X) où x = 1 au départ puis 2 3 4 5 .....
X=X+1 ' on ajoute 1 à X
Direction=Dir() '*** élément suivant
Loop ' on boucle
End Sub