[VBA] Excel 2010: remplacer FileSearch de Excel 2003

Excel 2010: remplacer FileSearch de Excel 2003 [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 20-06-2013 à 21:18:13    

Bonjour à tous  :hello:  
 
Voilà suite à migration de Excel 2003 à 2010,
la fonction FileSearch n'existant plus, je suis coincé et n'arrive pas à trouver la solution malgré qlque pistes...  :??:  
 
Voilà donc:
dans un userform j'ai une combobox qui liste des noms de dossier (via RowSource), et lors du changement de cette combobox une listbox à coté liste tout les fichiers contenu dans ce dossier via la fonction FileSearch
 
Voici mon code, si un master vba peut m'aider:
 
Private Sub ComboBox1_Change()
    Dim Result As Variant
    Dim NomFichier As String
    Dim Dossier As String
         
    Dossier = ComboBox1.Value
    Chemin = "D:\Suivi du fil\" & Dossier
         
    ListBox1.Clear
    With Application.FileSearch
    .NewSearch
    .LookIn = Chemin
    .FileType = msoFileTypeExcelWorkbooks
   'afficher que les .xls
     .Execute
 
    nbfile = .FoundFiles.Count
    If .FoundFiles.Count > 0 Then
        For Each Result In .FoundFiles

'déduit longueur de caractères pour garder que le nom du fichier sans le chemin d'accès:
        NomFichier = Right(Result, Len(Result) - InStr(Result, Dossier) - Len(Dossier))
        ListBox1.AddItem NomFichier
        Next
    Else
    ListBox1.AddItem "Pas de fichier dans le dossier"
        End If
    End With
End Sub


Message édité par val74 le 20-06-2013 à 21:20:26
Reply

Marsh Posté le 20-06-2013 à 21:18:13   

Reply

Marsh Posté le 20-06-2013 à 22:33:17    

 
           Bonjour.
 
           Pour une recherche simple dans un dossier (sans parcourir ses sous-dossiers), la fonction  Dir  fonctionne encore !
 
           Exemple dans un sujet récent


Message édité par Marc L le 20-06-2013 à 22:59:17
Reply

Marsh Posté le 21-06-2013 à 20:22:17    

Exact merci Marc,
fallait juste y penser  :ange:  
 
du coup le code en est même + court:
Private Sub ComboBox1_Change()
 
    Dim Result As Variant
    Dim NomFichier As String
    Dim Dossier As String
    Dim Nb As Long
     
    Dossier = ComboBox1.Value
    Chemin = "D:\Suivi du fil\" & Dossier
 
    ListBox1.Clear
    Nb = 0
    NomFichier = Dir(Chemin & "*.xls" )
        While NomFichier <> ""
            ListBox1.AddItem NomFichier
            NomFichier = Dir
            Nb = Nb + 1
        Wend
    Label3.Caption = Nb & " fichiers"
        If Nb = 0 then
        ListBox1.AddItem "Pas de fichier dans le dossier"
        End If
End Sub

Reply

Marsh Posté le 21-06-2013 à 22:42:00    

 
           Bien !
 
           Même en 2003 je continuais à utiliser cette fonction  Dir  pour les besoins simples.
 
           Et quand je tombe sur une ancienne procédure utilisant FileSearch susceptible de passer en version 2007 ou supérieure,
           je la repasse souvent sous Dir
 
           Sinon dans le code, la variable Result n'est plus utilisée …
 
           Et à la place de Dossier je déclarerai Chemin en String
           et je l'initialiserai comme ceci :  Chemin = "D:\Suivi du fil\" & ComboBox1.Value  …
           Chemin doit obligatoirement se terminer par un "\".
 
           La recherche initiale de  Dir  à partir de 2007 devrait s'effectuer sur les fichiers *.xls*
           car en dehors des .xls, il peut y avoir des .xlsb, des .xlsm, …
 
           Dernière précision :  Nb = 0  est logique mais pas obligatoire car,
           comme la variable Nb est déclarée en Long, elle est donc de facto initialisée à zéro.
 
           Bonne fin de semaine !
 

Reply

Marsh Posté le 22-06-2013 à 10:29:44    

Merci pour ces précisions Marc, ça fera + propre effectivement,
 
Le code j'ai appris pour beaucoup par moi-même alors y'a bien des choses qui ne sont pas super optimisée, du moment que ça fonctionne au départ on est content.
 
Bon wkend à toi aussi  :)

Reply

Marsh Posté le 17-03-2015 à 08:58:00    

Bonjour !
 
J'ai également un problème avec une fonction fileSearch qui évidemment ne fonctionne plus à ce jour :  
 

Code :
  1. With Application.FileSearch
  2.          .NewSearch
  3.          .LookIn = PublicationFolder
  4.          .FileName = "*.xml"
  5.          .SearchSubFolders = True
  6.          .Execute
  7.            For i = 1 To .FoundFiles.Count
  8.               ' Application.Cursor = xlWait
  9.                Range("A" & IndLigne) = .FoundFiles(i)
  10.                Range("B" & IndLigne) = FileLen(.FoundFiles(i))
  11.               ' Range("C" & IndLigne) = FileDateTime(.FoundFiles(I))
  12.                OkP = MarquerLesFichiersADetruire(Range("A" & IndLigne), PatternList, IndLigne)
  13.                IndLigne = IndLigne + 2
  14.                Application.Cursor = xlDefault
  15.                NbFichiers = NbFichiers + OkP
  16.            Next i
  17. End With


 
J'ai bien compris qu'il fallait que j'utilise le Dir donc j'ai fait :

Code :
  1. chemin = Dir(PublicationFolder & "\" & PatternList)


 
PatternList : extension du fichier, String qui ressemble à "*.htm" par ex.
 
Par contre, je ne sais pas comment retranscrire le traitement... si j'ai bien compris, je récupère dans ma feuille excel toutes les données de mon fichier xml (unique dans le dossier).  
 
(Le but du code complet est de récupérer le xml existant, l'ouvrir, récupérer les données, supprimer les lignes qu'on ne veut plus, puis refaire le xml (je crois qu'on supprime l'existant pour en recréer un autre)) ...
 
Fuuuu c'est dur de reprendre du code de quelqu'un ... :pfff:

Reply

Marsh Posté le 17-03-2015 à 16:11:27    

Reply

Marsh Posté le 19-03-2015 à 10:48:26    

Je suis désolée, je suis surement un boulet mais je n'arrive pas à importer le complément. Je l'ai téléchargé, je l'ajoute avec Options, puis je vais dans références pour cocher ClFileSearch et il me met une erreur... :pfff:  
 

Citation :

La bibliothèque de types ou l'Assistant requis n'est pas un projet VBA


 
Il me l'importe à part...  
 
Imprim Ecran :
http://hpics.li/124c20a
 
Du coup j'ai essayé de faire glisser les modules et classe dans mon projet, mais je ne reconnais toujours pas fileSearch  :??:


Message édité par minimoack le 19-03-2015 à 10:49:12
Reply

Marsh Posté le 20-03-2015 à 08:06:12    

J'ai regardé l'aide Excel mais ça ne m'a pas beaucoup aidée... :pfff:

Reply

Marsh Posté le 13-04-2015 à 08:12:25    

quelqu'un a une idée par hasard? ^^ :jap:

Reply

Sujets relatifs:

Leave a Replay

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