Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1543 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Excel 2010: remplacer FileSearch de Excel 2003

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA] Excel 2010: remplacer FileSearch de Excel 2003

n°2195100
val74
Posté le 20-06-2013 à 21:18:13  profilanswer
 

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
mood
Publicité
Posté le 20-06-2013 à 21:18:13  profilanswer
 

n°2195103
Marc L
Posté le 20-06-2013 à 22:33:17  profilanswer
 

 
           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
n°2195197
val74
Posté le 21-06-2013 à 20:22:17  profilanswer
 

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

n°2195206
Marc L
Posté le 21-06-2013 à 22:42:00  profilanswer
 

 
           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 !
 

n°2195225
val74
Posté le 22-06-2013 à 10:29:44  profilanswer
 

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  :)

n°2253422
minimoack
Posté le 17-03-2015 à 08:58:00  profilanswer
 

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:

n°2253457
kiki29
Posté le 17-03-2015 à 16:11:27  profilanswer
 
n°2253628
minimoack
Posté le 19-03-2015 à 10:48:26  profilanswer
 

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
n°2253712
minimoack
Posté le 20-03-2015 à 08:06:12  profilanswer
 

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

n°2255545
minimoack
Posté le 13-04-2015 à 08:12:25  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Excel 2010: remplacer FileSearch de Excel 2003

 

Sujets relatifs
Bd Access, champs liés à la source Excel avec VBAFonction si sur excel
Chronomètre VBA Excel[VBA] Enregistrement feuille excel dans un répertoire
Excel en xmlimporter des adresses de factures sous excel
Ajout de ligne automatique sur excel 2010 - VBA[VBA Excel 2003] - Problème pour récupérer la 65537° ligne d'un CVS
Plus de sujets relatifs à : [VBA] Excel 2010: remplacer FileSearch de Excel 2003


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR