Lister fichier exel répertoire + collecter donnés identiques dans différents cl

Signaler
Messages postés
3
Date d'inscription
mercredi 30 janvier 2008
Statut
Membre
Dernière intervention
28 novembre 2008
-
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
-
Je dois établir une liste de fichier excel contenus dans une série de subfolder d'un serveur : X:\belclean\... ce serveur contient une 20 sous répertoires mais je devrais pouvoir ne selectionner que les répertoires portant les noms suivant : BXL1,BXL2,BXL3,VL1,VL2,VL3,VL4,WL1,WL2,WL3 & WL4. chacun de ses répertoires contient environ entre 50 et 60 classeurs excel.
La liste devrait contenir les champs suivants
1) Directory
2) folder (voir liste plus haut)
3) nom du fichier (NNAAA.xls)
4) date de création du fichier
5) date dernière modification du fichier
où cela se complique c'est que j'aurais aussi besoin de 4 données contenues dans ces fichiers *.xls
='X:\belclean\VL2\[54GERA.xls]Totaux'!$A$5
='X:\belclean\VL2\[54GERA.xls]Checklist'!$B$9
='X:\belclean\VL2\[54GERA.xls]Totaux'!$H$8
='X:\belclean\VL2\[54GERA.xls]Totaux'!$A$8

6) Site:54GERA
7) date du contrôle : 01/08/2008
8) Bloc : A
9) Superficie :1092,32

Je devrais terminer par un hyperlink vers le dit fichier pour un contrôle éventuel.
J'ai découvert qu'en VBA c'était possible mais souvent de plusieurs macros différentes. Je commence à peine et je suis comme qui dirait un peu dépassé.
Pourriez vous m'aider ??

<!-- / message -->

4 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
55
BIEN LE BONJOUR A TOI AUSSI....

Le forum n'est pas un endroit ou l'on demande un code tout fait.
C'est bien de nous exposer ce que tu dois faire... mais as tu commencé quelques chose?

[../reglement.aspx Voir le règlement de CodeS-SourceS]
@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
bonjour

De mémoire et selon la version d'excel Francais ou Anglais
soit LIEN_HYPERTEXTE soit HYPERLINK
Sans VBA, Car en collant la fonction =LIEN_HYPERTEXTE(LC(-1))
Avec VBA Cell("A1").Formula= "=LIEN_HYPERTEXTE(LC(-1))
et LC a remplacer par RC si anglais
Messages postés
3
Date d'inscription
mercredi 30 janvier 2008
Statut
Membre
Dernière intervention
28 novembre 2008

J'ai en effet trouver des codes relatif à ma demande, mais et c'est la que le bas blesse, je ne sais vraiment pas comment assembler les trois différents codes en un seul:
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /??><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id="_x0000_i1025" style="WIDTH: 12pt; HEIGHT: 12pt" alt="" o:button="t" type="#_x0000_t75"></v:shape>Filesearch : lister les fichiers d'un répertoire

Je cherche une macro qui me liste tous les fichiers d'un répertoire quelconque

Sub zaza()
Set fs = Application.FileSearch
With fs
.LookIn = "C:Documents and SettingsflorenceApplication
DataMicrosoftExcel"
.Filename = "*"
.Execute
For i = 1 To .FoundFiles.Count
MsgBox .FoundFiles(i)
Next i
If .FoundFiles.Count = 0 Then
MsgBox "Aucun fichier n'a été trouvé."
End If
End With
End Sub
*******************************
Si dans cette procédure j'écris :

.FileName = "F*.*"

Et bien j'obtiens tous les fichiers débutant par la lettre
F du répertoire choisi.

Si j'écris : .FileName = "F*"

J'obtiens seulement le nombre de fichiers dont les extensions font partie de la
constante "msoFileTypeOfficeFiles"

Denis Michon, Laurent Mortézai, Isabelle, (N°1255)

Et pour finir pour ma collecte des données dans ce classeur

<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id="_x0000_i1025" style="WIDTH: 12pt; HEIGHT: 12pt" alt="" o:button="t" type="#_x0000_t75"></v:shape>Pointer avec un lien hypertexte vers les fichiers d'un répertoire

Comme établir la liste des fichiers contenus dans un répertoire avec un lien hypertexte pointant sur chacun ?

La macro Repertorier appelle la fonction Lister en lui passant en paramètres les choix de l'utilisateur sur
- le dossier à analyser
- L'inclusion ou non des sous dossiers,
- Le N° de la ligne ou commencer à incrire les données
- Le filtrage éventuel sur un type de fichier.

Sub Repertorier()
'Une méthode basique sans API pour lister les répertoires et
'sous-répertoires. Michel Pierron, MPFE 2002. Adaptation Flo Cabon sur une idée de "mrik"
'* nRow = Ligne de départ
'* FolderName = Chemin du répertoire à lister
'* Suffix = Filtre optionnel des types de fichiers
'* SubDir = True pour étendre la liste aux sous-répertoires
Dim LeMessage As String, LeRepertoire As String, Lextension As String
Dim Profondeur As VbMsgBoxResult
Dim nRow As Long

LeMessage = "Choisissez le dossier à analyser"
LeRepertoire = GetDirectory(LeMessage)
Lextension = InputBox("indiquez éventuellement une extension de fichier pour filtrer les fichiers", "Type de fichier", "*.*")
Profondeur = MsgBox("Voulez vous analyser aussi les sous-répertoires ?", vbYesNo, "Profondeur d'analyse")
nRow = InputBox("indiquez le N° de la première ligne pour le tableau de sortie", "Sortie des résultats", "1")
If Profondeur = vbYes Then
truc = Lister(nRow, LeRepertoire, Lextension, True)
Else
truc = Lister(nRow, LeRepertoire, Lextension, False)
End If
End Sub
Function Lister(nRow&, FolderName$, Optional Suffix$ "*.*", Optional SubDir As Boolean True)
Dim i As Long, x As Long, File As String, Folder As String, nbFolders() As String

Cells(nRow, 1) = FolderName
Cells(nRow, 1).Font.Bold = TrueIf Not Right(FolderName, 1) "" Then FolderName FolderName & ""
File = Dir(FolderName & Suffix)

Do While Len(File) > 0
With ActiveSheet
.Hyperlinks.Add Anchor:=.Cells(nRow, 2), _
Address:=FolderName & File, _
TextToDisplay:=File
End With
nRow = nRow + 1
File = Dir
Loop

If Not SubDir Then Exit Function
x = 0
Folder = Dir(FolderName, vbDirectory)

Do While Folder > ""
If Folder <> "." And Folder <> ".." ThenIf (GetAttr(FolderName & Folder) And vbDirectory) vbDirectory Then x x + 1
End If
Folder = Dir
Loop

ReDim nbFolders(x + 1)
i = 1
nbFolders(i) = Dir(FolderName, vbDirectory)
Do While nbFolders(i) > ""
If nbFolders(i) <> "." And nbFolders(i) <> ".." ThenIf (GetAttr(FolderName & nbFolders(i)) And vbDirectory) vbDirectory Then i i + 1
End If
nbFolders(i) = Dir
Loop
For i = 1 To UBound(nbFolders()) - 1
Call Lister(nRow, FolderName & nbFolders(i), Suffix)
Next
End Function

Je suis un pneu dans la panade, car je n'ai aucune formation VBA et sur le serveur où ce trouve les fichiers, je devrais ne pouvoir que sélectionnet les sous-dossiers stipulés plus haut.
Merci de votre aide

 

 
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
Eh bien il faut t'y mettre
Apprend a Utiliser le débugueur : pas à pas F8, exécuter F9, point d'arret

Tu as des répertoire à scruter
donc l'appel à BrowseFolder  est sans doute inutile

Dans le premier code
strSourceFolder est à initialiser avec chacun des répertoires à scruter
donc faire des call Subroutine