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 29/12/2010, 15h32   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 4
Points : 0
Points : 0
Par défaut Importation fichier excel (chemin)

Salut à tous !

Je travaille en ce moment sur un projet de gestion de disques... J'ai dans ce projet, l'obligation de créer un bouton d'importation de données à partir d'un fichier excel, cela grâce à une macro... Rien de bien compliqué en soit, seulement, je dois rentrer dans la macro le chemin du fichier excel... Or si je donne ma base de données à un utilisateur lambda, celui-ci ne saura pas modifier ce chemin...
Je souhaiterais donc que ce soit l'utilisateur qui rentre le chemin (manuellement ou via un explorateur de fichiers)... Pour cela, j'avais créé une MsgBox de saisie (ne sachant pas faire un explorateur de fichiers), mais impossible de mettre les données saisies dans la macro...
C'est pourquoi je sollicite votre aide ^^

A+
Im!P
imip549 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 15h41   #2
Membre régulier
 
Alexis CANET
Étudiant
Inscription : novembre 2009
Messages : 95
Détails du profil
Informations personnelles :
Nom : Alexis CANET
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 95
Points : 70
Points : 70
Bonjour à toi,

pour reprendre ce que tu nous dit la, pour etre sur que je comprenne bien ce que tu veux:

Sous ACCESS tu veux importer un fichier excel qui va donc te remplir une table?

Tu voudrai que cette import soit dynamique? fénétre de sélction ou zone de saisi de l'adresse?

Quels qont tes connaisses en VBA?

Alex
Deustalos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 16h00   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 4
Points : 0
Points : 0
Oui c'est tout à fait ça Si possible, fenetre de selection...

Quant à mes connaissances... Un peu plus que débutant, on va dire intermédiaire ^^
imip549 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 16h41   #4
Membre régulier
 
Alexis CANET
Étudiant
Inscription : novembre 2009
Messages : 95
Détails du profil
Informations personnelles :
Nom : Alexis CANET
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 95
Points : 70
Points : 70
Okay alors c'est partie le code pour ta fenetre de séléction (à méttre dans un module)

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
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 & "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 = CurrentDb.Name
        PathStripPath (RepParDefaut)
        .lpstrInitialDir = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Mid$(RepParDefaut, 1, _
InStr(1, RepParDefaut, vbNullChar) - 1)))
        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

le code pour séléctionner ton fichier et l'importer (dans un autre module)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Function Import_Files ()
On Error GoTo Import_Files_Err
 
    Dim myPath As String
 
    myPath = OuvrirUnFichier(0, "Sélectionnez Le fichier XLS d'import des AC - MP - SF", 1, "XLS File", "XLS") 'Appel du module pour la fenétre de séléction
 
    DoCmd.SetWarnings False
 
 
    DoCmd.TransferSpreadsheet acImport, 8, "TABLE DE DESTINATION", myPath, True, faux
    DoCmd.SetWarnings True
 
 
 
Import_Files_Exit:
    Exit Function
 
Import_Files_Err:
    MsgBox Error$
    Resume Import_Files_Exit
 
End Function

et pour finir Le code à mettre sur ton bouton dans un formulaire:

Code :
1
2
3
4
5
6
7
Private Sub Bouton_Click()
 
Import_Files '(Appel de la fonction dans le module)
 
MsgBox ("Mise à Jour des données")
 
End Sub
Voilou, Fait bien attention que ta table de destination ait les mêmes champs que tes entêtes de ton ficheir Excel.

Dit moi si cela fonctionne chez toi.

@+

Alex

PS: je croi qu'il faut que tu coche la référence dans l'éditeur vb: Microfoft Common Dialog Control

Et je t'invite à regarder ceci

Il y à plein d'info sur ce que tu cherche à faire
Deustalos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 16h59   #5
Invité de passage
 
Inscription : décembre 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 4
Points : 0
Points : 0
Super !!
Ca marche nickel

Merci beaucoup, jvais étudier de près le code...
Merci pour ta réactivité

A+ et bonne journée
imip549 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 17h31   #6
Membre régulier
 
Alexis CANET
Étudiant
Inscription : novembre 2009
Messages : 95
Détails du profil
Informations personnelles :
Nom : Alexis CANET
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 95
Points : 70
Points : 70
De rien, bonne continuation à toi.
PS: oubli pas de passer en Résolu.
Deustalos est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h18.


 
 
 
 
Partenaires

Hébergement Web