Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
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 27/05/2011, 23h30   #1
Invité de passage
 
Homme Pierre Gaudreault
Développeur informatique
Inscription : novembre 2006
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Pierre Gaudreault
Localisation : Canada

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2006
Messages : 2
Points : 1
Points : 1
Envoyer un message via MSN à Kalymar
Par défaut Importer fichier Excel dans une table Access

Bonjour,

C'est ma première application dans laquelle je veux importer des données d'Excel.

J'ai basé mon code sur la discussion de NITROMARD avec TAZ.

J'obtiens une erreur sur la ligne 46 du code avec le message d'Access "Run-time error '-2147217900 (80040e14): Syntax error in FROM clause.

Mon fichier Excel est le suivant "C:\Kalymar\Importation\Inscriptions.xls" et le nom du classeur ou feuille (le nom situé en bas des données) est toujours "Inscriptions". Les titres de colonnes peuvent différer d'une fois à l'autre mais les informations que je veux importer sont toujours dans les 23 premières colonnes.

J'apprécierais beaucoup recevoir la réponse à mon problème.

Merci beaucoup.


Mon code est le suivant :

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
 
Private Sub Importer_Click()
On Error GoTo Handler
    Dim connExcel As New ADODB.Connection
    Dim connAccess As ADODB.Connection
    Dim tabImportation As ADODB.Recordset
    Dim excInscriptions As New ADODB.Recordset
    Dim j As Integer
    Dim NombreChamps As Long
    Dim Fichier As String
 
    Fichier = "C:\Kalymar\Importation\Inscriptions.xls"
    NombreChamps = 22 ' = Nombre de champs à importer (23 premiers champs) moins 1
 
    '
    ' Connection à la base Access
    '
    Set connAccess = CurrentProject.Connection
 
    '
    ' Connection à la table tabImportation
    '
    Set tabImportation = New ADODB.Recordset
    tabImportation.Open "SELECT * FROM Importation", connAccess, adOpenKeyset, adLockOptimistic
 
    '
    ' Supprimer le contenu de la table tabImportation si elle contient des données
    '
    If tabImportation.BOF = False Then
        Do Until tabImportation.EOF
            tabImportation.Delete
            tabImportation.MoveNext
        Loop
    End If
 
    '
    ' Connection au fichier Excel excInscriptions
    '
    connExcel.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & Fichier & ";" & _
      "Extended Properties=""Excel 8.0;"""
 
    '
    ' Connection à la feuille nommée "Inscriptions"
    '
    excInscriptions.Open "SELECT * FROM [" & Inscriptions & "] ", connExcel, adOpenStatic
 
    '
    ' Importer les données de la feuille Excel dans la table
    '
    Do While Not (excInscriptions.EOF)
        tabImportation.AddNew
        For j = 0 To NombreChamps
            tabImportation.Fields(j) = excInscriptions.Fields(j).Value
        Next j
        tabImportation.Update
        excInscriptions.MoveNext
    Loop
 
    MsgBox "L'importation est terminée."
    DoCmd.Close acForm, "Importation3"
 
Fin:
    On Error Resume Next
    excInscriptions.Close
    Set excInscriptions = Nothing
    tabImportation.Close
    Set tabImportation = Nothing
    connAccess.Close
    Set connAccess = Nothing
    connExcel.Close
    Set connExcel = Nothing
    Exit Sub
Handler:
    MessageErreur Err.Number, Err.Description, "Importation3 - Importer_Click"
    Resume Fin
End Sub
Kalymar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2011, 01h35   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 616
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 616
Points : 30 961
Points : 30 961
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Est-ce que la feuille qui comporte les données s'appelle Inscriptions comme le nom du classeur ?

Si c'est le cas, pourquoi le sortir de ta chaine SQL ? De plus il faut ajouter $ au nom de la feuille.

Essayes :

Code :
excInscriptions.Open "SELECT * FROM  Inscriptions$", connExcel, adOpenStatic

Lis ce tuto tu y trouveras des choses intéressantes : http://silkyroad.developpez.com/VBA/ClasseursFermes/

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 28/05/2011, 02h02   #3
Invité de passage
 
Homme Pierre Gaudreault
Développeur informatique
Inscription : novembre 2006
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Pierre Gaudreault
Localisation : Canada

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2006
Messages : 2
Points : 1
Points : 1
Envoyer un message via MSN à Kalymar
Merci Philippe mais j'avais déjà corrigé mon code afin d'inclure le $ à la fin du nom de la feuille.
Kalymar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2011, 02h05   #4
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 616
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 616
Points : 30 961
Points : 30 961
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re

Citation:
Envoyé par Philippe JOCHMANS Voir le message
Est-ce que la feuille qui comporte les données s'appelle Inscriptions comme le nom du classeur ?
si c'est pas le nom de la feuille qu'y a-t-il dans cette variable ?

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 28/05/2011, 15h09   #5
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,

Le nom de ta feuille excel ne doit pas être une variable, tu dois enlever les " & & " autour du mot inscriptions car c'est un paramètre déjà existant et non pas une variable.
__________________
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 20h14.


 
 
 
 
Partenaires

Hébergement Web