Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

trouver le chemin d'un fichier

4 réponses
Avatar
AB
Bonjour à tous,

J'ai un classeur avec en colonne C des données qui sont des noms de fichiers
(F01001, F01002, etc.).
Ces fichiers sont situés dans un répertoire-père ou dans des sous
répertoires-fils du précédent.
Mais, leur vrai nom commence toujours par F, suivi de 5 chiffres, puis de
caractères alphabétiques, et enfin de l'extension .htm
Par exemple, "F01001 Le marché des changes.htm"
Ma question : est-il possible, à partir des données placées en colonne C, de
"chercher" le chemin du fichier correspondant, et de placer le résultat en
colonne D ? (seulement le chemin).
Merci de votre aide.
AB

4 réponses

Avatar
Daniel
Bonjour.
Essaie la macro suivante en mettant la bonne valeur dans "RepertoirePere"

Sub test1()
Dim RepertoirePere As String, c As Range
RepertoirePere = "e:donneesdanielmpfe"
For Each c In Range("C1", Range("C65536").End(xlUp))
With Application.FileSearch
.NewSearch
.LookIn = RepertoirePere
.Filename = c & "*.htm"
.SearchSubFolders = True
.Execute
If .FoundFiles.Count > 0 Then
c.Offset(0, 1) = Left(.FoundFiles(1), _
InStrRev(.FoundFiles(1), "") - 1)
End If
End With
Next c
End Sub

Cordialement.
Daniel
"AB" a écrit dans le message de news:
%
Bonjour à tous,

J'ai un classeur avec en colonne C des données qui sont des noms de
fichiers (F01001, F01002, etc.).
Ces fichiers sont situés dans un répertoire-père ou dans des sous
répertoires-fils du précédent.
Mais, leur vrai nom commence toujours par F, suivi de 5 chiffres, puis de
caractères alphabétiques, et enfin de l'extension .htm
Par exemple, "F01001 Le marché des changes.htm"
Ma question : est-il possible, à partir des données placées en colonne C,
de "chercher" le chemin du fichier correspondant, et de placer le résultat
en colonne D ? (seulement le chemin).
Merci de votre aide.
AB



Avatar
JLuc
Daniel avait soumis l'idée :
Dim RepertoirePere As String, c As Range
RepertoirePere = "e:donneesdanielmpfe"
For Each c In Range("C1", Range("C65536").End(xlUp))
With Application.FileSearch
.NewSearch
.LookIn = RepertoirePere
.Filename = c & "*.htm"
.SearchSubFolders = True


Pour le chemin de départ, j'aurai mis :
RepertoirePere = Thisworkbook.Path & ".."
:oÞ

--
JLuc

Avatar
Daniel
Bonjour.
Ben, j'ai pas compris que son répertoire principal était forcément celui de
thisworkbook
Cordialement.
Daniel
"JLuc" a écrit dans le message de news:

Daniel avait soumis l'idée :
Dim RepertoirePere As String, c As Range
RepertoirePere = "e:donneesdanielmpfe"
For Each c In Range("C1", Range("C65536").End(xlUp))
With Application.FileSearch
.NewSearch
.LookIn = RepertoirePere
.Filename = c & "*.htm"
.SearchSubFolders = True


Pour le chemin de départ, j'aurai mis :
RepertoirePere = Thisworkbook.Path & ".."
:oÞ

--
JLuc





Avatar
AB
Daniel,
Encore une fois, un très grand merci. Ton code fonctionne parfaitement !
J'ai juste limité à 500 lignes, car à 65536, ça prenait un temps fou.
Je te souhaite une excellente fin de journée.
Merci encore !
Merci aussi Jean-Luc : effectivement, le répertoire principal n'est pas
celui du classeur Excel.
André

"Daniel" a écrit dans le message de news:

Bonjour.
Ben, j'ai pas compris que son répertoire principal était forcément celui
de thisworkbook
Cordialement.
Daniel
"JLuc" a écrit dans le message de news:

Daniel avait soumis l'idée :
Dim RepertoirePere As String, c As Range
RepertoirePere = "e:donneesdanielmpfe"
For Each c In Range("C1", Range("C65536").End(xlUp))
With Application.FileSearch
.NewSearch
.LookIn = RepertoirePere
.Filename = c & "*.htm"
.SearchSubFolders = True


Pour le chemin de départ, j'aurai mis :
RepertoirePere = Thisworkbook.Path & ".."
:oÞ

--
JLuc