ClasseFileSearch pour Excel2007

MichelXld

XLDnaute Barbatruc
bonjour


Il semblerait que la fonction FileSearch ne soit plus supportée dans Office2007, ce qui est bien dommage.

Le complément ci joint permet de remplacer la fonction FileSearch. Le classeur xla contient un module de classe ClasseFileSearch pour gérer la recherche de fichiers sur votre PC.


La procédure recherche des fichiers en fonction des critères spécifiés:
* Le répertoire
* Option pour rechercher dans les sous dossiers
* Option pour rechercher un type de fichier spécifique
* Option de tri

et renvoie le résultat dans un tableau :
* Le nom des fichiers
* Le chemin
* La taille des fichers (en octets)
* La date de création
* La date de dernière modification
* Le type de fichier


Installez la macro complémentaire dans le dossier qui leur ai réservé.
Les fichiers .xla Excel2007 sont généralement stockés dans le répertoire:
C:\Documents and Settings\NomUtilisateur\Application Data\Microsoft\AddIns


Ensuite, pour que le complément soit opérationnel à chaque ouverture de l'application:
Cliquez le bouton "Office".
Cliquez sur le bouton "Options Excel".
Sélectionnez le menu "Compléments".
Choisissez "Compléments Excel" dans le menu déroulant "Gérer" (en bas de la fenêtre).
Cliquez sur le bouton "Atteindre:"
La fenêtre qui s'affiche est identique aux versions antérieures d'Excel.
Cochez le complément "Classefilesearch".
Cliquez sur le bouton "OK" pour valider.


Désormais, lorsque vous souhaitez utilisez cette fonction de recherche, il suffit d'activer la référence:
Dans l'éditeur de macro
Menu Outils
Références
Cochez la ligne "ClFileSearch"
Cliquez sur le bouton OK pour valider.



Et vous pouvez utiliser une procédure de ce style:

Code:
Sub Test()
'Nécessite d'activer la référence ClFileSearch
'(Dans l'éditeur de macros: Menu Outils/Références)
Dim i As Long
Dim Recherche As ClFileSearch.ClasseFileSearch
 
 
Set Recherche = ClFileSearch.Nouvelle_Recherche
 
With Recherche
    'Répertoire de recherche
    .FolderPath = "C:\Documents and Settings\mimi\dossier\excel"
 
    'Recherche dans les sous dossiers
    .SubFolders = False
 
    'Option de tri:
    '(Sort_None, sort_Name, sort_Path, sort_Size, sort_DateCreated, sort_LastModify, sort_Type)
    'Pas de tri si non spécifié
    .SortBy = sort_Name
 
    'Option pour rechercher un type de fichier
    '(Renvoie tous les fichiers si non spécifié)
    .Extension = "*.xls"
 
    'Execute la recherche
    .Execute
 
    'Boucle sur le tableau pour afficher le résultat de la recherche
    '(.FoundFilesCount renvoie le nombre de fichiers trouvés)
    For i = 1 To .FoundFilesCount
        Debug.Print .Files(i).strNom 'nom
        Debug.Print .Files(i).strChemin 'chemin complet
        Debug.Print .Files(i).lngTaille & "  octets" 'taille
        Debug.Print .Files(i).DateCreated 'date création fichier
        Debug.Print .Files(i).DateLastModified 'date dernière modification
        Debug.Print .Files(i).TypeFichier 'type de fichier
 
        Debug.Print "---"
    Next
End With
 
Set Recherche = Nothing
 
End Sub



Nota.
La procédure fonctionne aussi dans Excel2002 ... ;o)



Bon après midi
MichelXld
 

Pièces jointes

  • ClasseFileSearch.zip
    20.7 KB · Affichages: 1 626
  • ClasseFileSearch.zip
    20.7 KB · Affichages: 1 634
  • ClasseFileSearch.zip
    20.7 KB · Affichages: 1 644
Dernière édition:

JohnBill

XLDnaute Junior
Re : ClasseFileSearch pour Excel2007

Salut MichelXLD et Kick71.
J'ai bien lu le problème et la réponse apportée par Michel.
Il se trouve que j'ai le même souci sur un classeur qui me liste les fichiers d'un CD et malgré la manipulation conseillée, je ne réussi toujours pas à faire fonctionner mon ancienne macro sous excel 2007.
Je joint mes fichiers (XLS de 2003 et xlsm de 2007) un peu épuré car ils sont assez volumineux.
Y a t-il une solution ?

Merci d'avance
 

Pièces jointes

  • ListerFichiersCD.zip
    36.5 KB · Affichages: 222

MichelXld

XLDnaute Barbatruc
Re : ClasseFileSearch pour Excel2007

bonjour


je ne réussi toujours pas à faire fonctionner mon ancienne macro sous excel 2007.

Tu ne pourras pas utiliser ton ancienne macro dans Excel2007.
En remplacement tu peux installer le complément proposé dans le message précédent, et utiliser le module de classe associé.
(Ce n'est qu'un exemple et tu peux bien entendu aussi créer tes propres procédures de recherche)


ps
La présentation de la Feuil1 me rappelle quelque chose ... ;o)



Bonne journée
MichelXld
 

MJ13

XLDnaute Barbatruc
Re : ClasseFileSearch pour Excel2007

Bonjour à MichelXLD ainsi qu'au forum

MichelXLD, je viens de tester le complément "Classefilesearch".
Cela à l'air très bien (bien que je n'ai pas tout compris pour le Xla).

Voici un petit fichier en reprenant le code de MichelXLD.

Encore Merci Michel, Ah si tu n'existais pas, il faudrait t'inventer.
 

Pièces jointes

  • recherche cfilesearch.xls
    44 KB · Affichages: 606
Dernière édition:

DAH02

XLDnaute Nouveau
Re : ClasseFileSearch pour Excel2007

Bonjour, :)

Je cherche un script qui permettrait de remplacer le FileSearch... Mais le hic est qu'il faudrait que celà puisse fonctionner quelque soit la version d'Excel... D'Excel 97 à Excel 2007. :confused:

En effet, à mon boulot nous avons encore de vieux PC Windows 98 avec Excel 97... et également des PC récents avec Windows Vista et Excel 2007.

Merci d'avance...
 

templar

XLDnaute Nouveau
Re : ClasseFileSearch pour Excel2007

Bonjour, :)

Je cherche un script qui permettrait de remplacer le FileSearch... Mais le hic est qu'il faudrait que celà puisse fonctionner quelque soit la version d'Excel... D'Excel 97 à Excel 2007. :confused:

En effet, à mon boulot nous avons encore de vieux PC Windows 98 avec Excel 97... et également des PC récents avec Windows Vista et Excel 2007.

Merci d'avance...

Salut tout le monde

Une solution a t elle était trouvée pour ce problème?

Je suis confronté à une situation similaire à mon travail où nous travaillons sur excel 2003 et nous sommes en cours de migration vers 2007.
je ne peux me permettre de demander aux gens qui travaillent sur le site, d'installer quoi que ce soit :)

le but de mon code serait de rechercher un fichier pdf précis dans un des dossiers contenus dans le répertoire courant.

Merci d'avance
 
Dernière édition:

Wanou_Le_Fou

XLDnaute Nouveau
Re : ClasseFileSearch pour Excel2007

Bonjour,

j'ai un soucis avec le FileSearch
tout marchait très bien sous XP
mais je viens de passer à vista et je ne sais pas où mettre le .xla pour que cela fonctionne. pour l'instant je l'ai mis dans
Code:
C:\Utilisateurs\moi\AppData\Roaming\Microsoft\Addins

lorsque je lance mon fichier Excel, Vb plante sur
Code:
.SortBy = Sort_None
puis sur
Code:
UserForm4.ComboBox1.AddItem .Files(i).strNom
(plus exactement sur le .Files)
où il me dit que le projet ou la bibliothèque n'existe pas

Voici ma fonction :
Code:
Private Sub UserForm_Initialize()
Dim i As Long
Dim Recherche As ClFileSearch.ClasseFileSearch

Set Recherche = ClFileSearch.Nouvelle_Recherche

UserForm4.ComboBox1.Clear                 'Effacer le contenu de la combobox

With Recherche
    .FolderPath = ThisWorkbook.Path & "\Cartographies\"
    .SubFolders = True
    .SortBy = sort_Name
    .Extension = "Cartographie.xls"
    .Execute
    
    For i = 1 To .FoundFilesCount
        UserForm4.ComboBox1.AddItem .Files(i).strNom
    Next
End With

merci de votre aide !
 

jhofman

XLDnaute Occasionnel
Re : ClasseFileSearch pour Excel2007

Merci MichelXld


je cherche à utiliser ClFileSearch dans le cadre d'une recherche sur plusieurs string séparés par des ";" et cela ne semble pas marcher !
Avez vous une idée ?
 

Pièces jointes

  • ModuleSelection_images.zip
    19.9 KB · Affichages: 114

job75

XLDnaute Barbatruc
Re : ClasseFileSearch pour Excel2007

Bonjour jhofman,

je cherche à utiliser ClFileSearch dans le cadre d'une recherche sur plusieurs string séparés par des ";" et cela ne semble pas marcher !

Sans macro et sans savoir ce que vous faites, ce sera élémentaire...

Vous pouvez utiliser un tableau Array et l'analyser par une boucle :

Code:
tablo = Array("www", "xxx", "yyy", "zzz")
For Each t In tablo
'-------
Next

Vous pouvez aussi utiliser une chaine de caractères et la fonction Split :

Code:
chaine = "www;xxx;yyy;zzz" 
For Each s In Split(chaine, ";")
'--------
Next

Dans la boucle vous traitez les variables t ou s.

Edit : je n'avais pas vu le fichier de votre 1er post, désolé. A priori utilisez la 2ème boucle.

A+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 711
Messages
2 081 792
Membres
101 817
dernier inscrit
carvajal