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 25/05/2011, 00h29   #1
Invité de passage
 
Femme
Inscription : mai 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mai 2011
Messages : 11
Points : 3
Points : 3
Par défaut Importation de fichiers Excel

Bonjour,
Pouvez vous m'aider a trouvé une solution correcte pour importer des fichiers excel dans une table deja existante ?
Merci
ghizlanebenkirane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 04h25   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 962
Points : 30 962
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Sujet vaste avec de multiples réponses possibles.

Est-ce une feuille Excel entière ou une partie de feuille ?

Il faudrait que tu nous donnes la structure de l'ensemble (table et feuille) pour que les membres du forum puissent te donner la méthode la mieux adaptée à ton cas.

Sans détail, c'est

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 09h51   #3
Invité de passage
 
Femme
Inscription : mai 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mai 2011
Messages : 11
Points : 3
Points : 3
Bonjour

Merci pour votre réponse assez vite
Dans access j’ai un formulaire que je remplie et j’enregistre dans une table T_PROSPECTS
Et à la fin j’affiche les infos dans un tableau
Je souhaite ajouter un bouton IMPORT FICHIER qui me permet d’aller sélectionner le fichier (NB le nom des fichiers peuvent changer ou garder qu’une partie fix « fiche_prospect_ ») le copier dans un répertoire et prendre quelques cellules et enregistrer dans la table existante dans les champs adéquats
En gros soit je remplie le formulaire soit j'importe les celulles dans la table(sans les affichez dans le formulaire)

MERCI POUR VOTRE AIDE
ghizlanebenkirane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 10h20   #4
Membre actif
 
Homme Quentin D.
Étudiant
Inscription : avril 2011
Messages : 175
Détails du profil
Informations personnelles :
Nom : Homme Quentin D.
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : avril 2011
Messages : 175
Points : 165
Points : 165
Bonjour,

On attend toujours la structure de tes feuilles excel par rapport à ta table...
Si tu veux qu'on t'aide il nous faut :

Nombre de colonne des feuilles excel avec les noms des colonnes.

Les feuilles excel sont-elles toutes identiques? Porte-t-elle le même nom?

Quand tu dis quelques cellules, est-ce que tu importe vraiment des cellules ciblées du genre la cellule C38 et la E79, ou bien tu importes des données avec des critères d'existences dans la table?
Cad j'ai une donnée dans ma feuille et qui est déjà dans ma table et du coup, je ne veux pas l'importer.

Ensuite, la structure de ta table : nombre de champs avec le nom de chaque champ. Sont-ils au même nom que dans les fichiers excel, à la même place?

Voilà avec déjà ces informations je pourrais t'aider ^^.
__________________
Pourquoi faire aujourd'hui ce que l'on peut remettre à demain ?
Nitromard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 15h56   #5
Invité de passage
 
Femme
Inscription : mai 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : mai 2011
Messages : 11
Points : 3
Points : 3
Par défaut Import selective fichier excel dans access

Merci pour vos réponse mais j'ai trouvé ce que je cherchais, je vais le posté comme meme pour les qui aurons besoin de ca.
et si possible de vérifier que c'est correcte pour ne pas faire trompé les gens

Option Compare Database
Option Explicit

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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
Public nom_repertoire As String
'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
    '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
 
 
Private Sub CreateDirectory()
    Dim OFS, MonDossier
    Dim Nom_fichier, path_Source, path_Destination As String
    Dim MyPath As String
 
    MyPath = CurDir & "\dossier racine\sousdossier\"
 
    path_Source = OuvrirUnFichier(Application.hWndAccessApp, "Parcourir", 1, "Tous", "*.*", "D:\")
    path_Destination = MyPath
 
    Set OFS = CreateObject("Scripting.FileSystemObject")
 
    If Not (OFS.FolderExists(path_Destination)) Then
        Set OFS = CreateObject("Scripting.FileSystemObject")
        Set MonDossier = OFS.CreateFolder(path_Destination)
    End If
 
    If InStr(path_Source, "\") = 0 Or Right(path_Source, 1) = "\" Then
        Nom_fichier = ""
        MsgBox ("le nom du fichier saisi est incorrect")
 
    Else
        Nom_fichier = Mid(path_Source, InStrRev(path_Source, "\") + 1)
        'Copie du fichier
        FileCopy path_Source, path_Destination & Nom_fichier
       ' Fichier.Value = path_Destination & Nom_fichier
    End If
    Dim oApp As Excel.Application
    Dim oWkb As Excel.Workbook
    Dim oWSht As Excel.Worksheet
 
Set oApp = CreateObject("excel.application")
Set oWkb = oApp.Workbooks.Open(path_Destination & Nom_fichier)
Set oWSht = oWkb.Worksheets("FICHE DE PROSPECTION")
 
DoCmd.SetWarnings False
 
'table T_prospect dans ma base de donnees
'values= les valeurs qui se trouvent dans mon fichier excel
 
SQL = "insert into [T_PROSPECT] ( [ContactInitial],[DateContactInitial],[TypeContact],[NomGroupeSociete],[NomEntreprise],[Dirigeant],[FormeJuridique],[SecteurActivite],[ActiviteEntreprise],[CA],[AdresseSociete],[EmailSociete],[SiteInternet],[TelephoneSociete],[NomProspect],[PrenomProspect],[FonctionProspect],[AdresseProspect],[EmailProspect],[TelephoneProspect],[MobileProspect],[q1],[q2],[q3],[q4],[DetailBesoins],[CR]) values (" & Chr(34) & oWSht.Cells(5, 2) & Chr(34) & ", " & Chr(34) & oWSht.Cells(5, 6) & Chr(34) & ", " & Chr(34) & oWSht.Cells(7, 2) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(11, 2) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(12, 2) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(13, 2) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(14, 2) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(15, 2) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(21, 2) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(17, 2) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(18, 2) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(19, 2) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(20, 2) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(16, 2) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(11, 6) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(12, 6) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(13, 6) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(14, 6) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(15, 6) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(16, 6) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(17, 6) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(26, 4) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(27, 4) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(28, 4) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(29, 4) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(34, 1) & Chr(34) & ", " & _
Chr(34) & oWSht.Cells(34, 5) & Chr(34) & ");"
 
DoCmd.RunSQL SQL
 
Set OFS = Nothing
Set oWSht = Nothing
Set oWkb = Nothing
Set oApp = Nothing
DoCmd.SetWarnings True
ListeProspects.Requery     
End Sub
 
'bouton dans formulaire
 
Private Sub import_Click()
CreateDirectory
End Sub
Citation:
Envoyé par Nitromard Voir le message
Bonjour,

On attend toujours la structure de tes feuilles excel par rapport à ta table...
Si tu veux qu'on t'aide il nous faut :

Nombre de colonne des feuilles excel avec les noms des colonnes.

Les feuilles excel sont-elles toutes identiques? Porte-t-elle le même nom?

Quand tu dis quelques cellules, est-ce que tu importe vraiment des cellules ciblées du genre la cellule C38 et la E79, ou bien tu importes des données avec des critères d'existences dans la table?
Cad j'ai une donnée dans ma feuille et qui est déjà dans ma table et du coup, je ne veux pas l'importer.

Ensuite, la structure de ta table : nombre de champs avec le nom de chaque champ. Sont-ils au même nom que dans les fichiers excel, à la même place?

Voilà avec déjà ces informations je pourrais t'aider ^^.
Fichiers attachés
Type de fichier : xls Trame_Fiche_Prospect1.xls (36,5 Ko, 5 affichages)
ghizlanebenkirane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 16h12   #6
Membre actif
 
Homme Quentin D.
Étudiant
Inscription : avril 2011
Messages : 175
Détails du profil
Informations personnelles :
Nom : Homme Quentin D.
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : avril 2011
Messages : 175
Points : 165
Points : 165
Ok, c'était donc vraiment des cellules ciblées à importer.
Tant mieux que ce programme fonctionne ^^.

N'oublie pas de mettre la discussion en résolue. (se trouve en bas de page)

Bonne continuation!
__________________
Pourquoi faire aujourd'hui ce que l'on peut remettre à demain ?
Nitromard 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 15h21.


 
 
 
 
Partenaires

Hébergement Web