|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : VBA Excel - Recherche de fichiers [ Archives Visual Basic / VBA ] (econs)
Informations & options pour cette discussion
|
vendredi 27 janvier 2006 à 11:33:47 |
VBA Excel - Recherche de fichiers

econs
|
Bonjour à toutes et tous.
Je possède un dossier contenant un certain nombre de fichiers :
- Un fichier Visio (*.vsd)
- Un fichier Excel (*.xls)
- Un fichier Word (*.doc)
- Un fichier Texte (*.txt)
- Un fichier Image (*.bmp)
- Un fichier Zip (*.zip)
Etant sous Excel 2003 (sans DirListBox, sans FileListBox), j'utilise la méthode FileSearch de l'objet Application
pour lister les fichiers d'un répertoire donné. Et figurez-vous que çà
fonctionne ... presque. Je vois apparaître tous les fichiers dans ma
ListBox, sauf le fichier Zip.
Sub RechercheFichiers(sFolder As String)
' Cette procedure recherche tous les fichiers contenus dans un répertoire donné.
' Elle les affiche dans une ListBox (lstFiles ).
Dim NomFichier As String
Dim nbFiles As Long
NomFichier = "*.*"
lstFiles.Clear
With Application.FileSearch
.NewSearch
.LookIn = sFolder
.SearchSubFolders = True
.Filename = NomFichier
.FileType = msoFileTypeAllFiles
.MatchTextExactly = True
If .Execute(msoSortByNone) > 0 Then
For i = 1 To .FoundFiles.Count
lstFiles.AddItem .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier n'a été trouvé."
End If
End With
End Sub
' Et j'ai juste un bouton qui lance tout :
Private Sub CommandButton2_Click()
Dim sTSRFolder As String
sTSRFolder = "C:\tmp"
RechercheFichiers sTSRFolder
End Sub
ATTENTION : Je sais comment contourner ce problème par une autre méthode de recherche de fichiers.
Je voudrais juste avoir une explication pour ces fichiers Zip
que je ne vois pas. (Ce ne sont pas des fichiers cachés, ce ne sont pas
des zip vides). Le comportement de la méthode FileSearch me paraît douteux.
Manu
----------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
|
|
|
|
vendredi 27 janvier 2006 à 11:49:53 |
Re : VBA Excel - Recherche de fichiers

jrivet
|
Salut,
Je viens d'essayer ton code sous Excel 2000, et je n'ai eu aucun probleme (excepté le "msoSortByNone" qui n'est pas reconnu sous 2000)
Je suis sûr que cela ne t'apporte rien de le savoir mais ca marche sous 2000.
Voila.
Ps: ce post est en grande partie là aussi pour suivre le déroulement du problème.
|
|
|
|
vendredi 27 janvier 2006 à 12:07:37 |
Re : VBA Excel - Recherche de fichiers

econs
|
Détrompes-toi, çà m'aide.
Ca permet de valider le code, et de montrer que le problème est bien, comme je le pensais, du côté de la méthode FileSearch.
Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
|
|
|
|
vendredi 27 janvier 2006 à 12:08:39 |
Re : VBA Excel - Recherche de fichiers

econs
|
Mais du coup, je cherche toujours l'explication Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
|
|
|
|
vendredi 27 janvier 2006 à 21:32:54 |
Re : VBA Excel - Recherche de fichiers

us_30
|
Bonsoir,
Je me suis intéressé à ton problème... et j'ai pas trouvé d'explication...
Pour ma part, ton code ne fonctionne pas. JE suis sous Excel 97 et Win ME.
Le blocage se fait à deux niveaux.
1. La ligne : .Filename = NomFichier n'est pas reconnu avec "*.*", mais marche avec un "xls" par exemple. (j'ai regardé dans un livre sur VBA pour Excel 2003, justement...)
2. If .Execute(msoSortByNone) > 0 Then ne semble pas accepter cette syntaxe, carrément...
J'AI donc repris ton code pour voir comment je pouvais faire pour faire la même chose... et ma solution c'est de chercher tous les types de fichiers au lieu d'utiliser *.* Puis, l'instruction .Execute(msoSortByNone) qui semble éviter la recherche dans la fin d'un repertoire, j'ai utilisé On error resume next, pour poursuivre...
Voilà ce que cela donne :
With Application.FileSearch .NewSearch .LookIn = sFolder .SearchSubFolders = True .FileType = msoFileTypeAllFiles .MatchTextExactly = True .Execute msoSortByFileType On Error Resume Next For i = 1 To .FoundFiles.Count UserForm1.ListBox1.AddItem .FoundFiles(i) Next i End With
et là, cela fonctionne alors... et les zip sont reconnus au même titre que les autres...
Réflexion ?! En fait, je suis étonné d'être obligé de changer ton code pour que cela fonctionne sous Excel 97... SI tu essayes mon code, et que cela fonctionne, faut-il conclure que l'emploi de "*.*" pour .Filename est défaillante ? j'ai aussi remarquer (mais c'est peut être normal, bien que curieux) que si j'emploi .Filename "zip" (ou autre, comme "txt") , alors tous les noms de fichiers portant "zip" dans le nom ou dans l'extension sont recenssés... c'est pas super, à moins de faire une recherche ensuite sur l'extension...
Voilà, en espérant avoir peut-être un indice...
Amicalement, Us.
|
|
|
|
mercredi 16 août 2006 à 16:21:37 |
Re : VBA Excel - Recherche de fichiers

doctorO
|
Bonjour,
sur Excel 97, pour faire marcher la commande de recherche de fichiers specifiques en utilisant Application.Filesearch.Filename, il faut ajouter le caractere "\" dans la chaine de recherche et ne pas utiliser de "*"..... c'est tres etrange
Exemple :
With Application.FileSearch .NewSearch .FileName = "\.zip" .LookIn = "C:\" .SearchSubFolders = False .MatchTextExactly = True .FileType = msoFileTypeAllFiles If .Execute() > 0 Then MsgBox "Ce dossier contient " & .FoundFiles.Count & _ " fichier(s) répondant aux critères." For i = 1 To .FoundFiles.Count MsgBox .FoundFiles(i) Next i Else MsgBox "Aucun fichier n'a été trouvé." End If End With
Pour faire une recherche sur la chaine "*B*.zip" par exemple, il faut mettre .FileName = "\B.zip" Lo logique est curieuse....
De plus sous Windows XP il faut desactiver le service qui lit les archives Zip en tant que repertoire
A+ DoctorO
|
|
|
|
mercredi 7 mars 2007 à 12:38:15 |
Re : VBA Excel - Recherche de fichiers

facknrask
|
bon on va continuer dans l'aberant
moi j'ai une macro qui fonctionne niquel sous Excel 2000 (et teste sous excel 2003) avec Windows 2000 pour la chose suivante : recherche des fichiers qui s'appelle *.dat
Public Function FIND_DAT_FILE(ByVal Folder_DAT As String) As Integer Dim I As Integer Application.StatusBar = "Debut calcul nombre de fichier a traiter" Set fs = Application.FileSearch With fs .LookIn = Folder_DAT .FileName = "*.dat" If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then FIND_DAT_FILE = .FoundFiles.Count ReDim Dat_file_list(.FoundFiles.Count) ReDim Dat_file_scanner_name(.FoundFiles.Count) For I = 1 To .FoundFiles.Count Dat_file_list(I) = .FoundFiles(I) If InStr(1, Dat_file_list(I), GNIQ_Dat, vbTextCompare) <> 0 Then GNIQ_Pos = InStr(1, Dat_file_list(I), "GNIQ") Dot_Dat_Position = InStr(1, Dat_file_list(I), ".dat") Dat_file_scanner_name(I) = Mid(Dat_file_list(I), GNIQ_Pos + Len(GNIQ_Dat), Dot_Dat_Position - (GNIQ_Pos + Len(GNIQ_Dat))) Else Dat_file_scanner_name(I) = "Autres" End If Next I Else 'MsgBox "There were no files found." End If End With Application.StatusBar = "Fin calcul nombre de fichier a traiter" End Function
Si je la lance sous Excel 97 la ligne suivante .FileName = "*.dat" ne marche pas avec erreur : Run-Time error '5' : Invalid procedure call or argument suite a vos remarques, j'ai essaye de mettre la ligne .FileName = "/.dat" et il met seulement ".dat" dans fs.filename (vu via la local windows) sans le / mais il ne trouve pas de fichier s'appelant .dat !!!!!
mais j'ai essaye plus tordu j'ai essaye de remettre le *.dat dans le filename apres avoir mis la ligne /.dat et la plus d'errreur Run-Time error '5' : Invalid procedure call or argument et le filename prend bien le *.data (vu via la local windows) mais il ne trouve toujours pas de fichier s'appelant .dat !!!!!
Pourquoi il ne trouve pas !!! he he he j'ai compris parce qu'il faut faire la chose suivante :
l'ordre que j'avais choisi n'est pas correct suit je pense a un bug Excel Set fs = Application.FileSearch With fs
.LookIn = Folder_DAT
.FileName = "/.dat" .FileName = "*.dat"
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
il faut mettre
.LookIn = Folder_DAT apres les filename car si on le met avant le bug reinitialise le repertoire de recherche a la racine c:\ ???? (vu avec le suivi des variables via la locals Windows dans VBA)
Set fs = Application.FileSearch With fs
.FileName = "/.dat"
.FileName = "*.dat" (n'est pas indispensable sous 2000 car le / marche sous aussi sous Excel 2000 mais apres verif sous Excel 2003 le / ne marche pas, merci Bill Gate !!!)
.LookIn = Folder_DAT
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
En gros pour mettre un Wildcard * dans un Application.FileSearch compatible a la fois sous Excel 2000, 97 et 2003 il faut mettre la lignejuste ci-dessous Set fs = Application.FileSearch With fs
.FileName = "/.dat"
.FileName = "*.dat" (indispensable pour une compatibilite totale des Excel
.LookIn = Folder_DAT
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
MaaaaaaaaGiiiiiiiiiiiiqueeeeeeeeeeee
|
|
|
Cette discussion est classé dans : fichier, excel, recherche, fichiers, zip
Répondre à ce message
Sujets en rapport avec ce message
VB6 et des fichiers Excel 97 [ par Sandro ]
Bonjour,Je cherche à ouvrir un fichier Excel 97 avec VB6, pour extraire le contenu de feuilles et de cellules, pour générer un fichier texte avec.Ext-
Lire des fichiers Excel par ADO [ par mba ]
Est-il possible de manipuler un fichier excel avec un recordset ADO.Y a-t-il une connexion string pour connecter un fichier Excel ?
a l'aide svp !!!!!!!!! [ par LeKamé ]
salut !!mon probleme !! c'est que je veux mettre dans un programme, des fichiers, bon ca c'est pas dur, je créé une ressource et je l'extrait de l'exe
enregistrement chemin et fichiers dans un ini et recherche dans fichier ini [ par nanard ]
Bonjour à tousJ'ai créé une appli sous VB5, et je voudrai que l'utilisateur l'installe, mais que le CD soit obligatoire pour la recherche des fichiers
Pb de recherche fichiers !! [ par neo ]
Bonjour,Voilà g un pbleme je n'arrive pas à trouver une solution concernant le lancement d'un fichier à partir de son nom !!Je voudrais mettre un fich
recherche de fichiers txt [ par gnome ]
j'ai un pb je dois trouver un fichier correspondant aux mots mis dans des textbox(9)le pb c ke les mots sont ecrits en fonction de 9 critères ex:pour
Urgent excel/vb [ par CAOVINCE ]
Voila, j'ai 2 fichiers, 1 original et 1 trié (que je modifie) a partir de l'original. Je veux comparer ces 2 fichiers et reecrire le tout dans un 3eme
recherche de code pour appeler un fichier [ par tgerdil ]
bonjourvoila, j'ai besoin d'appeler différents fichiers les uns apres les autres dans une procédure. j'ai trouvé une façonde le faire en utilisant un
Recherche dans un fichier excel [ par Nixo ]
Voilà , je shouaite executer un recherche par "site" (une certaine colonne du document excel) dans un fichier excel mais je ne connais pas les equiva
Lier des fichiers excel et des feuilles excel [ par Mesacraft ]
Bonjour, tjs dans la construction de mes macros je viens de rencontre un prob pas vraiment sympa.Dans ma première feuille j'historise des données sur
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|