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

retrouver le chemin d'un fichier

6 réponses
Avatar
AB
Bonjour à tous,
J'ai en colonne C des données correspondant à des noms de fichiers (F0010,
F02364, etc.). Il s'agit de fichiers htm.
Ces fichiers se trouvent sur mon disque dur, dans différents dossiers
appartenant à une arborescence.
Je cherche une macro qui me permette, à partir de la donnée située en C, de
placer en D (ou ailleurs) le chemin complet permettant de retrouver ce
fichier dans l'arborescence.
Toute idée sera la bienvenue.
AB

6 réponses

Avatar
Daniel
Bonjour.
La macro suivante risque d'être longue s'il faut scanner tout le disque C :

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

Note : Ne fonctionne pas avec XL2007.
Cordialement.
Daniel
"AB" a écrit dans le message de news:

Bonjour à tous,
J'ai en colonne C des données correspondant à des noms de fichiers (F0010,
F02364, etc.). Il s'agit de fichiers htm.
Ces fichiers se trouvent sur mon disque dur, dans différents dossiers
appartenant à une arborescence.
Je cherche une macro qui me permette, à partir de la donnée située en C,
de placer en D (ou ailleurs) le chemin complet permettant de retrouver ce
fichier dans l'arborescence.
Toute idée sera la bienvenue.
AB



Avatar
AB
Daniel avait énoncé :
Bonjour.
La macro suivante risque d'être longue s'il faut scanner tout le disque C :

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

Note : Ne fonctionne pas avec XL2007.
Cordialement.
Daniel
"AB" a écrit dans le message de news:

Bonjour à tous,
J'ai en colonne C des données correspondant à des noms de fichiers (F0010,
F02364, etc.). Il s'agit de fichiers htm.
Ces fichiers se trouvent sur mon disque dur, dans différents dossiers
appartenant à une arborescence.
Je cherche une macro qui me permette, à partir de la donnée située en C,
de placer en D (ou ailleurs) le chemin complet permettant de retrouver ce
fichier dans l'arborescence.
Toute idée sera la bienvenue.
AB




Merci Daniel.
Ca marche nickel, as usual.
Comme j'indique le dossier racine , et que je limite le nombre de
lignes (il y en a 500) ça va vite.
Mais j'ai oublié un point important :
En colonne D, j'ai un indicateur : A ou F. Selon la valeur de cet
indicateur, le fichier se trouve dans une branche ou dans une autre de
l'arborescence.
Si c'est A, le dossier père est :
C:Documents and SettingsHP_PropriétaireBureauparcours_A
Si c'est F, le dossier père est :
C:Documents and SettingsHP_PropriétaireBureauparcours
Serait-ce abuser que de te demander comment modifier la macro de sorte
qu'elle aille chercher au bon endroit, selon la valeur en colonne D ?
J'ai déjà modifié l'instruction Offset, qui m'écrasait justement cette
valeur en colonne D, en la remplaçant par c.Offset(0,2) pour que le
chemin se trouve en colonne E.
Merci
André


Avatar
MichDenis
Si tu utilises cette méthode pour "Protéger" ta feuille,
tu devrais être capable d'effectuer un tri sur cette
feuille si le tri est commandé est exécuté à l'aide
d'une macro.

With Worksheets("Feuil1")
.Protect Password:="toto", DrawingObjects:=True, _
Contents:=True, UserInterfaceOnly:=True
End With

Et si ta feuille se doit d'être protéger dès l'ouverture du classeur,
utilise l'événement "open" du classeur dans le Thisworkbook
pour y mettre le code précédent
'---------------------
Private Sub Workbook_Open()
With Worksheets("Feuil1")
.Protect Password:="toto", DrawingObjects:=True, _
Contents:=True, UserInterfaceOnly:=True
End With
End Sub
'---------------------



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

Bonjour à tous,
J'ai en colonne C des données correspondant à des noms de fichiers (F0010,
F02364, etc.). Il s'agit de fichiers htm.
Ces fichiers se trouvent sur mon disque dur, dans différents dossiers
appartenant à une arborescence.
Je cherche une macro qui me permette, à partir de la donnée située en C, de
placer en D (ou ailleurs) le chemin complet permettant de retrouver ce
fichier dans l'arborescence.
Toute idée sera la bienvenue.
AB
Avatar
MichDenis
Problème d'aiguillage....en réponse à ta question précédente.

Si tu utilises cette méthode pour "Protéger" ta feuille,
tu devrais être capable d'effectuer un tri sur cette
feuille si le tri est commandé est exécuté à l'aide
d'une macro.

With Worksheets("Feuil1")
.Protect Password:="toto", DrawingObjects:=True, _
Contents:=True, UserInterfaceOnly:=True
End With

Et si ta feuille se doit d'être protéger dès l'ouverture du classeur,
utilise l'événement "open" du classeur dans le Thisworkbook
pour y mettre le code précédent
'---------------------
Private Sub Workbook_Open()
With Worksheets("Feuil1")
.Protect Password:="toto", DrawingObjects:=True, _
Contents:=True, UserInterfaceOnly:=True
End With
End Sub
'---------------------



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

Bonjour à tous,
J'ai en colonne C des données correspondant à des noms de fichiers (F0010,
F02364, etc.). Il s'agit de fichiers htm.
Ces fichiers se trouvent sur mon disque dur, dans différents dossiers
appartenant à une arborescence.
Je cherche une macro qui me permette, à partir de la donnée située en C, de
placer en D (ou ailleurs) le chemin complet permettant de retrouver ce
fichier dans l'arborescence.
Toute idée sera la bienvenue.
AB
Avatar
Daniel
Essaie (non testé) :

Sub RetrouveChemin()
Dim c As Range, Fichier As String
With Application.FileSearch
.NewSearch
.LookIn = "C:Documents and
SettingsHP_PropriétaireBureauparcours_A"
.Filename = "*.htm"
.SearchSubFolders = True
.Execute
For i = 1 To .FoundFiles.Count
Fichier = Dir(.FoundFiles(i))
For Each c In Range("C1", Range("C65536").End(xlUp))
If c & ".htm" = Fichier And c.Offset(0, 1) = "A" Then
c.Offset(0, 2) = Left(.FoundFiles(i), _
InStrRev(.FoundFiles(i), "") - 1)
End If
Next c
Next i
.NewSearch
.LookIn = "C:Documents and
SettingsHP_PropriétaireBureauparcours"
.Filename = "*.htm"
.SearchSubFolders = True
.Execute
For i = 1 To .FoundFiles.Count
Fichier = Dir(.FoundFiles(i))
For Each c In Range("C1", Range("C65536").End(xlUp))
If c & ".htm" = Fichier And c.Offset(0, 1) = "F" Then
c.Offset(0, 2) = Left(.FoundFiles(i), _
InStrRev(.FoundFiles(i), "") - 1)
End If
Next c
Next i
End With
End Sub

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

Daniel avait énoncé :
Bonjour.
La macro suivante risque d'être longue s'il faut scanner tout le disque C
:

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

Note : Ne fonctionne pas avec XL2007.
Cordialement.
Daniel
"AB" a écrit dans le message de news:

Bonjour à tous,
J'ai en colonne C des données correspondant à des noms de fichiers
(F0010, F02364, etc.). Il s'agit de fichiers htm.
Ces fichiers se trouvent sur mon disque dur, dans différents dossiers
appartenant à une arborescence.
Je cherche une macro qui me permette, à partir de la donnée située en C,
de placer en D (ou ailleurs) le chemin complet permettant de retrouver
ce fichier dans l'arborescence.
Toute idée sera la bienvenue.
AB




Merci Daniel.
Ca marche nickel, as usual.
Comme j'indique le dossier racine , et que je limite le nombre de lignes
(il y en a 500) ça va vite.
Mais j'ai oublié un point important :
En colonne D, j'ai un indicateur : A ou F. Selon la valeur de cet
indicateur, le fichier se trouve dans une branche ou dans une autre de
l'arborescence.
Si c'est A, le dossier père est :
C:Documents and SettingsHP_PropriétaireBureauparcours_A
Si c'est F, le dossier père est :
C:Documents and SettingsHP_PropriétaireBureauparcours
Serait-ce abuser que de te demander comment modifier la macro de sorte
qu'elle aille chercher au bon endroit, selon la valeur en colonne D ?
J'ai déjà modifié l'instruction Offset, qui m'écrasait justement cette
valeur en colonne D, en la remplaçant par c.Offset(0,2) pour que le chemin
se trouve en colonne E.
Merci
André






Avatar
AB
Daniel a exposé le 19/05/2007 :
Essaie (non testé) :

Sub RetrouveChemin()
Dim c As Range, Fichier As String
With Application.FileSearch
.NewSearch
.LookIn = "C:Documents and
SettingsHP_PropriétaireBureauparcours_A"
.Filename = "*.htm"
.SearchSubFolders = True
.Execute
For i = 1 To .FoundFiles.Count
Fichier = Dir(.FoundFiles(i))
For Each c In Range("C1", Range("C65536").End(xlUp))
If c & ".htm" = Fichier And c.Offset(0, 1) = "A" Then
c.Offset(0, 2) = Left(.FoundFiles(i), _
InStrRev(.FoundFiles(i), "") - 1)
End If
Next c
Next i
.NewSearch
.LookIn = "C:Documents and SettingsHP_PropriétaireBureauparcours"
.Filename = "*.htm"
.SearchSubFolders = True
.Execute
For i = 1 To .FoundFiles.Count
Fichier = Dir(.FoundFiles(i))
For Each c In Range("C1", Range("C65536").End(xlUp))
If c & ".htm" = Fichier And c.Offset(0, 1) = "F" Then
c.Offset(0, 2) = Left(.FoundFiles(i), _
InStrRev(.FoundFiles(i), "") - 1)
End If
Next c
Next i
End With
End Sub

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

Daniel avait énoncé :
Bonjour.
La macro suivante risque d'être longue s'il faut scanner tout le disque C
:

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

Note : Ne fonctionne pas avec XL2007.
Cordialement.
Daniel
"AB" a écrit dans le message de news:

Bonjour à tous,
J'ai en colonne C des données correspondant à des noms de fichiers
(F0010, F02364, etc.). Il s'agit de fichiers htm.
Ces fichiers se trouvent sur mon disque dur, dans différents dossiers
appartenant à une arborescence.
Je cherche une macro qui me permette, à partir de la donnée située en C,
de placer en D (ou ailleurs) le chemin complet permettant de retrouver ce
fichier dans l'arborescence.
Toute idée sera la bienvenue.
AB




Merci Daniel.
Ca marche nickel, as usual.
Comme j'indique le dossier racine , et que je limite le nombre de lignes
(il y en a 500) ça va vite.
Mais j'ai oublié un point important :
En colonne D, j'ai un indicateur : A ou F. Selon la valeur de cet
indicateur, le fichier se trouve dans une branche ou dans une autre de
l'arborescence.
Si c'est A, le dossier père est :
C:Documents and SettingsHP_PropriétaireBureauparcours_A
Si c'est F, le dossier père est :
C:Documents and SettingsHP_PropriétaireBureauparcours
Serait-ce abuser que de te demander comment modifier la macro de sorte
qu'elle aille chercher au bon endroit, selon la valeur en colonne D ?
J'ai déjà modifié l'instruction Offset, qui m'écrasait justement cette
valeur en colonne D, en la remplaçant par c.Offset(0,2) pour que le chemin
se trouve en colonne E.
Merci
André





Daniel,
Un TRES grand merci pour ta disponibilité, ta rapidité, et ton
efficacité !
A+
André
André