Rechercher une occurence dans un dossier

Bonjour,

Je bloque sur une fonction recherche. J'ai pas mal cherché sur le net mais les solutions que j'ai trouvé sont de véritables usines à gaz. La fonction Like à l'air pas mal mais je n'arrive pas à la faire fonctionner.

Le but de ma macro est de créer, un fichier de devis dans un dossier d'affaire. les dossier d'affaires sont nommés comme suit : ID - Nom_client - Ville

Avec ma macro, je veux chercher le Nom_client dans mon dossier Projet mais l'étoile ne suffit apparemment pas. A savoir que l'ID est composé de 5 chiffres

Voici mon code :

stRep = "C:\Users\Lou\Google Drive\Projets\"
stFichier = Dir(stRep) Like "##### - " & .Cells(AC1, 5) & "*"
'stFichier = Dir(stRep & "*" & .Cells(AC1, 5) & "*") Ne fonctionne pas
If stFichier = "Vrai" Then
MsgBox "Fichier trouvé : " & vbCrLf & stRep & stFichier
Else
MsgBox "Aucun dossier trouvé au nom de " & Feuil3.Cells(AC1, 5)
End If

Bonjour,

Teste ce qui suit. (RecupNom) en adaptant le chemin du dossier et le nom du client :

Sub RecupNom()

    Dim TblFichiers() As String
    Dim Chemin As String
    Dim I As Integer
    Dim Nom As String

    'adapter le chemin du dossier
    Chemin = "E:\"

    'adapter le nom
    Nom = "Client"

    'appel de la fonction pour récupérer les noms des classeurs avec l'extension voulue
    TblFichiers = EnumFichiers(Chemin, Nom)

    'si initialisé (au moins 1 classeur)
    If Not (Not TblFichiers) Then

        'Le nom des fichiers dans la fenêtre d'exécution (Ctrl+G)
        For I = 1 To UBound(TblFichiers): Debug.Print TblFichiers(I): Next I

    End If

    'ou le message :
    If Not (Not TblFichiers) Then

        MsgBox "Le nom '" & Nom & "' a été trouvé " & UBound(TblFichiers) & " fois dans le dossier '" & Chemin & "' !"

    Else

        MsgBox "Il n'existe pas de fichier portant le nom '" & Nom & "' dans le dossier '" & Chemin & "' !"

    End If

  End Sub

Function EnumFichiers(Chemin As String, Nom As String) As String()

    Dim TableauFichiers() As String
    Dim Fichier As String
    Dim I As Integer

    'complète le chemin le cas échéant
    If Right(Chemin, 1) <> "\" Then Chemin = Chemin & "\"

    'récupère seulement les fichiers Excel
    Fichier = Dir(Chemin & "*" & Nom & "*")

    'boucle sur les fichiers du dossier
    Do While (Len(Fichier) > 0)

        I = I + 1

        ReDim Preserve TableauFichiers(1 To I)

        TableauFichiers(I) = Fichier

        Fichier = Dir()

    Loop

    'retourne le tableau des noms de fichiers
    EnumFichiers = TableauFichiers()

End Function

Bonjour,

Désolé pour le temps de réaction, je n'ai pas eu le temps de me pencher avant sur ce problème.

Merci de ta réponse, je l'ai testé et la msgbox comme quoi il n'existe pas de fichier portant ce nom s'affiche.

Cela dit, c'est un dossier que je recherche, je ne sais pas si cela fait une différence.

En modifiant

'récupère seulement les fichiers Excel
   Fichier = Dir(Chemin & "*" & Nom & "*")

par

'récupère seulement les fichiers Excel
   Fichier = Dir(Chemin & "*" & Nom & "*", vbDirectory)

il me trouve bien mon dossier, donc cela fonctionne !

Maintenant je voudrais récupérer le nom du dossier mais les variables le contenant se vide et je ne comprends pas comment arriver à conserver ce noom. J'en ai besoin pour l'intégrer dans le chemin d'accès

Rhhaaa j'arrive pas à sortir cette variable !

Je suis sur que c'est simple mais je n'arrive pas à mes fins.

Quelqu'un a une idée ?

Bonjour Caindymion,

De quelle variable parles-tu? Du nom du dossier?

Dim listeDossiers as New Collection
Dim Dossier as String

 Dossier = Dir(Chemin & "*" & Nom & "*", vbDirectory)

While Dossier <> ""
   listeDossiers.add Dossier
   Dossier = Dir
Wend

PS: Chez moi ta ligne de code

Dir(Chemin & "*" , vbDirectory)

renvoie tous les fichiers et dossiers du répertoire.

Salut,

Oui j'essaie d'extraire le nom du dossier pour pouvoir l'intégrer dans un chemin d'accès pour déplacer des dossiers.

Ton code ne fonctionne pas quand je l'insère. Voici le code complet :

Sub RecupNom()

        Dim TblDossiers() As String
        Dim Chemin As String
        Dim I As Integer
        Dim Nom As String
        Dim Nom_dossier As String

        'adapter le chemin du dossier
       Chemin = "C:\Users\Lou\Google Drive\Projets"

        'adapter le nom
       Nom = Cells(ActiveCell.Row, 5)

        'appel de la fonction pour récupérer les noms des classeurs avec l'extension voulue
       TblDossiers = EnumDossiers(Chemin, Nom)

        'si initialisé (au moins 1 classeur)
       If Not (Not TblDossiers) Then

        'Le nom des Dossiers dans la fenêtre d'exécution (Ctrl+G)
           For I = 1 To UBound(TblDossiers): Debug.Print TblDossiers(I): Next I

        End If

        'ou le message :
       If Not (Not TblDossiers) Then

            MsgBox "Le nom '" & Nom & "' a été trouvé " & UBound(TblDossiers) & " fois dans le dossier '" & Chemin & "' !" & Nom_dossier

        Else

            MsgBox "Il n'existe pas de Dossier portant le nom '" & Nom & "' dans le dossier '" & Chemin & "' !"

        End If

      End Sub
    Function EnumDossiers(Chemin As String, Nom As String) As String()

    Dim TableauDossiers() As String
    Dim Dossier As String
    Dim I As Integer

    'complète le chemin le cas échéant
   If Right(Chemin, 1) <> "\" Then Chemin = Chemin & "\"

    'récupère seulement les dossiers grâce à vbDirectory
   Dossier = Dir(Chemin & "*" & Nom & "*", vbDirectory)

    'boucle sur les Dossiers du dossier
   Do While (Len(Dossier) > 0)

        I = I + 1

        ReDim Preserve TableauDossiers(1 To I)

        TableauDossiers(I) = Dossier

        Dossier = Dir()

    Loop

    'retourne le tableau des noms de Dossiers
   EnumDossiers = TableauDossiers()

End Function

PS: Chez moi ta ligne de code

Code: Tout sélectionner

Dir(Chemin & "*" , vbDirectory)

renvoie tous les fichiers et dossiers du répertoire.

Je ne sais pas comment obtenir uniquement les noms de dossiers mais ce n'est pas très grave car je n'ai que des dossiers et aucun fichier là ou je fais la recherche.

Personne n'a d'idée sur la façon dont je pourrais extraire le nom du fichier trouvé ?

J'ai fini par trouver moi même la solution.

Il suffisait de déclarer une variable publique et de récupérer la valeur de Dossier avant la boucle.

Public Nom_Dossier As String

Sub RecupNom()

        Dim TblDossiers() As String
        Dim Chemin As String
        Dim I As Integer
        Dim Nom As String

        'adapter le chemin du dossier
       Chemin = "C:\Users\Lou\Google Drive\Projets"

        'adapter le nom
       Nom = Cells(ActiveCell.Row, 5)

        'appel de la fonction pour récupérer les noms des classeurs avec l'extension voulue
       TblDossiers = EnumDossiers(Chemin, Nom)

        'si initialisé (au moins 1 classeur)
       If Not (Not TblDossiers) Then

        'Le nom des Dossiers dans la fenêtre d'exécution (Ctrl+G)
           For I = 1 To UBound(TblDossiers): Debug.Print TblDossiers(I): Next I

        End If

        'ou le message :
       If Not (Not TblDossiers) Then

            MsgBox "Le nom '" & Nom & "' a été trouvé " & UBound(TblDossiers) & " fois dans le dossier '" & Chemin & "' !" & Nom_Dossier

        Else

            MsgBox "Il n'existe pas de Dossier portant le nom '" & Nom & "' dans le dossier '" & Chemin & "' !"

        End If

      End Sub
    Function EnumDossiers(Chemin As String, Nom As String) As String()

    Dim TableauDossiers() As String
    Dim Dossier As String
    Dim I As Integer

    'complète le chemin le cas échéant
   If Right(Chemin, 1) <> "\" Then Chemin = Chemin & "\"

    'récupère seulement les dossiers grâce à vbDirectory
   Dossier = Dir(Chemin & "*" & Nom & "*", vbDirectory)
   Nom_Dossier = Dossier

    'boucle sur les Dossiers du dossier
   Do While (Len(Dossier) > 0)

        I = I + 1

        ReDim Preserve TableauDossiers(1 To I)

        TableauDossiers(I) = Dossier

        Dossier = Dir()

    Loop

    'retourne le tableau des noms de Dossiers
   EnumDossiers = TableauDossiers()

End Function
Rechercher des sujets similaires à "rechercher occurence dossier"