Trouver les fichiers en mode dynamique ?

alucard_xs

XLDnaute Occasionnel
Bonjour,

voilà je cherche à lister (pour plus tard les manipuler) tout les fichiers .xls que j'ai dans un repertoire, pour cel j'ai donc mis une boite de choix, pour cibler son repertoire, ensuite il m'indique le nom du repertoire que je veux scanner, par contre je n'arrive pas à dénombrer et à afficher les fichiers xls qui sont présents dans ce repertoire, j'ai bien trouver comment afficher et compter des fichiers .xls dans un repertoire donner mais je n'arrive pas à joindre les deux programmes, afin que mon nom de repertoire soit variable ... pour le moment il m'insique et me marque les fichiers présents dans N: et pis c'est tout ...

Merci de m'aider

voci mon code :
-----
Code:
sub essai1212()
choix = ChoixDossierFichier("d:\09OfficeVBA", 1) '<- ici le chemin de ton choix
If choix <> "" Then MsgBox choix
    
Dim p As String, x As Variant
p = "N:/*xls"
x = GetFileList(p)
Select Case IsArray(x)
Case True 'files found
MsgBox UBound(x)
Sheets("feuil1").Range("A:A").Clear
For i = LBound(x) To UBound(x)
Sheets("feuil1").Cells(i, 1).Value = x(i)
Next i
Case False 'no files found
MsgBox "No matching files"
End Select
End Sub

-----
Function ChoixDossierFichier(Racine, Optional SelType As Byte = 0)
Dim objShell, objFolder, Chemin, SecuriteSlash, FlagChoix&, Msg$

    If SelType = 0 Then
      FlagChoix = &H1&: Msg = "Choisissez un dossier :"
    Else
      FlagChoix = &H4000&: Msg = "Choisissez un fichier :"
    End If
                                            
    Set objShell = CreateObject("Shell.Application")
    'le troisième paramètre permet de choisir
    'la s&eacute;lection d'un dossier ou d'un fichier (0 ou 1)
    'le dernier paramètre permet de choisir le dossier racine
    Set objFolder = objShell.BrowseForFolder(&H0&, Msg, FlagChoix, Racine)
    On Error Resume Next
    Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & ""
    If objFolder.Title = "Bureau" Then
        Chemin = "C:\Windows\Bureau"
    End If
    If objFolder.Title = "" Then
        Chemin = ""
    End If

    SecuriteSlash = InStr(objFolder.Title, ":")

    If SecuriteSlash > 0 Then
        Chemin = Mid(objFolder.Title, SecuriteSlash - 1, 2) & ""
    End If
    ChoixDossierFichier = Chemin
End Function


'==================


Function GetFileList(FileSpec As String) As Variant
' Returns an array of filenames that match FileSpec. ' if no matching files are found, it returns false
Dim Filearray() As Variant, Filecount As Integer
Dim Filename As String

'On Error Goto NoFilesFound Filecount = 0
Filename = Dir(FileSpec)
If Filename = "" Then GoTo NoFilesFound

' loop until no more matching files are found
Do While Filename <> ""
    Filecount = Filecount + 1
    ReDim Preserve Filearray(1 To Filecount)
    Filearray(Filecount) = Filename
    Filename = Dir()
Loop
GetFileList = Filearray
Exit Function ' Error handler
NoFilesFound:
GetFileList = False
End Function
 
Dernière édition:

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

bon alors moi je rends ma blouse, je verrai la suite demain, merci à tous pour votre aide, j'ai mis ce forum dans mes favoris et je sens que je vais y revenir très souvent ;)
Bonne soirée à tous, bon match :)
 

Épaf

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

Alors non seulement tu veux lister les fichiers du répertoire ouvert mais également ceux des sous répertoires... C'est ça ?
Si oui, j'ai écrit un code qui utilise fso.
Ce code nécessite la validation de la référence "Microsoft Scripting Runtime"
Maintenant, si c'est ce que tu veux, je regarderai pour adapter quelque chose au code que tu as déjà... mais + tard :D
Lien supprimé
Bonne soirée
@+
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Trouver les fichiers en mode dynamique ?

Merci Epaf de ton implication


Juste une petit précision


Moi je ne veux rien ;) (ne suis pas l'auteur du post)

Je te remontais juste l'info :

ta macro ne traite que les fichiers à la racine d'un répertoire
pas les sous-répertoires.


Situation désormais traitée avec ton nouveau code.


Merci
 

Épaf

XLDnaute Occasionnel
Trouver les fichiers d'un répertoire et de ses sous-répertoires "Spécial Staple1600"

Post édité et corrigé
Hello Staple, donc
Tu m'as fait travailler un samedi soir :mad: Enfin, "on" a gagné !
Espécialement pour toi, j'ai modifié le code de ma précédente pièce jointe afin de répondre à tes desiderata. Le présent fichier liste donc les fichiers du répertoire sélectionné et des sous-répertoires de celui-ci. Sans doute peut-on faire mieux mais bon, ça fonctionne et ce n'est pas trop long.

A vérifier : Ce code nécessite la validation de la référence "Microsoft Scripting Runtime"
VB Editor -> Menu Outils -> Références
Lien supprimé
Merci pour tes "incitations"

Hello Thierry,
A propos de BrowseForFolder(zéro, un, deux ,trois) merci pour ton explication. Par contre, si je mets deux = -1 ou True, j'obtiens les seuls racourcis du bureau, non le poste de travail. Donc pas d'accès aux volumes.
Juste pour info.
Explications fournies sur le post suivant

Bonne soirée et bon we
&paf
 
Dernière édition:

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Trouver les fichiers d'un répertoire et de ses sous-répertoires "Spécial Thierry

Bonsoir ou Bonjour Epaf

Merci pour ton post, mais à mon avis tu n'as pas bien tout suivi dans ce Fil, qui, je dois reconnaître, est un peu décousu, c'est un comble pour un Fil (lol)

Enfin bref pour éviter toute confusion, moi je n'ai rien demandé, pas de désirata de ma part, le demandeur était alucard_xs comme te l'a fait remarquer Stapple1600.

J'ai malgré tout regardé ton fichier, et j'ai un souci si je choisis un dossier "Vision Virtuelle de Windows" style "My Documents", en effet on a le problème, qu'il me semble, a déjà signalé alucard_xs sur ta ligne pour le Chemin.

Pour l'option BrowseForFolder dont j'ai parlé, oui c'est normal si tu n'as pas spécifié de Drive ou de Path dans l'argument prévu à cet effet, en plus comme je l'ai indiqué, on limite l'utilisateur pour éviter la création intempestive de nouveaux répertoires... Pour la version II que j'ai faite sans avoir bien compris la demande d'alucard_xs, j'ai changé cette option, et du coup si je ne spécifie pas de répertoire, je reproduis là même erreur que tu obtiens.

Enfin pour moi, c'est juste interressant de savoir d'avance que tout ne sera pas rose sous Office 2007 d'après ce que j'ai vu dans ce fil...

Bonne Nuit
@+Thierry
 

Épaf

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

Bonjour Thierry, ça démarre fort.
Ok pour tes remarques. Je dois dire que j'ai posté en regardant "le" match d'un oeil... pour satisfaire à une vieille superstition qui veut que chaque fois que j'assiste à une manifestation sportive, les français perdent :D Et le passage en différé d'un enregistrement n'arrange rien, ils perdent quand même :D
Je corrige donc mon précédent message pour rendre à César ce qui appartient à Staple...
Pour BrowseForFolder, c'est ok oci. Dans l'état où j'étais, je n'avais pas toutes mes facultés...
Pour tes craintes quant à Office 2007, m'en parle pas, quand je ne pourrai plus rien apporter sur VBA 97-2003 j'ai décidé de prendre du recul et de passer à la menuiserie. Ça change moins vite.
Pour "mes documents", j'ai fait le même constat que toi. A défaut d'une solution plus sioux, j'ajouterai une gestion d'erreur qui affichera un message circonstancié... Elle sera en outre nécessaire si l'utilisateur sélectionne un fichier plutôt qu'un dossier.
Mais je retiens "le fil décousu" pour le jour où j'aurai à faire une reprise...
Bref, je corrige tout ça
Bonne journée et merci pour tes réponses.

Edit
Un complément à tout ce que je viens de dire : Il existe une méthode permettant d'ajouter une icône dans une barre de titre d'un userform. Qu'est-ce que cela a à voir avec une liste de fichier ?
Simplement le fait que si on fait ça, avec ouverture du classeur sur l'userform en question, Application.FileSearch ne fonctionne plus => Plantage sur .Execute + Message belliqueux !
Si tu as une idée...
 
Dernière édition:

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

salut à tous, bon je reprends ce matin lol

je vais essayer d'affecter une macro par bouton, dans cette macro je demande de partir des fichiers listés et d'appliquer des formules sur certaines cases, j'aimerai bein aussi que ces nouveaux fichiers 'macroés' se sauvegardent dans un repertoire donné (du genre dans un sous repertoire de celui choisi au début).

Toute aide sera bonne à prendre ;)Je compte partir de ceci :

Code:
Sub loopThroughFilesExample()
Application.DisplayAlerts = False
myFile = ActiveWorkbook.Name
myPath = "C:\Excel\deleteThese\"       
workfile = Dir(myPath & "*.xls")
Do While workfile <> ""
application.StatusBar = "Now working on " & workfile workbooks.Open Filename:=myPath & workfile
doSomething ActiveWorkbook
ActiveWorkbook.Save: Windows(workfile).Close
Windows(myFile).Activate workfile = Dir()
Loop
Application.StatusBar = False
end Sub Sub doSomething(inBook As Workbook)
'indiquez ce que vous voulez faire pour un classeur & utilisez les instruction suivantes pour boucler sur ses feuilles
For Each wksht In inBook.Worksheets
        'do whatever you want here to each worksheet....
Next wksht
End Sub


Par contre que mettre au mypath, car dans le code ci-dessus, le mypath se limite à un chemin fixe.
 
Dernière édition:

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

Je vous met mes fichiers type,

fichier.xls -> fichier qui se trouve dans mon repertoire anaylé au départ et dont la liste s'affiche.
fichiermacroé.xls -> fichier après application de la macro (la feuille 3 reprend la feuille 1 du fichier.xls

au final ce qui serait bien c'est que la macro me permettant de passer de fichier.xls à fichiermacroé.xls, se fasse toute seule en cliquant sur un bouton (type executer comme on a fait précedemment), le fichiermacroé.xls s'enregistrant tout seul dans le sous repertoire (/apresmacro par exemple) du repertoire de départ.

EN fait il y aurait un truc supplémentaire, c'est que cela m'exporte la feuille 1 (celle où il y a le graphique) du fichiermacroé.xms en fichier pdf dans un autre sous repertoire aussi

"Pourquoi n'utilises-tu pas le(s) code(s) proposés par les différents
intervenants du forum?" -> si si je suis dedans là ;)
 

Pièces jointes

  • fichier.xls
    24.5 KB · Affichages: 70
  • fichiermacroé.xls
    26 KB · Affichages: 60
  • fichier.xls
    24.5 KB · Affichages: 71
  • fichier.xls
    24.5 KB · Affichages: 64
Dernière édition:

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

voici le fichier de demarrage, on clique dessus ça ouvre un genre de "bureau de commande", ça liste les fichiers en appuyant sur le bouton repertoire, puis le boutons 2 servirai à appliquer la fameuse macro que je ch pour passer du fichier.xls -> fichiermacroé.xls.
 

Pièces jointes

  • Lister Les Fichiers D'un Répertoire.zip
    21.5 KB · Affichages: 39
Dernière édition:

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

bon je n'ai peut etre pas été suffisament clair, je reprends :

1) On lance Lister Les Fichiers D'un Répertoire.xls
2) on clique sur "repertoire" -> on obtient la liste des fichiers qui m'interesse (exemple: ceux qui sont dans d:\essai\fichiersexcel)
3) on clique sur le bouton "2" -> les fichiers présents dans la liste se transforment en fichiermacroé (avec dont les 3 feuilles - dont le graphique) et s'exportent automatiquement dans un sous-repertoire (exemple : d:\essai\fichiersexcel\fichiers modifiés)
4) on clique sur le bouton "3" -> la feuille 3 (celle du graphique) des fichiers macroé se transforment en pdf et s'exportent automatiquement dans un sous-repertoire (exemple : d:\essai\fichiersexcel\fichiers modifiés\pdf)

Pour le moment, l'étape 1 et l'étape 2 marchent très bien.
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 910
Membres
101 837
dernier inscrit
Ugo