VBA rechercher un fichier dans un répoertoire

darkspoilt Messages postés 254 Date d'inscription   Statut Membre Dernière intervention   -  
 XxVeg3tAxX -
Bonjour,
je voudrais savoir comment je peux trouver un fichier donc les caracteres correspondent a ce que j'ai entrer préalablement dans un formulaire afin d'utiliser le fichier correspondant. Suisje assez clair??
Merci d'avance
A voir également:

4 réponses

Utilisateur anonyme
 
Bonjour,

Exemple type :

Sub ChercheFichier()

    Const Chemin = "C:\Documents local\EXCEL"
    Dim NomChercher As String

    Dim oFs As Variant
    Dim NomFichier As String
    Dim I As Integer

    Set oFs = Application.FileSearch
    
    'Capturer ici le nom du fichier inscrit dans le formulaire
    'NomChercher = Chemin & "\" & MonFormulaire.MonTextBox.Value
    NomChercher = "C:\Documents local\EXCEL\Calendrier.xls"
    
    With oFs
        .LookIn = Chemin
        .FileType = msoFileTypeExcelWorkbooks
        If .Execute > 0 Then
            'MsgBox "Il y a  " & .FoundFiles.Count & " fichier(s) de trouvé."
            For I = 1 To .FoundFiles.Count
                NomFichier = .FoundFiles(I)
                If (UCase(NomFichier) = UCase(NomChercher)) Then
                    MsgBox NomFichier
                End If
            Next I
        Else
            MsgBox "Aucun fichier n'a été trouvé."
        End If
    End With
    
    MsgBox "Fin de recherche"

End Sub
'


Lupin
8
niny@ Messages postés 107 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour à vous deux !

en fait j'ai un peu le même problème

j'ai fait un code qui cherche les fichiers xls d'un dossier pour le copier/coller/sauvegarder dans un autre dossier. mon pb est que je n'arrive pas à parcourir tout mon dossier. dés que ma recherche a atteint le bas du dossier, je garde toujours le même fichier en mémoire, donc ca ne fait pas ce que je souhaite.
j'ai essayé d'initialiser mon chemin, le fichier mais sans succés.

voici mon code :

Dim nouveau As Variant
Dim cherche As String
Dim fichier As String
Dim Chemin As String
Dim tmp As Integer

Chemin = "chemin complet" ' répertoire
nouveau = "chemin complet bis" ' nouveau répertoire
fichier = Dir(Chemin & "\*.xls") ' recherche premier
chaine = renseignement_tranche.TextBox1.Value


Do

If LCase(Mid(fichier, 1, 2)) = LCase(Mid(chaine, 1, 2)) Then
Workbooks.Open Chemin & fichier ' fichier ouvert et demande du nouveau nom
nouveau = Application.GetSaveAsFilename(nouveau, fileFilter:="classeurs (*.xls), *.xls", Title:="Saisissez votre nouveau nom")

If nouveau <> False Then ' fichier saisi ?
ActiveWorkbook.SaveAs nouveau ' sauvegarde nouveau
MsgBox "Sauvé sous " & nouveau ' message
ActiveWorkbook.Close ' fermeture
Else
MsgBox "Classeur non sauvegardé"
End If

End If

Exit Do ' sortie procédure

Loop

fichier = Dir() ' recherche fichier suivant

est ce que vous pourriez m'éclaircir sur ce pb svp ?

merci
0
niny@ Messages postés 107 Date d'inscription   Statut Membre Dernière intervention   > niny@ Messages postés 107 Date d'inscription   Statut Membre Dernière intervention  
 
en fait il suffisait de prendre le code de lupin est de le modifier avec mon code pour la sauvegarde... ainsi que pour ma boucle de test.

en gros quelques petits rajouts sur le code de Lupin en fonction de ce que vous souhaitez faire!
-1
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
bonjour

En fait, tu as pris ce code sur un autre sujet et il ne correspond pas du tout à la solution d'école de Lupin.A, (que je salue amicalement).

Par contre si tu mettais les instructions dans l'ordre cela fonctionnerait beaucoup mieux :

Exit Do ' sortie procédure
End If

fichier = Dir() ' recherche fichier suivant
Loop

et non 

End If
Exit Do ' sortie procédure
Loop
fichier = Dir() ' recherche fichier suivant
0
niny@ Messages postés 107 Date d'inscription   Statut Membre Dernière intervention  
 
merci gbinforme

j'ai préféré modifier le code de lupin en fonction de mes souhaits et ca marche mieux

@+
0
Utilisateur anonyme
 
Bonjour à tous,

(spécialement à gbinforme)

Il est toujours très difficile de cibler avec précision les besoins.

De plus, il est toujours bon dans un apprentissage de partir
d'un code existant et de le modifier selon ses besoins.

Amicalement.

Lupin
0
niny@
 
c'est vrai ! je suis d'accord avec toi, on apprend d'avantage et comprend mieux ce qu'on fait!
le mixte des deux codes marche à merveille, merci à vous deux !!
0
arj446
 
Malheureusement, Filesearch n'est plus disponible dans les versions plus récentes d'Excel... snifff...
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
mais dir fonctionne toujours de façon simple :

fichier = Dir(Chemin & "\*.xls") ' recherche premier
While fichier <> ""

           procédure

           fichier = Dir() ' recherche fichier suivant
Wend
0
XxVeg3tAxX
 
:'-( ça fouille pas les sous-dossiers..
apparemment , pour continuer d'utiliser filesearch, il faut créer une classe afin de l'instancier au besoin.. beurk!..
0