IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E] Recherche nom de fichier


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut [VBA-E] Recherche nom de fichier
    bonjour,
    après quelques heures de recherche, j'ai pu faire un code me permettant de retrouver le chemin et le nom d'un fichier à partir d'une expression texte contenu dans ce fichier. En fait, dans un tableau Excel, dans la colonne A, j'ai mis l'expression contenue dans le fichier que je recherche et le nom du ou des fichiers recherchés apparait dans les colonnes B, C, D,... Le seul problème est que si dans l'expression recherchée (en colonne A), il y a des espaces ou des signes (:,;,) alors j'obtiens comme réponse en colonne B, C,... plusieurs fichiers qui contiennent tous le début de l'expression. Il faudrait que je puisse faire une recherche sur le terme exact contenu en colonne A.
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Sub recherchefichier()
    For c = 1 To 5
    Cells(c, 1).Select
    y = Cells(c, 1).Value
    With Application.FileSearch
        .NewSearch
        .LookIn = "C:\Documents and Settings\Farid\Bureau\test vba"
        .SearchSubFolders = True
        .TextOrProperty = y
        .MatchTextExactly = True
        .FileType = msoFileTypeAllFiles
        If .Execute() > 0 Then
            MsgBox "There were " & .FoundFiles.Count & _
                " file(s) found."
            For i = 1 To .FoundFiles.Count
                Cells(c, 1 + i) = .FoundFiles(i)
            Next i
        Else
            MsgBox "There were no files found."
        End If
     
    End With
    Next c
     
    End Sub
    Merci pour votre aide.

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    en rajoutant des "..?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ..
    For c = 1 To 5
     y = """" & Cells(c, 1).Value & """"
    ...

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je viens d'essayer mais j'ai toujours la meme réponse.
    En fait dans la cellule A1, j'ai l'expression "Test 1". J'ai enregistré d'autres fichiers word qui contiennent "Test 2", "Test 3". Quand je lance la recherche pour la cellule A1, le programme me renvoie le chemin pour le fichier contenant "Test 1" mais également les chemins pour ceux contenant "Test 2" et "Test 3". Lorsque je retire l'espace entre le "t" et le "1", ca marche. Si je remplace l'espace par un "_", ca ne marche plus.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    et si tu remplaces Value par formula ici ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    y = Cells(c, 1).formula
    A tout hasard, j'ai eu le pb et j'ai remplacé l'espace par un underscore dans mes noms de fichiers

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je viens d'essayer mais ca ne marche toujours pas et les underscores non plus.

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Si tu mets un undersore à tes noms de fichiers, pas seulement dans les cellules mais aux noms des fichiers eux-mêmes dans leurs répertoires, je ne vois pas comment ça ne pourrait pas fonctionner.
    Tu vérifies et tu nous dis
    A+

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Alors voilà :
    j'ai 3 fichiers : 1er fichier nommé Test_1.doc et contenant le terme Test_1
    2eme fichier nommé Test 2 et contenant le terme Test 2
    3eme fichier nommé Test 3 et contenant le terme Test 3
    Si je fais la recherche sur le terme Test_1 alors j'obtiens le chemin pour les 3 fichiers.
    Je ne comprends pas où est le problème car avec l'underscore les fichiers sont différents et leur contenu aussi.
    ????

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Je ne comprends pas. Tu cherches dans ""C:\Documents and Settings\Farid\Bureau\test vba". Où sont tes fichiers ? S'il sont dans le même répertoire, il est normal qu'ils aient le même chemin.
    Si tu veux avoir le chemin d'un seul fichier, alors fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chemin = Workbooks("NomDuFichier").path
    Explique-nous
    A+

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Comme je n'ai pas l'impression de répondre à ton pb, je reviens sur ton premier post d'après lequel tu sembles chercher le nom de tous les fichiers contenus dans un répertoire spécifique. Et comme j'ai ça dans un coin... je te le mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub ListerFichiersDunRépertoire()
    Dim nf()
    Set fs = Application.FileSearch
        With fs
            .LookIn = "C:\Documents and Settings\Farid\Bureau\test vba"
            .FileType = msoFileTypeAllFiles
            If .Execute > 0 Then
                    For i = 1 To .FoundFiles.Count
                        Redim Preserve nf(i)
                        nf(i) = .FoundFiles(i)
                    Next i
                Else
                    MsgBox "Aucun fichier n'a été trouvé."
            End If
        End With
        'Vérif
        for j = 1 to i-1
              msgbox nf(j)
        next
    End Sub
    Précise ton pb
    A+

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci pour ton aide.
    Mais le problème est plus compliqué. Je recherche le nom d'un fichier Word et son chemin (je sais qu'il se trouve dans un repertoire contenant 3000 fichiers Word) mais je ne connais qu'une partie du texte de ce fichier word. Je voulais donc retrouver le nom du fichier et son chemin à partir du texte. Le code que j'ai placé au dessus fonctionne bien si dans l'expression texte du fichier Word il n'y a pas d'espace ou de caractères spéciaux (du genre une barre verticale).
    J'ai l'impression que quand la recherche a lieu sur l'expression texte, le programme prend en compte les différents caractères de cette expression mais dès qu'il y a un espace ou un caractère spécial, il ne tient plus compte des caractères situés en aval.
    J'espère que j'ai été assez clair.
    Merci pour ton aide.

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Pour le nom du fichier que tu cherches, avec un espace, remplace l'espace par un ?
    ? remplace un caractère.
    * les remplace tous
    "Lefich*" te listera tous les fichiers commençant par Lefich
    Tandis que "LeFich?1.doc" ne listera que le fichier "LeFich 1.doc" ou "LeFiche_1.doc" ou tout autre caractère à la place du ?
    Par contre j'utilise Dir pour faire ça et non la syntaxe ci-avant (chuis de la vieille école de vba 97)

    Là, je pars pour huit jours, je ne pourrai donc pas suivre tes progrès mais tu n'auras aucun mal à trouver des bénévoles fort apte à te donner un coup de main.
    Bonne chance
    A+

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Salut,
    j'ai finalement supprimé tous les espaces et les caractères spéciaux dans le nom du fichier recherché et là le programme tourne bien.
    Merci encore pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VBA Excel récuperer nom de fichier via URL
    Par FrenchyBoss dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/10/2013, 16h34
  2. Petits pb en VBA :espace dans noms des fichiers
    Par Calimero33 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/07/2010, 22h23
  3. [Excel VBA]Recup du nom du fichier référencé
    Par Misha dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/10/2008, 12h04
  4. [VBA-E] Récupération Nom de fichier
    Par trihanhcie dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 02/03/2007, 13h53
  5. [VBA-E] récupérer nom utilisateur fichier en lecture seule
    Par cwain dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/01/2007, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo