Retrouver chemin d'un fichier Excel

Bonjour à tous,

Tout d'abord, je vous prie de bien vouloir m'excuser pour cette demande redondante.

En effet, j'avais déjà ouvert un similaire il y a quelques semaines et on m'avait apporté une proposition fonctionnelle via une solution Power Query.

Cette solution a pu fonctionner pendant plusieurs semaines, mais nous avons migré sur un nouvel environnement qui ne supporte plus les requêtes via Power Query.

Si quelqu'un avait une piste pour réaliser quelque chose de similaire avec une macro excel, je lui en serais très reconnaissant.

Avant de vous expliquer où se situe mon problème côté VBA, laissez-moi vous présenter le contexte.

Il existe un dossier nommé "TEST" lui même divisé en deux dossiers "Dossier A" et "Dossier B" eux mêmes divisés en 3 dossiers (1, 2 et 3).

A l'intérieur de ces dossiers ("Dossier 1", "Dossier 2" et "Dossier 3") se trouvent des fichiers Excel dont la nomenclature est totalement différente, hormis les 6 derniers caractères (ABC001, ABC002, ABC003) qui peuvent être identifiés.

Vous pouvez retrouver ces informations dans les captures ci-dessous.

image image image

Passons maintenant à la problématique VBA.

Je travaille depuis un fichier Excel qui ne se situe dans aucun de ces dossiers.

Mon objectif serait, à l'aide des 6 derniers caractères (ex : ABC001), de retrouver le chemin complet du fichier Excel et de l'inscrire dans mon fichier de travail.

Mon problème est que je ne sais pas dans quel dossier se trouve le fichier correspondant et que je ne connais pas le nom complet du fichier mais uniquement ses 6 derniers caractères.

image

Je tiens à m'excuser une nouvelle fois si ma demande n'est pas claire.

Je remercie par avance tous ceux qui essayeront de m'aider !

Bonjour,

Voici un essai avec ces codes à placer dans un module standard.

Public numfichier&, trouve as boolean

Sub Filesearch()

srep = Environ("USERPROFILE") & "\Documents\"
With ActiveSheet
    dl = .Cells(.Rows.Count, 1).End(xlUp).Row
    For numfichier = 2 To dl
        trouve = false
        Parcourir srep, .Cells(numfichier, 1).Value
        if not trouve then msgbox "Aucun fichier correspondant n'a été trouvé dans " & srep, vbexclamation
    Next numfichier
End With

End Sub

Function Parcourir(spath$, MotCle$)
Set fso = CreateObject("Scripting.filesystemobject")
Set ofolder = fso.getfolder(spath)
On Error Resume Next
For Each osubfolder In ofolder.subfolders
    Chercher osubfolder, MotCle
Next osubfolder
End Function

Function Chercher(Dossier, MotCle$)
For Each ofile In Dossier.Files
    If ofile.Path Like "*" & MotCle & "*.xls*" Then
        trouve = true
        ActiveSheet.Cells(numfichier, 2) = ofile.Path
        ActiveSheet.Cells(numfichier, 3) = Dossier.Path
        Exit Function
    End If
Next ofile
Chercher = Parcourir(Dossier.Path, MotCle)
End Function

Il faut affecter la macro filesearch à un bouton par exemple et l'exécuter.

Cdlt,

Bonsoir,

Cette proposition est très intéressante et fonctionne tout à fait de mon cas, merci bien !

J'en demande beaucoup, mais y aurait-il un moyen de faire apparaître un message d'erreur si aucun lien correspondant n'est trouvé?

Merci beaucoup, vous m'avez déjà bien aidé !

Bonsoir,

Je viens d'éditer le code ! Mais on pourrait aussi effacer d'abord les cellules en colonne B et, si rien n'était trouvé, on s'en rendrait vite compte avec ces cellules vides

Cdlt,

Bonsoir, merci encore pour la réponse,

Effectivement, on s'en rendrait vite compte avec ces cellules vides, mais le fichier va grossir et ces cellules vide seront moins visibles

Merci pour le retour, mais j'ai finalement opéré différemment. Ces liens sont ensuite envoyés par mail, je fais donc apparaître un message d'alerte s'il manque un lien dans un des mails envoyés !

Mon dernier petit point à voir sur ce fichier, c'est d'essayer de retravailler la première macro pour qu'elle ne renvoie pas le lien du fichier, mais plutôt le lien du dossier qui contient le fichier.

Je me demande si ce ne serait pas plus simple de récupérer le chemin du dossier après avoir récupéré le chemin du fichier ?

Oui, c'est possible. J'ai à nouveau édité le code pour y mettre un message par fichier (ça me semble plus logique même si ce n'est pas pratique du tout). Et j'ai rajouté en colonne 3 le répertoire. Mais en effet, quand on a le chemin complet, on a finalement déjà l'emplacement...

Pour les cellules vides, je pense que c'est ce qu'il y a de mieux. On peut ensuite faire des filtres.

Cdlt,

Super, c'est exactement ce que je cherchais à faire !

Merci beaucoup pour toutes ces aides

Tant mieux !

Merci pour tous ces retours agréables ! Bonne continuation !

Rechercher des sujets similaires à "retrouver chemin fichier"