OVH Cloud OVH Cloud

liste fichiers dans un répertoire

6 réponses
Avatar
pascallerudulier
Bonjour =E0 tous,

Je sais que ce sujet a d=E9j=E0 fait l'objet de plusieurs posts mais j'ai
eu beau essayer toutes les solutions propos=E9es je ne suis pas parvenu
=E0 lister dans un tableau tous les fichiers contenus dans un
r=E9pertoire.

Assez bizarrement j'ai obtenu plus dans la version Access, plus
ancienne, sur mon ordinateur perso que celle du bureau (version 2003):

Voil=E0 la fonction que j'ai trouv=E9e, qui me semble convenir =E0 ce que je
souhaite:

Function fListFiles(strDir As String, Optional SubDir As Boolean =3D
False) As String
Dim intFile As Integer
intFile =3D 0
With Application.FileSearch
.LookIn =3D strDir
.SearchSubFolders =3D (SubDir =3D True)
.FileName =3D "*.*"
If .Execute > 0 Then
For intFile =3D 1 To .FoundFiles.Count
fListFiles =3D IIf(fListFiles =3D "", .FoundFiles(intFile), _
fListFiles & ";"
_
=20
& .FoundFiles(intFile))
Next intFile
End If
End With
End Function

Et voil=E0, peut-=EAtre =E0 tort, comment j'y ai fait appel par une macro en
cliquant sur un bouton dans un formulaire:

Private Sub Commande0_Click()
Me!LaListe.RowSource =3D fListFiles("c:")
End Sub

L'erreur: impossible de trouver le champ Laliste auquel il est fait
r=E9f=E9rence dans votre expression.

j'ai nomm=E9 une table LaListe, un champ LaListe... je suis paum=E9.

Si quelqu'un pouvait m'indiquer o=F9 je p=EAche. Merci d'avance.

Pascal

6 réponses

Avatar
Jessy Sempere
Bonjour

Ton problème vient du fait que tu veux mettre la liste dans une propriété
correspondant à une zone de liste alors que tu dois avoir sûrement créé un
champ texte...

Voilà une solution toute faite pour mettre dans une table la liste des
fichiers d'un répertoire :
http://access.fr.free.fr/articles.php?lng=fr&pg8

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l''''efficacité de tous :
http://www.mpfa.info/
------------------------------------



Bonjour à tous,

Je sais que ce sujet a déjà fait l'objet de plusieurs posts mais j'ai
eu beau essayer toutes les solutions proposées je ne suis pas parvenu
à lister dans un tableau tous les fichiers contenus dans un
répertoire.

Assez bizarrement j'ai obtenu plus dans la version Access, plus
ancienne, sur mon ordinateur perso que celle du bureau (version 2003):

Voilà la fonction que j'ai trouvée, qui me semble convenir à ce que je
souhaite:

Function fListFiles(strDir As String, Optional SubDir As Boolean > False) As String
Dim intFile As Integer
intFile = 0
With Application.FileSearch
.LookIn = strDir
.SearchSubFolders = (SubDir = True)
.FileName = "*.*"
If .Execute > 0 Then
For intFile = 1 To .FoundFiles.Count
fListFiles = IIf(fListFiles = "", .FoundFiles(intFile), _
fListFiles & ";"
_

& .FoundFiles(intFile))
Next intFile
End If
End With
End Function

Et voilà, peut-être à tort, comment j'y ai fait appel par une macro en
cliquant sur un bouton dans un formulaire:

Private Sub Commande0_Click()
Me!LaListe.RowSource = fListFiles("c:")
End Sub

L'erreur: impossible de trouver le champ Laliste auquel il est fait
référence dans votre expression.

j'ai nommé une table LaListe, un champ LaListe... je suis paumé.

Si quelqu'un pouvait m'indiquer où je pêche. Merci d'avance.

Pascal




Avatar
pascallerudulier
Merci beaucoup,

Je n'y arrive toujours pas... je sais appeler une macro, pas une
fonction. Je ne sais pas m'en sortir donc plutôt que de m'énerver et
d'abuser je préfère encore laisser de côté pour le weekend et de
m'attaquer à autre chose.
Merci encore.
Bonne fin de semaine à tout le monde.

On 16 fév, 10:33, Jessy Sempere wrote:
Bonjour

Ton problème vient du fait que tu veux mettre la liste dans une propri été
correspondant à une zone de liste alors que tu dois avoir sûrement cr éé un
champ texte...

Voilà une solution toute faite pour mettre dans une table la liste des
fichiers d'un répertoire :http://access.fr.free.fr/articles.php?lng=f r&pg8

@+
Jessy Sempere
------------------------------------
Site @ccess :http://access.fr.free.fr/
Pour l''''efficacité de tous :http://www.mpfa.info/
------------------------------------




Bonjour à tous,

Je sais que ce sujet a déjà fait l'objet de plusieurs posts mais j' ai
eu beau essayer toutes les solutions proposées je ne suis pas parvenu
à lister dans un tableau tous les fichiers contenus dans un
répertoire.

Assez bizarrement j'ai obtenu plus dans la version Access, plus
ancienne, sur mon ordinateur perso que celle du bureau (version 2003):

Voilà la fonction que j'ai trouvée, qui me semble convenir à ce q ue je
souhaite:

Function fListFiles(strDir As String, Optional SubDir As Boolean =
False) As String
Dim intFile As Integer
intFile = 0
With Application.FileSearch
.LookIn = strDir
.SearchSubFolders = (SubDir = True)
.FileName = "*.*"
If .Execute > 0 Then
For intFile = 1 To .FoundFiles.Count
fListFiles = IIf(fListFiles = "", .FoundFiles(intFile), _
fListFiles & ";"
_

& .FoundFiles(intFile))
Next intFile
End If
End With
End Function

Et voilà, peut-être à tort, comment j'y ai fait appel par une mac ro en
cliquant sur un bouton dans un formulaire:

Private Sub Commande0_Click()
Me!LaListe.RowSource = fListFiles("c:")
End Sub

L'erreur: impossible de trouver le champ Laliste auquel il est fait
référence dans votre expression.

j'ai nommé une table LaListe, un champ LaListe... je suis paumé.

Si quelqu'un pouvait m'indiquer où je pêche. Merci d'avance.

Pascal- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
Eric
Bonjour,

Il te suffit sur l'évènement clic du bouton de faire :
Private Sub Commande0_Click()
Call FileExistDir("c:", "NomDeLaTable", "NomDuChamp")
End Sub
(Adapter les noms de la table et du champ)

Maintenant si la zone de liste s'appelle LaListe et est un contrôle
indépendant du formulaire, il faut que la propriété Origine Source de la
liste soit positionnée sur Liste Valeurs, mais sa capacité est limitée à
2048 caractères max je crois.

Dans ce cas, avec ta fonction initiale:
Private Sub Commande0_Click()
Me!LaListe.RowSourceType = "liste valeurs"
Me!LaListe.RowSource = fListFiles("c:")
End Sub

Merci beaucoup,

Je n'y arrive toujours pas... je sais appeler une macro, pas une
fonction. Je ne sais pas m'en sortir donc plutôt que de m'énerver et
d'abuser je préfère encore laisser de côté pour le weekend et de
m'attaquer à autre chose.
Merci encore.
Bonne fin de semaine à tout le monde.



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
.../...
Petite erreur,
Call FileExistDir("c:", "NomDeLaTable", "NomDuChamp")
au lieu de
Call FileExistDir("c:", "NomDeLaTable", "NomDuChamp")

Bonjour,

Il te suffit sur l'évènement clic du bouton de faire :
Private Sub Commande0_Click()
Call FileExistDir("c:", "NomDeLaTable", "NomDuChamp")
End Sub
(Adapter les noms de la table et du champ)



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
pascallerudulier
Merci. Ca marche! Ouf. Je n'appelais pas la fonction en fait, il me
manquait 'Call'. Merci encore!!

Pascal

je mets donc le résultat final:

Function FileExistDir(strDir As String, _
strTable As String, strField As String)

Dim intFile As Integer
Dim strFile As String

intFile = 0: strFile = ""

With Application.FileSearch
.LookIn = strDir: .FileName = "*.*"
If .Execute > 0 Then
For intFile = 1 To .FoundFiles.Count
strFile = .FoundFiles(intFile)
strFile = Right(strFile, Len(strFile) - (Len(strDir) +
1))
CurrentDb.Execute "INSERT INTO [" & strTable & "] " _
& "([" & strField & "])" _
& "SELECT """ & strFile & """ ;"
Next
End If
End With

End Function

Private Sub Commande1_Click()
Call FileExistDir("c:", "Table", "fichiers")
End Sub


On 16 fév, 12:48, Eric wrote:
Bonjour,

Il te suffit sur l'évènement clic du bouton de faire :
Private Sub Commande0_Click()
Call FileExistDir("c:", "NomDeLaTable", "NomDuChamp")
End Sub
(Adapter les noms de la table et du champ)

Maintenant si la zone de liste s'appelle LaListe et est un contrôle
indépendant du formulaire, il faut que la propriété Origine Source de la
liste soit positionnée sur Liste Valeurs, mais sa capacité est limit ée à
2048 caractères max je crois.

Dans ce cas, avec ta fonction initiale:
Private Sub Commande0_Click()
Me!LaListe.RowSourceType = "liste valeurs"
Me!LaListe.RowSource = fListFiles("c:")
End Sub

--
A+
Erichttp://www.mpfa.info/
Archives :http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


Avatar
3stone
Salut,

a écrit
| Je n'appelais pas la fonction en fait, il me manquait 'Call'

Comme la fonction ne renvoie rien, tu peux te passer du call,
mais dans ce cas, tu dois également supprimer les parenthèses...


Private Sub Commande1_Click()
FileExistDir "c:", "Table", "fichiers"
End Sub


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/