Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/04/2011, 17h55   #1
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 60
Points : 10
Points : 10
Par défaut Liste déroulante affichant les fichiers d'un répertoire du disque

Bonjour,
Voici un sujet déjà cité mais que je ne parviens pas à résoudre.
Je souhaiterais qu'une liste déroulante (fichiers) d'un formulaire affiche les fichiers contenu dans un répertoire spécifié dans un autre champ (chemin) du formulaire.
Ex : chemin = c:\mes documents\rapports. Fichier : à choisir dans la liste déroulante.
Le fichier une fois choisi, je voudrais pouvoir l'ouvrir à partir de mon formulaire (à l'aide d'un bouton). Les fichiers sont de type xls, xlsx, xlsm, doc, docx, pdf, jpg,...).
Merci de votre aide.
ToFind est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 04h55   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 623
Points : 11 623
Bonjour,
La fenêtre Ouvrir ne te convient pas ? http://access.developpez.com/faq/?pa...#AffBoitDialog

Sinon il te faut utiliser la fonction Dir() pour lister tes fichiers.

Voici un exemple à adapter.
Code :
1
2
3
4
5
6
7
8
 
Dim myfile As String, listefichier   As String
myfile = Dir("c:\")
While Not Len(myfile) = 0
   listefichier = myfile & ";" & listefichier
   myfile = Dir("")
Wend
me.maliste.rowsource = listefichier
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/04/2011, 15h44   #3
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 60
Points : 10
Points : 10
Bien merci de ta réponse.

J'ai utilisé la fenêtre ouvrir qui effectivement est ok.
Il me reste à résoudre ces 2 points :

1. Récupérer le nom du fichier sélectionné et le copier dans le champ "Nom de fichier"
2. Mettre le code sur le bouton qui ouvrira le fichier dont le nom sera repris dans le champ "Nom de fichier" et dont le chemin sera repris dans le champ "Chemin".

Est-ce possible et est-il possible d'ouvrir tous les types de fichier?

Merci de ton aide.
ToFind est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 23h34   #4
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 623
Points : 11 623
1. la fonction te renvoi le chemin complet et le nom que tu as choisi.
2. Pour l'appel c'est classique

Code :
vchemin =  OuvrirUnFichier(Application.hwndAccessApp, "Parcourir", 1, "Tous les fichiers", "*.*")
Ici on visualise tous les fichiers.

Pour le découpage.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Public Function fFichierExt(strCheminFichier As String, strType As String) As String
' Retourne l'un des éléments suivant le chemin/fichier passé en référence
' strCheminFichier contient le chemin et fichier
' strType =
'    F renvoi le nom du fichier et son extension
'    E renvoi l'extension du fichier
'    C renvoi le chemin sans le nom ni l'extension
'    U renvoi l'unité
  On Error GoTo ErrSub
  Select Case strType
    Case Is = "F"    ' renvoi le fichier
      fFichierExt = Right(strCheminFichier, Len(strCheminFichier) - InStrRev(strCheminFichier, "\"))
  Case Is = "E"    ' renvoi l'extension
      fFichierExt = Right(strCheminFichier, Len(strCheminFichier) - InStrRev(strCheminFichier, "."))
  Case Is = "C"    ' renvoi le chemin
      fFichierExt = Left(strCheminFichier, InStrRev(strCheminFichier, "\"))
  Case Is = "U"    ' l'unité
     fFichierExt = Left(strCheminFichier, InStr(strCheminFichier, "\"))
 End Select
 
 Exit Function
 
ErrSub:
Resume Next
End Function
Y a plus qu'à !
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/04/2011, 13h49   #5
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 60
Points : 10
Points : 10
Fabrice, merci de ton aide.
Ca vole un peu haut pour moi...
Dans mon cas, je choisi de sélectionner un fichier depuis un répertoire prédéterminé.
Je ne comprends pas ce que je dois faire pour :
1. récupérer le "nom+ext" du fichier que je choisi dans l'arborescence et qui apparaît dans la fenêtre finale,
2. copier ce "nom+ext" dans le champ "nom de fichier" de mon formulaire.

Par contre je suis parvenu à ouvrir le fichier à l'aide d'un bouton lorsque son nom est mentionné dans le champs "nom de fichier".

Peux-tu avoir l'amabilité de m'indiquer le code à reprendre pour effectuer les points 1 et 2 ci-dessus et s'il faut le reprendre obligatoirement sur l'évènement d'un bouton.
Encore bien merci de ton aide précieuse.
Guy.
ToFind est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 21h00   #6
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 623
Points : 11 623
1)
Lorque tu appelles cette fonction

Code :
OuvrirUnFichier(Application.hwndAccessApp, "Parcourir", 1, "Tous les fichiers", "*.*")
Elle te renvoie le chemin et le nom+extension du fichier sélectionné.

2)
Pour faire une affectation dans un controle de zone texte tu dois utiliser ceci

3)
Pour extraire le nom du fichier et l'extension tu dois faire appel à la fonction que je t'ai posté. Mets la dans le code du formulaire ou dans un module.

4)
Pour que ça fonctionne !

Dans l'événement Sur clic d'un bouton de commande

Crée une variable pour stocker le nom du fichier
puis renvoi le fichier choisi
supprime le chemin sans le chemin.
et affecte le au controle de zone texte.

Code :
1
2
3
dim monfichier as string
monfichier=OuvrirUnFichier(Application.hwndAccessApp, "Parcourir", 1, "Tous les fichiers", "*.*")
me.nomducontrole = fFichierExt(monfichier,"FE")
Et oui il faut un déclencheur (un bouton ou autre) c'est le principe de la programmation événementielle.

Lit le tuto sur les événements et les appels formulaires. Tu seras plus à l'aise.
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h35.


 
 
 
 
Partenaires

Hébergement Web