[VBA Excel] lookIn peut-il être une variable ?

lookIn peut-il être une variable ? [VBA Excel] - VB/VBA/VBS - Programmation

Marsh Posté le 07-06-2005 à 15:24:21    

Bonjour à tous,
 
Je cherche le moyen de crèer sur une feuille excel la liste des fichiers contenus dans un répertoire sélectioné par un utilisateur.
 
le code que j'ai écrit est le suivant, il est placé dans un module standard:

Code :
  1. Option Explicit
  2. Public DSource As FileDialog
  3. Public DSou As String
  4. ________________________________________
  5. Sub traduire1()
  6.     Dim FF As Variant
  7. 'montrer la feuille "fichiers"
  8.     Worksheets("Fichiers" ).Visible = True
  9. 'faire selectioner le dossier source
  10.     Set DSource = Application.FileDialog(msoFileDialogFolderPicker)
  11.     With DSource
  12.         .AllowMultiSelect = False
  13.         .Show
  14.     End With
  15.     DSou = DSource.SelectedItems(1) & "\"
  16. 'exécuter le filesearch dans DSou, ne prendre que les fichiers excel
  17. With Application.FileSearch
  18.     .LookIn = DSou
  19.     .FileType = msoFileTypeExcelWorkbooks
  20.     If .Execute() > 0 Then
  21.       For Each FF In .FoundFiles
  22. 'écrire dans la feuille fichiers la liste des fichiers
  23.         Worksheets("Fichiers" ).Activate
  24.         Range(FF + 1, 1).Select
  25.         ActiveCell.Formula = .FoundFile(FF).Name
  26.       Next FF
  27.     Else
  28.       MsgBox "Aucun fichier trouvé !"
  29.     End If
  30.   End With
  31. End Sub


 
Mon gros problème c'est que ce code ne marche pas il me met systèmatiquement que le répertoire est vide (dans l'explorateur j'ai bien 15 fichiers excel ).
 
En bref, c'est très frustrant. Et je ne comprends pas pourquoi ni comment résoudre cela.
Si vous avez une idée je la prends volontier.
merci d'avance.


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 07-06-2005 à 15:24:21   

Reply

Marsh Posté le 11-06-2005 à 23:23:29    

Je viens d'essayer ton code.
Tu ne peux pas utiliser FF comme index.
Voici le code après correction et test:

Public DSource As FileDialog
Public DSou As String
 
Sub traduire1()
  Dim iI As Integer
  'montrer la feuille "fichiers"
  Worksheets("Fichiers" ).Visible = True
  'faire selectioner le dossier source
  Set DSource = Application.FileDialog(msoFileDialogFolderPicker)
  With DSource
    .AllowMultiSelect = False
    .Show
  End With
  DSou = DSource.SelectedItems(1) & "\"
  'exécuter le filesearch dans DSou, ne prendre que les fichiers excel
  With Application.FileSearch
    .LookIn = DSou
    .FileType = msoFileTypeExcelWorkbooks
    If .Execute() > 0 Then
      For iI = 1 To .FoundFiles.Count
        'écrire dans la feuille fichiers la liste des fichiers
        Worksheets("Fichiers" ).Activate
        Cells(iI + 1, 1) = .FoundFiles(iI)
      Next iI
    Else
      MsgBox "Aucun fichier trouvé !"
    End If
  End With
End Sub


Message édité par AlainTech le 11-06-2005 à 23:25:06

---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 14-06-2005 à 14:30:25    

Bonjour Alain et tout d'abord merci pour ta réponse.
 
Le code corrigé que tu as indiqué ci-dessus continu à définir tout répertoire comme vide. Ne me manquerait-il pas une référence quelconque pour utiliser ce code ? J'en ai une bonne quantité d'activé mais a priori pas celui qui serait nécessaire.
Si quelqu'un a une idée !...
 
Toutefois, J'ai quand même réussi à bidouiller un petit truc ce week-end, grâce à des codes trouvé sur un autre forum. Ca marche même si c'est pas du très "propre" et beaucoup plus compliqué surtout.  
 
Je donne mon code pour ceux qui pourraient être interessés, permet d'établir la liste des fichier dans un répertoire (1 colone chemin, 1 colonne nom du fichier) :
 

Code :
  1. Option Explicit
  2. Public FSOSource As Object, DSource As Object, FDSou As Object, FDSous As Object
  3. Public NDSource As String
  4. Public SH As Worksheet
  5. _________________________________
  6. Function Dsou(Racine, Optional SelType As Byte = 0)
  7. Dim objShell, objFolder, Chemin, SecuriteSlash
  8.      Set objShell = CreateObject("Shell.Application" )
  9.      Set objFolder = objShell.BrowseForFolder(&H0&, "Choisissez un dossier :", &H1&, Racine)
  10.      On Error Resume Next
  11.      Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & ""
  12.      If objFolder.Title = "Bureau" Then
  13.          Chemin = "C:\Windows\Bureau"
  14.      End If
  15.      If objFolder.Title = "" Then
  16.          Chemin = ""
  17.      End If
  18.      SecuriteSlash = InStr(objFolder.Title, ":" )
  19.      If SecuriteSlash > 0 Then
  20.          Chemin = Mid(objFolder.Title, SecuriteSlash - 1, 2) & ""
  21.      End If
  22.      Dsou = Chemin
  23. End Function
  24. ___________________________________________
  25. Sub traduire1()
  26. Dim i As Integer, j As Integer
  27. Dim ArrFSO, Entête
  28. 'faire selectioner le dossier source
  29.     Set FSOSource = CreateObject("Scripting.FileSystemObject" )
  30.     NDSource = Dsou("" )
  31.     If NDSource = "" Then MsgBox ("Aucun répertoire sélectioné !" ): UserForm01.Show: Exit Sub
  32.     Set DSource = FSOSource.GetFolder(NDSource)
  33.     Set FDSous = DSource.Files
  34.     If FDSous.Count <> 0 Then
  35.         Set SH = Sheets("Fichiers" )
  36. 'montrer la feuille fichier
  37.         SH.Visible = True
  38.         Entête = Array("chemin", "Nom" )
  39.         SH.Range("A1:F1" ).Value = Entête
  40.         i = 1
  41.         For Each FDSou In FDSous
  42.         i = i + 1
  43.         With FDSou
  44.             ArrFSO = Array(.ParentFolder & "\", .Name)
  45.         End With
  46.         SH.Cells(i, 1). _
  47.             Resize(1, UBound(ArrFSO) - LBound(ArrFSO) + 1).Value = ArrFSO
  48.         Next
  49.     Else: MsgBox ("Aucun fichier trouvé !" )
  50.     End If
  51.     SH.UsedRange.EntireColumn.AutoFit
  52. End Sub


 
Ensuite je fais un test sur le nom des fichiers pour être sure de ne prendre que ceux qui m'interessent.
 
 :jap:  


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 14-06-2005 à 18:43:06    

Qu'appelles-tu "définir tout répertoire comme vide"?
 
Ta feuille "Fichiers" ne contient aucun fichier à la fin de l'exécution du script?


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 17-06-2005 à 11:01:19    

Oui c'est bien ça la réponse du file search renvoi systèmatiquement sur le msgbox = " Aucun fichier trouvé !"
 
j'ai également essayé sans le :
".FileType = msoFileTypeExcelWorkbooks"
et en lui mettant dans le repertoire des fichiers de tous type... mais aucun fichier n'est trouve dans le répertoire.
 
bizar, vous avez dit bizar... ;-)
 


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed