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 03/11/2011, 14h42   #1
Nouveau Membre du Club
 
Homme Kevin CLAUDEL
Étudiant
Inscription : novembre 2009
Messages : 29
Détails du profil
Informations personnelles :
Nom : Homme Kevin CLAUDEL

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 29
Points : 29
Points : 29
Par défaut Ouvrir un fichier avec du VBA

Bonjour,

Je désire faire quelque chose de tout simple mais je n'arrive absolument pas à trouver comment le faire.

Dans un formulaire sous access, j'ai un bouton que lorsque je clique dessus, grâce à du code vba, cela m'ouvre une boite de dialogue qui me propose d'ouvrir un fichier.

Je souhaite aussi pouvoir paramétrer le format de fichier qui s'affiche (n'afficher que les .doc, ou que les .txt ou .mp3) (bien que ce soit superficiel, cela serait quand même négligeable) et se souvenir dans une variable l'adresse du fichier.

Bien évidement, une fois le fichier sélectionné, il serait ouvert par le code vba.

Je précise que le fichier que je dois ouvrir ne se situe pas toujours au même endroit et que c'est pour cela que j'ai besoin de passer par une boite de dialogue d'ouverture et que je ne peux pas passer simplement par le code vba donné en exemple dans le cours.

Je pense avoir dit l'essentiel.
Merci d'avance pour votre aide.

Cordialement.

HLW.
HardLienWare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 14h54   #2
Expert Confirmé
 
Avatar de Godzestla
 
Homme
Chercheur de bonheur
Inscription : août 2007
Messages : 2 257
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de bonheur
Secteur : Industrie

Informations forums :
Inscription : août 2007
Messages : 2 257
Points : 2 980
Points : 2 980
Bonjour Kevin,
Citation:
Je désire faire quelque chose de tout simple mais je n'arrive absolument pas à trouver comment le faire.
c'est donc que cela n'est pas aussi simple que souhaité ..

Je t'invite à t'intéresser à la méthode GetOpenFilename disponible dans l'aide en ligne, avec même un exemple.
__________________
(\ _ /) Cordialement G@dz
(='.'=)

(")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/11/2011, 09h06   #3
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 089
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 089
Points : 11 624
Points : 11 624
Bonjour,





Cordialement,
__________________
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
Vieux 08/11/2011, 17h40   #4
Nouveau Membre du Club
 
Homme Kevin CLAUDEL
Étudiant
Inscription : novembre 2009
Messages : 29
Détails du profil
Informations personnelles :
Nom : Homme Kevin CLAUDEL

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 29
Points : 29
Points : 29
Citation:
Envoyé par Godzestla Voir le message
Bonjour Kevin,


c'est donc que cela n'est pas aussi simple que souhaité ..

Je t'invite à t'intéresser à la méthode GetOpenFilename disponible dans l'aide en ligne, avec même un exemple.
Merci beaucoup pour la réponse Godzestla, je vais chercher çà.

Désolé de ma lenteur mais malheureusement j'avais quelque problème à régler.
Merci encore.

Kevin.
HardLienWare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 18h05   #5
Membre régulier
 
Inscription : décembre 2004
Messages : 300
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 300
Points : 89
Points : 89
Envoyer un message via MSN à Daniel MOREAU
Bonsoir,

Voici un super tuto qui pourras te guider.

http://warin.developpez.com/access/fichiers/

Sinon tu peux essayer ceci :

tu colles dans un module cette partie

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
Option Compare Database
 
'Déclaration de l'API
Private Declare Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String)
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
                   "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
 
 'Structure du fichier
Private Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type
 
 'Constantes
Private Const OFN_READONLY = &H1
Private Const OFN_OVERWRITEPROMPT = &H2
Private Const OFN_HIDEREADONLY = &H4
Private Const OFN_NOCHANGEDIR = &H8
Private Const OFN_SHOWHELP = &H10
Private Const OFN_ENABLEHOOK = &H20
Private Const OFN_ENABLETEMPLATE = &H40
Private Const OFN_ENABLETEMPLATEHANDLE = &H80
Private Const OFN_NOVALIDATE = &H100
Private Const OFN_ALLOWMULTISELECT = &H200
Private Const OFN_EXTENSIONDIFFERENT = &H400
Private Const OFN_PATHMUSTEXIST = &H800
Private Const OFN_FILEMUSTEXIST = &H1000
Private Const OFN_CREATEPROMPT = &H2000
Private Const OFN_SHAREAWARE = &H4000
Private Const OFN_NOREADONLYRETURN = &H8000
Private Const OFN_NOTESTFILECREATE = &H10000
 
Private Const OFN_SHAREFALLTHROUGH = 2
Private Const OFN_SHARENOWARN = 1
Private Const OFN_SHAREWARN = 0
 
 
Public Function OuvrirUnFichier(Handle As Long, _
                                Titre As String, _
                                TypeRetour As Byte, _
                                Optional TitreFiltre As String, _
                                Optional TypeFichier As String, _
                                Optional RepParDefaut As String) As String
 'OuvrirUnFichier est la fonction a utiliser dans votre formulaire pour ouvrir _
la boîte de dialogue de sélection d'un fichier.
 'Explication des paramètres
    'Handle = le handle de la fenêtre (Me.Hwnd)
    'Titre = Titre de la boîte de dialogue
    'TypeRetour (Définit la valeur, de type String, renvoyée par la fonction)
        '1 = Chemin complet + Nom du fichier
        '2 = Nom fichier seulement
    'TitreFiltre = Titre du filtre
        'Exemple: Fichier Access
        'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
    'TypeFichier = Extention du fichier (Sans le .)
        'Exemple: MDB
        'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
    'RepParDefaut = Répertoire d'ouverture par defaut
        'Exemple: C:\windows\system32
        'Si vous laissé l'argument vide, par defaut il se place dans le répertoire de votre application
 
Dim StructFile As OPENFILENAME
Dim sFiltre As String
 
 
 
 'Construction du filtre en fonction des arguments spécifiés
If Len(TitreFiltre) > 0 And Len(TypeFichier) > 0 Then
  sFiltre = TitreFiltre & " (" & TypeFichier & ")" & Chr$(0) & "*." & TypeFichier & Chr$(0)
End If
sFiltre = sFiltre & "Fichiers xls (*.xls)" & Chr$(0) & "*.xls" & Chr$(0)
sFiltre = sFiltre & "Tous (*.*)" & Chr$(0) & "*.*" & Chr$(0)
 
 
 'Configuration de la boîte de dialogue
  With StructFile
    .lStructSize = Len(StructFile) 'Initialisation de la grosseur de la structure
    .hwndOwner = Handle 'Identification du handle de la fenêtre
    .lpstrFilter = sFiltre 'Application du filtre
    .lpstrFile = String$(254, vbNullChar) 'Initialisation du fichier '0' x 254
    .nMaxFile = 254 'Taille maximale du fichier
    .lpstrFileTitle = String$(254, vbNullChar) 'Initialisation du nom du fichier '0' x 254
    .nMaxFileTitle = 254  'Taille maximale du nom du fichier
    .lpstrTitle = Titre 'Titre de la boîte de dialogue
    .flags = OFN_HIDEREADONLY  'Option de la boite de dialogue
    If ((IsNull(RepParDefaut)) Or (RepParDefaut = "")) Then
        RepParDefaut = "C:\Transferts Equalis sur Pdc"
        PathStripPath (RepParDefaut)
        .lpstrInitialDir = RepParDefaut
        Else: .lpstrInitialDir = RepParDefaut
    End If
  End With
 
If (GetOpenFileName(StructFile)) Then 'Si un fichier est sélectionné
    Select Case TypeRetour
      Case 1: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFile, InStr(1, StructFile.lpstrFile, vbNullChar) - 1))
      Case 2: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFileTitle, InStr(1, StructFile.lpstrFileTitle, vbNullChar) - 1))
    End Select
  End If
 
End Function
et ensuite dans ton formulaire tu ajoutes
un bouton que tu nommes par exemple "BtnRechFich"
et une zone de texte "cheminfichier" qui affichera le fichier sélectionné

Puis pour terminer ce code sur ton bouton "BtnRechFich"

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub BtnRechFich_Click()
Dim chemin As String
 
    chemin = OuvrirUnFichier(Me.Hwnd, "Selectionner un fichier texte", 1, "Fichiers textes", "txt")
 
    If chemin <> "" Then
        Me.TFichier = chemin
        Me.CheminFichier = Mid(Mid(chemin, InStrRev(chemin, "\") + 1), 1, InStr(Mid(chemin, InStrRev(chemin, "\") + 1), ".") - 1)
    End If
 
 
 
End Sub
Bon courage

Daniel
Daniel MOREAU est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/11/2011, 19h39   #6
Nouveau Membre du Club
 
Homme Kevin CLAUDEL
Étudiant
Inscription : novembre 2009
Messages : 29
Détails du profil
Informations personnelles :
Nom : Homme Kevin CLAUDEL

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 29
Points : 29
Points : 29
Merci beaucoup Daniel,
J’étudie le code pour le parfaire a mon besoin.

J'ai juste pour l'instant un problème,

J'ai bien fait 2 zones de textes, mais dans la première il y a le nom du fichier et dans la deuxième, l'adresse du fichier.

Quoiqu'il en soit, merci 1000 fois.
Kevin
HardLienWare 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 13h08.


 
 
 
 
Partenaires

Hébergement Web