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 ?

j'espère que mes explications vous semblent cohérentes

deja il va fallori que la macro de passage créee trois feuilles, copie la feuille1 du fichier.xls dans la feuille3 du fichiermacroé.xls, après la sous-macro pour faire le tableau en feuille 2 puis créee le graphique en feuille1 ... c'est pas gagné mon affaire moi ...

j'ai quand même vraiment du mal.
 
Dernière édition:

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

mon "chemin" représente mon repertoire par défaut, comment fair epour lui créer un sous repertoire, niveau écriture, comment faire ? je doute qu'un
Code:
chemin\repertoire
fonctionne

personne ici ce matin ? -> arf je suis pas dans le bousier moi du tout ...
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Trouver les fichiers en mode dynamique ?

Re


Pour créer un répertoire

MkDir, instruction, exemple
Cet exemple utilise l'instruction MkDir pour créer un répertoire ou un dossier. Si le lecteur n'est pas indiqué, le nouveau répertoire ou dossier est créé sur le lecteur courant.

MkDir "MONREP" ' Crée un nouveau répertoire ou dossier.


Pour aller un peu plus loin
Code:
sub cree_sousrep()
'teste l'exitence du répertoire
If Len(Dir("d:\essai\fichiersexcel\fichiers modifiés\", vbDirectory)) = 0 Then
'le crée si  il n'existe pas
    MkDir "d:\essai\fichiersexcel\fichiers modifiés\"
End If
end sub
 
Dernière édition:

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

ok mais si je veux créer un repertoire qui sera le sous repertoire de mon repertoire choisi au début de mon programme (je rappelle que je le choisi via un browse, donc son nom peut etre n'importe lequel)
 

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

bon ok merci mais avec ceci :

d:\essai\fichiersexcel\fichiers modifiés\

il ne me crée que dans le repertoire essai/fichierexcel, moi j'aimerai qu'il me crée dans le repertoire donné dès le départ.

Code:
Sub cree_sousrep()
'teste l'exitence du répertoire
If Len(Dir(repertoirede départ mais comment le mettre ?, vbDirectory)) = 0 Then
'le crée si  il n'existe pas
    MkDir "d:\essai\fichiersexcel\fichiers modifiés\"
End If
End Sub

il ne me prend pas le "chemin"
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Trouver les fichiers en mode dynamique ?

Re


Pourquoi appelles tu plusieurs la meme macro?

Private Sub CommandButton1_Click()
ListerLesFichiersDunRepertoire
End Sub

Private Sub CommandButton2_Click()
ListerLesFichiersDunRepertoire
End Sub

Private Sub CommandButton3_Click()
ListerLesFichiersDunRepertoire
End Sub

Private Sub CommandButton4_Click()
ListerLesFichiersDunRepertoire
End Sub

Private Sub CommandButton5_Click()
ListerLesFichiersDunRepertoire
End Sub

De même je ne comprends pas ceci ???

Ta macro est commentée et donc ne fait rien
Code:
Sub ListerLesFichiersDunRepertoire()
Dim chemin As String
    chemin = ChoixDossierFichier("")
    If chemin = "" Then Exit Sub
    ListerLesFichiersParOrdreAlpha chemin
    loopThroughFilesExample
End Sub

Sub loopThroughFilesExample()
Application.DisplayAlerts = False
myFile = ActiveWorkbook.Name
myPath = chemin       'Change this to your directory
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
 
Dernière édition:

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

lol c'est juste pour mes boutons, pour le moment ils font tous la meme chose mais plus tard ça ne sera plus le cas

J'ai mis une explication dans la page d'avant de l'interet de mes boutons.

la partie que tu ne comprends, devrait me servir à appliquer une macro sur tout un ensemble de fichier contenu dans un repertoire : "Boucler sur les fichiers XLS d'un répertoire, et leur appliquer une macro"
 
Dernière édition:

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

mais deja comment faire pour me créer mon sous repertoire ? si au début j'ai choisi le d:\essai, il devrait me créer un d:\essai\fichiermodi, puis si je ré-essaie avec e:\bckup, il devrait me créer un e:\bckup\fichiermodi

oui ma macro est commentée car je ne sais quoi mettre dedans comme macro


ce que je souhaiterai obtenir :


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.
 
Dernière édition:

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

bon j'ai essayé ceci et cela ne me fait rien du tout ...
Code:
 Sub cree_sousrep()
'teste l'exitence du répertoire
If Len(Dir((chemin + "\fichiers modifiés\"), vbDirectory)) = 0 Then
'le crée si  il n'existe pas"
    MkDir (chemin + "\fichiers modifiés\")
End If

il devrait me créer mes sous repertoire normalement non ?
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Trouver les fichiers en mode dynamique ?

Re


Comme ca cela fonctionne chez moi
Code:
Sub cree_sousrep()
Dim chemin As String
 chemin = "C:\Temp\"
'teste l'exitence du répertoire
If Len(Dir(chemin & "fichiers modifiés\", vbDirectory)) = 0 Then
'le crée si  il n'existe pas"
 MkDir chemin & "fichiers modifiés\"
End If
 End Sub
 

alucard_xs

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

le soucis c'est que moi j'ai ça :

Code:
chemin = ChoixDossierFichier("")

et

Code:
Function ChoixDossierFichier(Racine)
Dim objShell, objFolder, chemin, SecuriteSlash, FlagChoix&, Msg$
    FlagChoix = &H4000&: Msg = "Choisir un dossier :"
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder(&H0&, Msg, FlagChoix, Racine)
    If objFolder Is Nothing Then Exit Function
    chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & ""
    ChoixDossierFichier = chemin
End Function

mais bon je ne vois pourquoi ça ne marche même pas, ma variable chemin étant bien définie en string aussi.
 
Dernière édition:

Épaf

XLDnaute Occasionnel
Re : Trouver les fichiers en mode dynamique ?

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)
Coucou me revoilou, je n'ai pas tout suivi mais j'ai compris que tu avais un problème... Je reprends donc tes questions.
1 -> J'ai modifié la procédure ui n'était qu'un ébauche. Par contre, je te déconseille, pour faire ce que tu veux d'utiliser une liste d'hyperlinks puisque la sélection d'un fichier va l'ouvrir.
2 -> Rien de changé à ce niveau là, c'est ok.
3 -> Je n'ai compris que la fin de ta phrase : Déplacer ou copier les fichier de la liste dans un nouveau répertoire.
Pour récupérer le répertoire courant, j'ai créé deux colonnes, la première contient le nom du répertoire courant, la seconde les noms de fichiers
Pour créer le nouveau répertoire, tu récupères le nom du répertoire et derrière ton bouton, tu mets
Code:
NomRep = Worksheets("Feuil1").cells(1,1).value & "\" & NewRep
Mkdir NomRep
ensuite tu déplaces ou copies tes fichiers
Regarde à MoveFile, méthode dans l'aide -> F1 (faut bien que tu travailles un peu ;) )
4 -> Pour les pdf, la question est posée 20 fois par semaine, tu devrais trouver ça sans difficulté.

Enfin je joins ici trois fichiers (je supprimerai les autres dans les posts respectifs)
Le premier crée une liste des fichiers d'un répertoire choisi sans Hyperlinks.
Dans ce fichier, tu peux supprimer le code placé dans la feuille de code de feuil1 qui permet d'ouvrir un fichier par simple sélection :
Regarde la pièce jointe 717030

Le second crée une liste des fichiers d'un répertoire choisi avec Hyperlinks :
Regarde la pièce jointe 717031

Le troisième liste les classeurs du répertoire sélectionné et de ses sous-répertoires :
Regarde la pièce jointe 717032
Bon courage
@+


NB - Je ferai le ménage de mes anciens message en fin de journée, là, je vais au soleil ;)

Edit
Ménage fait !
 

Pièces jointes

  • Lister Les Fichiers D'un Répertoire V sans hyperlink.xls
    36.5 KB · Affichages: 248
  • Lister Les Fichiers D'un Répertoire avec Hyperlinks.xls
    34 KB · Affichages: 121
  • Lister Fichiers Rep et sous-rep avec Hyperlinks.xls
    33.5 KB · Affichages: 124
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Trouver les fichiers en mode dynamique ?

Re


Il suffit d'adapter ainsi

Code:
Public chemin As String
Sub ListerLesFichiersDunRepertoire()
chemin = ChoixDossierFichier("")
If chemin = "" Then Exit Sub
If Len(Dir(chemin & "\fichiers modifiés\", vbDirectory)) = 0 Then
'le crée si  il n'existe pas"
 MkDir chemin & "\fichiers modifiés\"
End If
End Sub

Ainsi il y a bien création d'un sous répertoire dans le répertoire choisi au départ
 
Dernière édition:

Discussions similaires