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

Lister les fichiers d'un répertoire ?

20 réponses
Avatar
LANIMAL
Bonjour
Un domaine nouveau pour moi, et je ne m'en sort pas !
1 - Je voudrais lister tous les fichiers (.pdf, .mid .mp3 etc.)
du dossier D:\Mon dossier\Musique
dans la colonne A:A d'un classeur (par exemple : Toto.xls)
à créer sur le Bureau.

2 - Plus tard dans mon exploitation, il me faudra ouvrir Toto.xls
(qui entre temps aura peut-être été fermé)
Quel est le code qui permet de savoir si Toto est déjà ouvert ?
afin d'utiliser dans ce cas l'instruction "Activate", et non "Open".

3 - Si qqun a un peu de tps pour m'expliquer cet exemple de l'aide VBA :
**************
Sub AfficherListeDossiers(specdossier)
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.Files
For Each f1 In fc
s = s & f1.Name
s = s & vbCrLf
Next
MsgBox s
End Sub
****************
Je n'arrive pas à exécuter cet exemple
Que faut-il mettre à la place de specdossier ?

4 - L'autre jour lSteph (j'espère qu'il me lira) m'a suggéré le code
ci-dessous :
##########################
Sub ToutleRepertoire()
f = Dir("*.doc")
Do While Len(f) > 0
Documents.Open (f)
'ChangeLh (Exécution d'une macro dans chaque fichier du répertoire)
f = Dir
Loop
End Sub
#########################
La boucle "Do" ne se fait jamais car f = "", probablement parce que je
ne mets pas ce qu'il faut à la place de "*.doc"

IL Y A LONGTEMPS QUE JE NE ME SUIS PAS SENTI AUSSI NUL :-(((
Merci pour votre aide, d'autant que je me sens exigeant aujourd'hui !

10 réponses

1 2
Avatar
RGI
Bonjour
pour AfficherListeDossiers
ajouter ça en test

Sub test()
dossier = "c:"
AfficherListeDossiers (dossier)
End Sub

salutations

RGI

Bonjour
Un domaine nouveau pour moi, et je ne m'en sort pas !
1 - Je voudrais lister tous les fichiers (.pdf, .mid .mp3 etc.)
du dossier D:Mon dossierMusique
dans la colonne A:A d'un classeur (par exemple : Toto.xls)
à créer sur le Bureau.

2 - Plus tard dans mon exploitation, il me faudra ouvrir Toto.xls
(qui entre temps aura peut-être été fermé)
Quel est le code qui permet de savoir si Toto est déjà ouvert ?
afin d'utiliser dans ce cas l'instruction "Activate", et non "Open".

3 - Si qqun a un peu de tps pour m'expliquer cet exemple de l'aide VBA :
**************
Sub AfficherListeDossiers(specdossier)
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.Files
For Each f1 In fc
s = s & f1.Name
s = s & vbCrLf
Next
MsgBox s
End Sub
****************
Je n'arrive pas à exécuter cet exemple
Que faut-il mettre à la place de specdossier ?

4 - L'autre jour lSteph (j'espère qu'il me lira) m'a suggéré le code
ci-dessous :
##########################
Sub ToutleRepertoire()
f = Dir("*.doc")
Do While Len(f) > 0
Documents.Open (f)
'ChangeLh (Exécution d'une macro dans chaque fichier du répertoire)
f = Dir
Loop
End Sub
#########################
La boucle "Do" ne se fait jamais car f = "", probablement parce que je
ne mets pas ce qu'il faut à la place de "*.doc"

IL Y A LONGTEMPS QUE JE NE ME SUIS PAS SENTI AUSSI NUL :-(((
Merci pour votre aide, d'autant que je me sens exigeant aujourd'hui !


Avatar
isabelle
bonjour,

Sub TousLesFichiersDunDossier2()
Set fs = Application.FileSearch
With fs
.LookIn = "C:zaza" 'Modifie le répertoire
.SearchSubFolders = True
.Filename = "*.*"
.Execute
For I = 1 To .FoundFiles.Count
x = x + 1
Range("A" & x) = .FoundFiles(I)
Next I
If .FoundFiles.Count = 0 Then
MsgBox "Aucun fichier n'a été trouvé."
End If
End With
End Sub

isabelle

Bonjour
Un domaine nouveau pour moi, et je ne m'en sort pas !
1 - Je voudrais lister tous les fichiers (.pdf, .mid .mp3 etc.)
du dossier D:Mon dossierMusique
dans la colonne A:A d'un classeur (par exemple : Toto.xls)
à créer sur le Bureau.

2 - Plus tard dans mon exploitation, il me faudra ouvrir Toto.xls
(qui entre temps aura peut-être été fermé)
Quel est le code qui permet de savoir si Toto est déjà ouvert ?
afin d'utiliser dans ce cas l'instruction "Activate", et non "Open".

3 - Si qqun a un peu de tps pour m'expliquer cet exemple de l'aide VBA :
**************
Sub AfficherListeDossiers(specdossier)
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.Files
For Each f1 In fc
s = s & f1.Name
s = s & vbCrLf
Next
MsgBox s
End Sub
****************
Je n'arrive pas à exécuter cet exemple
Que faut-il mettre à la place de specdossier ?

4 - L'autre jour lSteph (j'espère qu'il me lira) m'a suggéré le code
ci-dessous :
##########################
Sub ToutleRepertoire()
f = Dir("*.doc")
Do While Len(f) > 0
Documents.Open (f)
'ChangeLh (Exécution d'une macro dans chaque fichier du répertoire)
f = Dir
Loop
End Sub
#########################
La boucle "Do" ne se fait jamais car f = "", probablement parce que je
ne mets pas ce qu'il faut à la place de "*.doc"

IL Y A LONGTEMPS QUE JE NE ME SUIS PAS SENTI AUSSI NUL :-(((
Merci pour votre aide, d'autant que je me sens exigeant aujourd'hui !


Avatar
Youky
f = Dir("*.*")
au lieu de.. f = Dir("*.doc")
pour la question 2
on gère l'erreur, on essai d'activer le fichier, si error on l'ouvre

On Error Resume Next
Workbooks("Toto.xls").Activate
If Err <> 0 Then Workbooks.Open ("Toto.xls")
Err.Clear

Youky

"LANIMAL" a écrit dans le message de news:
u%23T6ahE%
Bonjour
Un domaine nouveau pour moi, et je ne m'en sort pas !
1 - Je voudrais lister tous les fichiers (.pdf, .mid .mp3 etc.)
du dossier D:Mon dossierMusique
dans la colonne A:A d'un classeur (par exemple : Toto.xls)
à créer sur le Bureau.

2 - Plus tard dans mon exploitation, il me faudra ouvrir Toto.xls
(qui entre temps aura peut-être été fermé)
Quel est le code qui permet de savoir si Toto est déjà ouvert ?
afin d'utiliser dans ce cas l'instruction "Activate", et non "Open".

3 - Si qqun a un peu de tps pour m'expliquer cet exemple de l'aide VBA :
**************
Sub AfficherListeDossiers(specdossier)
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.Files
For Each f1 In fc
s = s & f1.Name
s = s & vbCrLf
Next
MsgBox s
End Sub
****************
Je n'arrive pas à exécuter cet exemple
Que faut-il mettre à la place de specdossier ?

4 - L'autre jour lSteph (j'espère qu'il me lira) m'a suggéré le code
ci-dessous :
##########################
Sub ToutleRepertoire()
f = Dir("*.doc")
Do While Len(f) > 0
Documents.Open (f)
'ChangeLh (Exécution d'une macro dans chaque fichier du répertoire)
f = Dir
Loop
End Sub
#########################
La boucle "Do" ne se fait jamais car f = "", probablement parce que je ne
mets pas ce qu'il faut à la place de "*.doc"

IL Y A LONGTEMPS QUE JE NE ME SUIS PAS SENTI AUSSI NUL :-(((
Merci pour votre aide, d'autant que je me sens exigeant aujourd'hui !


Avatar
LANIMAL
Merci Isabelle
Juste un petit pb, ton code liste bien les fichiers,
mais avec leur chemin complet (D:Mon DossierMusique...)
Je voudrais les noms de fichiers, seuls,
mais je ne sais pas faire.
(En +, je ne suis pas très à l'aise avec les blocs WITH
il va falloir que je m'y mette !)
Merci encore

bonjour,

Sub TousLesFichiersDunDossier2()
Set fs = Application.FileSearch
With fs
.LookIn = "C:zaza" 'Modifie le répertoire
.SearchSubFolders = True
.Filename = "*.*"
.Execute
For I = 1 To .FoundFiles.Count
x = x + 1
Range("A" & x) = .FoundFiles(I)
Next I
If .FoundFiles.Count = 0 Then
MsgBox "Aucun fichier n'a été trouvé."
End If
End With
End Sub

isabelle

Bonjour
Un domaine nouveau pour moi, et je ne m'en sort pas !
1 - Je voudrais lister tous les fichiers (.pdf, .mid .mp3 etc.)
du dossier D:Mon dossierMusique
dans la colonne A:A d'un classeur (par exemple : Toto.xls)
à créer sur le Bureau.

2 - Plus tard dans mon exploitation, il me faudra ouvrir Toto.xls
(qui entre temps aura peut-être été fermé)
Quel est le code qui permet de savoir si Toto est déjà ouvert ?
afin d'utiliser dans ce cas l'instruction "Activate", et non "Open".

3 - Si qqun a un peu de tps pour m'expliquer cet exemple de l'aide VBA :
**************
Sub AfficherListeDossiers(specdossier)
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.Files
For Each f1 In fc
s = s & f1.Name
s = s & vbCrLf
Next
MsgBox s
End Sub
****************
Je n'arrive pas à exécuter cet exemple
Que faut-il mettre à la place de specdossier ?

4 - L'autre jour lSteph (j'espère qu'il me lira) m'a suggéré le code
ci-dessous :
##########################
Sub ToutleRepertoire()
f = Dir("*.doc")
Do While Len(f) > 0
Documents.Open (f)
'ChangeLh (Exécution d'une macro dans chaque fichier du répertoire)
f = Dir
Loop
End Sub
#########################
La boucle "Do" ne se fait jamais car f = "", probablement parce que je
ne mets pas ce qu'il faut à la place de "*.doc"

IL Y A LONGTEMPS QUE JE NE ME SUIS PAS SENTI AUSSI NUL :-(((
Merci pour votre aide, d'autant que je me sens exigeant aujourd'hui !




Avatar
LANIMAL
Merci RGI, ça roule
Je ne comprends pas encore tout de ce code,
mais au moins, maintenant que ça marche
je vais pouvoir approfondir.
Merci
LANIMAL

Bonjour
pour AfficherListeDossiers
ajouter ça en test

Sub test()
dossier = "c:"
AfficherListeDossiers (dossier)
End Sub

salutations

RGI

Bonjour
Un domaine nouveau pour moi, et je ne m'en sort pas !
1 - Je voudrais lister tous les fichiers (.pdf, .mid .mp3 etc.)
du dossier D:Mon dossierMusique
dans la colonne A:A d'un classeur (par exemple : Toto.xls)
à créer sur le Bureau.

2 - Plus tard dans mon exploitation, il me faudra ouvrir Toto.xls
(qui entre temps aura peut-être été fermé)
Quel est le code qui permet de savoir si Toto est déjà ouvert ?
afin d'utiliser dans ce cas l'instruction "Activate", et non "Open".

3 - Si qqun a un peu de tps pour m'expliquer cet exemple de l'aide VBA :
**************
Sub AfficherListeDossiers(specdossier)
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.Files
For Each f1 In fc
s = s & f1.Name
s = s & vbCrLf
Next
MsgBox s
End Sub
****************
Je n'arrive pas à exécuter cet exemple
Que faut-il mettre à la place de specdossier ?

4 - L'autre jour lSteph (j'espère qu'il me lira) m'a suggéré le code
ci-dessous :
##########################
Sub ToutleRepertoire()
f = Dir("*.doc")
Do While Len(f) > 0
Documents.Open (f)
'ChangeLh (Exécution d'une macro dans chaque fichier du répertoire)
f = Dir
Loop
End Sub
#########################
La boucle "Do" ne se fait jamais car f = "", probablement parce que je
ne mets pas ce qu'il faut à la place de "*.doc"

IL Y A LONGTEMPS QUE JE NE ME SUIS PAS SENTI AUSSI NUL :-(((
Merci pour votre aide, d'autant que je me sens exigeant aujourd'hui !




Avatar
isabelle
bonjour,

voici une autre approche,

Sub TousFichiersDunDossier()
Dim fso As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object, I As Integer
Set fso = CreateObject("Scripting.FileSystemObject")
Répertoire = "c:zaza" 'Modifie le répertoire
If Répertoire = "" Then Exit Sub
Set Dossier = fso.getfolder(Répertoire)
Set Files = Dossier.Files
If Files.Count <> 0 Then
For Each File In Files
Fichier = File.Name
x = x + 1
Range("A" & x) = Fichier
Next
End If
End Sub

isabelle

Merci Isabelle
Juste un petit pb, ton code liste bien les fichiers,
mais avec leur chemin complet (D:Mon DossierMusique...)
Je voudrais les noms de fichiers, seuls,
mais je ne sais pas faire.
(En +, je ne suis pas très à l'aise avec les blocs WITH
il va falloir que je m'y mette !)
Merci encore


bonjour,

Sub TousLesFichiersDunDossier2()
Set fs = Application.FileSearch
With fs
.LookIn = "C:zaza" 'Modifie le répertoire
.SearchSubFolders = True
.Filename = "*.*"
.Execute
For I = 1 To .FoundFiles.Count
x = x + 1
Range("A" & x) = .FoundFiles(I)
Next I
If .FoundFiles.Count = 0 Then
MsgBox "Aucun fichier n'a été trouvé."
End If
End With
End Sub

isabelle


Bonjour
Un domaine nouveau pour moi, et je ne m'en sort pas !
1 - Je voudrais lister tous les fichiers (.pdf, .mid .mp3 etc.)
du dossier D:Mon dossierMusique
dans la colonne A:A d'un classeur (par exemple : Toto.xls)
à créer sur le Bureau.

2 - Plus tard dans mon exploitation, il me faudra ouvrir Toto.xls
(qui entre temps aura peut-être été fermé)
Quel est le code qui permet de savoir si Toto est déjà ouvert ?
afin d'utiliser dans ce cas l'instruction "Activate", et non "Open".

3 - Si qqun a un peu de tps pour m'expliquer cet exemple de l'aide VBA :
**************
Sub AfficherListeDossiers(specdossier)
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.Files
For Each f1 In fc
s = s & f1.Name
s = s & vbCrLf
Next
MsgBox s
End Sub
****************
Je n'arrive pas à exécuter cet exemple
Que faut-il mettre à la place de specdossier ?

4 - L'autre jour lSteph (j'espère qu'il me lira) m'a suggéré le code
ci-dessous :
##########################
Sub ToutleRepertoire()
f = Dir("*.doc")
Do While Len(f) > 0
Documents.Open (f)
'ChangeLh (Exécution d'une macro dans chaque fichier du répertoire)
f = Dir
Loop
End Sub
#########################
La boucle "Do" ne se fait jamais car f = "", probablement parce que
je ne mets pas ce qu'il faut à la place de "*.doc"

IL Y A LONGTEMPS QUE JE NE ME SUIS PAS SENTI AUSSI NUL :-(((
Merci pour votre aide, d'autant que je me sens exigeant aujourd'hui !






Avatar
LANIMAL
Merci Youky pour ton aide

f = Dir("*.*")
au lieu de.. f = Dir("*.doc")
J'ai donc essayé, mais qqchose ne va pas :

Après exécution de f = Dir("*.*") j'obtiens toujours
f = "D:Documents MB.lnk", qqsoit le dossier sélectionné.
Cette macro a pour objet d'ouvrir tous les fichiers d'un dossier;
ce qui m'étonne, c'est que ce dossier n'est pas spécifié.
Mais je ne sais où ni comment le spécifier.
Par ailleurs je ne connais pas la fonction DIR()
et je n'ai trouvé nulle part d'explication sur elle.

pour la question 2
on gère l'erreur, on essai d'activer le fichier, si error on l'ouvre
Merci pour le rappel de "On Error",

c'est simple, mais ça m'avait échappé.
Merci encore... et peut-être à +
LANIMAL

On Error Resume Next
Workbooks("Toto.xls").Activate
If Err <> 0 Then Workbooks.Open ("Toto.xls")
Err.Clear

Youky

"LANIMAL" a écrit dans le message de news:
u%23T6ahE%
Bonjour
Un domaine nouveau pour moi, et je ne m'en sort pas !
1 - Je voudrais lister tous les fichiers (.pdf, .mid .mp3 etc.)
du dossier D:Mon dossierMusique
dans la colonne A:A d'un classeur (par exemple : Toto.xls)
à créer sur le Bureau.

2 - Plus tard dans mon exploitation, il me faudra ouvrir Toto.xls
(qui entre temps aura peut-être été fermé)
Quel est le code qui permet de savoir si Toto est déjà ouvert ?
afin d'utiliser dans ce cas l'instruction "Activate", et non "Open".

3 - Si qqun a un peu de tps pour m'expliquer cet exemple de l'aide VBA :
**************
Sub AfficherListeDossiers(specdossier)
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.Files
For Each f1 In fc
s = s & f1.Name
s = s & vbCrLf
Next
MsgBox s
End Sub
****************
Je n'arrive pas à exécuter cet exemple
Que faut-il mettre à la place de specdossier ?

4 - L'autre jour lSteph (j'espère qu'il me lira) m'a suggéré le code
ci-dessous :
##########################
Sub ToutleRepertoire()
f = Dir("*.doc")
Do While Len(f) > 0
Documents.Open (f)
'ChangeLh (Exécution d'une macro dans chaque fichier du répertoire)
f = Dir
Loop
End Sub
#########################
La boucle "Do" ne se fait jamais car f = "", probablement parce que je ne
mets pas ce qu'il faut à la place de "*.doc"

IL Y A LONGTEMPS QUE JE NE ME SUIS PAS SENTI AUSSI NUL :-(((
Merci pour votre aide, d'autant que je me sens exigeant aujourd'hui !






Avatar
LANIMAL
Bonsoir
Oui, Isabelle, c'est quite OK
Maintenant il ne me reste plus qu'à digérer... ;-)
Vous êtes tous sublimes !
Merci encore

bonjour,

voici une autre approche,

Sub TousFichiersDunDossier()
Dim fso As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object, I As Integer
Set fso = CreateObject("Scripting.FileSystemObject")
Répertoire = "c:zaza" 'Modifie le répertoire
If Répertoire = "" Then Exit Sub
Set Dossier = fso.getfolder(Répertoire)
Set Files = Dossier.Files
If Files.Count <> 0 Then
For Each File In Files
Fichier = File.Name
x = x + 1
Range("A" & x) = Fichier
Next
End If
End Sub

isabelle

Merci Isabelle
Juste un petit pb, ton code liste bien les fichiers,
mais avec leur chemin complet (D:Mon DossierMusique...)
Je voudrais les noms de fichiers, seuls,
mais je ne sais pas faire.
(En +, je ne suis pas très à l'aise avec les blocs WITH
il va falloir que je m'y mette !)
Merci encore


bonjour,

Sub TousLesFichiersDunDossier2()
Set fs = Application.FileSearch
With fs
.LookIn = "C:zaza" 'Modifie le répertoire
.SearchSubFolders = True
.Filename = "*.*"
.Execute
For I = 1 To .FoundFiles.Count
x = x + 1
Range("A" & x) = .FoundFiles(I)
Next I
If .FoundFiles.Count = 0 Then
MsgBox "Aucun fichier n'a été trouvé."
End If
End With
End Sub

isabelle


Bonjour
Un domaine nouveau pour moi, et je ne m'en sort pas !
1 - Je voudrais lister tous les fichiers (.pdf, .mid .mp3 etc.)
du dossier D:Mon dossierMusique
dans la colonne A:A d'un classeur (par exemple : Toto.xls)
à créer sur le Bureau.

2 - Plus tard dans mon exploitation, il me faudra ouvrir Toto.xls
(qui entre temps aura peut-être été fermé)
Quel est le code qui permet de savoir si Toto est déjà ouvert ?
afin d'utiliser dans ce cas l'instruction "Activate", et non "Open".

3 - Si qqun a un peu de tps pour m'expliquer cet exemple de l'aide
VBA :
**************
Sub AfficherListeDossiers(specdossier)
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.Files
For Each f1 In fc
s = s & f1.Name
s = s & vbCrLf
Next
MsgBox s
End Sub
****************
Je n'arrive pas à exécuter cet exemple
Que faut-il mettre à la place de specdossier ?

4 - L'autre jour lSteph (j'espère qu'il me lira) m'a suggéré le code
ci-dessous :
##########################
Sub ToutleRepertoire()
f = Dir("*.doc")
Do While Len(f) > 0
Documents.Open (f)
'ChangeLh (Exécution d'une macro dans chaque fichier du répertoire)
f = Dir
Loop
End Sub
#########################
La boucle "Do" ne se fait jamais car f = "", probablement parce que
je ne mets pas ce qu'il faut à la place de "*.doc"

IL Y A LONGTEMPS QUE JE NE ME SUIS PAS SENTI AUSSI NUL :-(((
Merci pour votre aide, d'autant que je me sens exigeant aujourd'hui !








Avatar
lSteph
Bonsoir LANIMAL,

Oui je viens de lire.
L'autre jour ta question portait sur un ensemble de fichiers Word. D'où
le *.doc.
Pour tous fichiers Youky a donné la réponse *.*

Explication:
Lorsque tu appelle une première fois
f=dir("*.xls")
vient la liste des fichiers xls du répertoire en cours
mais en l'occurence le premier seul sera retenu.
Dans la boucle ( à la fin)
lorsque tu rappelle simplement
f=dir
le même critère est conservé mais
on passe au fichier suivant.

Le len(f)>0
mesure la longuer de chaine de f, ceci permet de s'arrêter lorsqu'il
n'y a plus de fichiers.

Cordialement.

lSteph




LANIMAL a exprimé avec précision :
Bonjour
Un domaine nouveau pour moi, et je ne m'en sort pas !
1 - Je voudrais lister tous les fichiers (.pdf, .mid .mp3 etc.)
du dossier D:Mon dossierMusique
dans la colonne A:A d'un classeur (par exemple : Toto.xls)
à créer sur le Bureau.

2 - Plus tard dans mon exploitation, il me faudra ouvrir Toto.xls
(qui entre temps aura peut-être été fermé)
Quel est le code qui permet de savoir si Toto est déjà ouvert ?
afin d'utiliser dans ce cas l'instruction "Activate", et non "Open".

3 - Si qqun a un peu de tps pour m'expliquer cet exemple de l'aide VBA :
**************
Sub AfficherListeDossiers(specdossier)
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.Files
For Each f1 In fc
s = s & f1.Name
s = s & vbCrLf
Next
MsgBox s
End Sub
****************
Je n'arrive pas à exécuter cet exemple
Que faut-il mettre à la place de specdossier ?

4 - L'autre jour lSteph (j'espère qu'il me lira) m'a suggéré le code
ci-dessous :
##########################
Sub ToutleRepertoire()
f = Dir("*.doc")
Do While Len(f) > 0
Documents.Open (f)
'ChangeLh (Exécution d'une macro dans chaque fichier du répertoire)
f = Dir
Loop
End Sub
#########################
La boucle "Do" ne se fait jamais car f = "", probablement parce que je ne
mets pas ce qu'il faut à la place de "*.doc"

IL Y A LONGTEMPS QUE JE NE ME SUIS PAS SENTI AUSSI NUL :-(((
Merci pour votre aide, d'autant que je me sens exigeant aujourd'hui !


--
- -

Avatar
LANIMAL
Bonsoir, et merci pour ta cordiale fidélité.
Oui, effectivement, mon "client", mon fils, qui craint que je m'ennuie,
m'occupe beaucoup - à titre gratuit bien sûr - et il fait évoluer son
projet.
Pour le .doc, j'avais compris.
J'avais aussi compris le Len(f)>0
Ton explication me permet "d'entrevoir" des choses, mais je bloque
encore... et j'arrive pas à décoincer, peut-être suis-je bouché ! ?
Je te rappelle donc le code en cause :
***************************
Sub ToutleRepertoire()
f = Dir("*.*")
Do While Len(f) > 0
Documents.Open (f)
'ChangeLh (Exécution d'une macro dans chaque fichier du répertoire)
f = Dir
Loop
End Sub
*****************************
Je te reprécise ci-dessous mon pb :
Avec f = Dir("*.*"), qqchose ne va encore pas :
Après exécution (en pas à pas) de f = Dir("*.*"), j'obtiens toujours
f = "D:Documents MB.lnk", même quand je viens d'ouvrir un fichier du
répertoire C:Mes Documents qui est donc le répertoire en cours.
(Documents MB est mon répertoire personnel dans la partition D:).
La macro est dans PERSO.XLS qui est aussi dans C:....
Alors, je me demande s'il ne faut pas spécifier dans la macro, le
répertoire dans lequel elle doit travailler.
Mais je ne sais où ni comment le spécifier.
Merci, à +

Bonsoir LANIMAL,

Oui je viens de lire.
L'autre jour ta question portait sur un ensemble de fichiers Word. D'où
le *.doc.
Pour tous fichiers Youky a donné la réponse *.*

Explication:
Lorsque tu appelle une première fois
f=dir("*.xls")
vient la liste des fichiers xls du répertoire en cours
mais en l'occurence le premier seul sera retenu.
Dans la boucle ( à la fin)
lorsque tu rappelle simplement
f=dir
le même critère est conservé mais
on passe au fichier suivant.

Le len(f)>0
mesure la longuer de chaine de f, ceci permet de s'arrêter lorsqu'il n'y
a plus de fichiers.

Cordialement.

lSteph




LANIMAL a exprimé avec précision :
Bonjour
Un domaine nouveau pour moi, et je ne m'en sort pas !
1 - Je voudrais lister tous les fichiers (.pdf, .mid .mp3 etc.)
du dossier D:Mon dossierMusique
dans la colonne A:A d'un classeur (par exemple : Toto.xls)
à créer sur le Bureau.

2 - Plus tard dans mon exploitation, il me faudra ouvrir Toto.xls
(qui entre temps aura peut-être été fermé)
Quel est le code qui permet de savoir si Toto est déjà ouvert ?
afin d'utiliser dans ce cas l'instruction "Activate", et non "Open".

3 - Si qqun a un peu de tps pour m'expliquer cet exemple de l'aide VBA :
**************
Sub AfficherListeDossiers(specdossier)
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.Files
For Each f1 In fc
s = s & f1.Name
s = s & vbCrLf
Next
MsgBox s
End Sub
****************
Je n'arrive pas à exécuter cet exemple
Que faut-il mettre à la place de specdossier ?

4 - L'autre jour lSteph (j'espère qu'il me lira) m'a suggéré le code
ci-dessous :
##########################
Sub ToutleRepertoire()
f = Dir("*.doc")
Do While Len(f) > 0
Documents.Open (f)
'ChangeLh (Exécution d'une macro dans chaque fichier du répertoire)
f = Dir
Loop
End Sub
#########################
La boucle "Do" ne se fait jamais car f = "", probablement parce que je
ne mets pas ce qu'il faut à la place de "*.doc"

IL Y A LONGTEMPS QUE JE NE ME SUIS PAS SENTI AUSSI NUL :-(((
Merci pour votre aide, d'autant que je me sens exigeant aujourd'hui !





1 2