IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Syntax error in FROM clause


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Inscrit en
    Mai 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 61
    Par défaut Syntax error in FROM clause
    Bonjour a tous!

    J'ai un programme qui permet de transvaser les donnees d'un fichier CSV dans un fichier Access grace a une macro Excel.

    Par contre il me met "Syntax error in FROM clause" comme erreur sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        CsvRst.Open "SELECT * FROM " & FichCSV, Csv_CN, _
            adOpenStatic, adLockOptimistic
    Et je vois pas mon erreur etant novice en VBA...

    Qlln pourrait m'aider? =)

    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Sub tranfertCSV_Vers_NouvelleTableAccess()
        'Transfére un fichier CSV vers une nouvelle table Access
        'depuis une macro Excel.
        '
        'Nécessite d'activer la référence
        '"Microsoft ActiveX Data Objects x.x Library
        '
     
        Dim AccessCn As ADODB.Connection
        Dim AccessRst As ADODB.Recordset
        Dim Csv_CN As New ADODB.Connection
        Dim CsvRst As New ADODB.Recordset
        Dim DossierCSV As String, NomTable As String
        Dim FichCSV As String, MaBase As String
        Dim nbEnr As Long
     
        'Répertoire du fichier CSV
        DossierCSV = "H:\Projet GDP"
        'Nom du fichier CSV à transfèrer
        FichCSV = "table.csv"
        'Chemin et nom de la base Access
        MaBase = "H:\Projet GDP\BaseAccess.accdb"
        'Nom de la nouvelle Table Access
        NomTable = "MaNouvelleTable"
     
     
        'Connection au fichier CSV
        Csv_CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
            DossierCSV & ";Extended Properties='text;FMT=Delimited'"
        'Requète dans le fichier CSV
        CsvRst.Open "SELECT * FROM " & FichCSV, Csv_CN, _
            adOpenStatic, adLockOptimistic
     
        'Connection à la base de données Access
        Set AccessCn = New ADODB.Connection
        AccessCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source=" & MaBase
     
     
        Csv_CN.Execute "SELECT * INTO [" & NomTable & "] IN '" & _
            MaBase & "' From [" & FichCSV & "]", nbEnr
     
     
        AccessCn.Close
        CsvRst.Close
        Csv_CN.Close
        Set AccessRst = Nothing
        Set AccessCn = Nothing
        Set CsvRst = Nothing
        Set Csv_CN = Nothing
    End Sub

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut,à priori, la chaine d'accès au fichier devrait être qqch comme : DossierCSV &"\" & FichCSV ? de même pour la MaBase et NomTable ?

  3. #3
    Membre Expert

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Billets dans le blog
    1
    Par défaut
    question : est-ce VBA ou la requête qui retourne le message d'erreur
    (mon peu d’expérience sur les erreur requêtes ont toujours été lié au SQL plutôt qu'au VBA)

  4. #4
    Membre actif
    Inscrit en
    Mai 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 61
    Par défaut
    Jai bien change la chaine d'acces au fichier, j'ai toujours le meme message d'erreur -_-

    Et c'est un message VBA =)

    Je pense que ca vient de la syntaxe de ma ligne de prog mais je vois pas quoi

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Re,la chaine de connexion était donnée pour une base Access < 2007 (*.mdb)

    http://www.developpez.net/forums/d33...r-fichier-csv/

    cette chaine différe avec 2007 ; Provider=Microsoft.ACE.OLEDB.12.0 à vérifier

  6. #6
    Membre actif
    Inscrit en
    Mai 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 61
    Par défaut
    Je pense que ca va aider pour la 'Connection à la base de données Access Merci!

    Mais ma 'Requète dans le fichier CSV plante toujours...

  7. #7
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Re,et comme je n'ai pas Access 2007,je ne vais pas pouvoir aller plus loin
    sinon via une recherche http://www.google.fr/#sclient=psy&hl...w=1015&bih=727

    PS: par acquis de conscience je viens de tester avec Excel 2002 et Access 2002 et tout est OK
    rePS : un lien pour les chaines de connexion http://www.connectionstrings.com/

  8. #8
    Membre actif
    Inscrit en
    Mai 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 61
    Par défaut
    Merci quand meme!

    Sinon en gros je souhaite importer un fichier csv dans un fichier Access.

    J'ai adapter le programme d'apres
    http://excel.developpez.com/faq/?pag...sfertCsvAccess

    Mais je n'arrive pas a le faire tourner a cause de l'erreur decrite ci desous

    Si qqln a une autre idee que ce que j'essai de faire, n'hesitez pas!

  9. #9
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Re,sinon il y a la possibilité depuis Access d'importer des données externes ?

  10. #10
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Quel le séparateur de champ dans ton csv?

    PGZ

  11. #11
    Membre actif
    Inscrit en
    Mai 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 61
    Par défaut
    Mon séparateur de champs est la virgule.

    Il s'agit d'un historique de cours de bourse téléchargé sur yahoo finance:

    http://ichart.finance.yahoo.com/tabl...90&ignore=.csv


    @kiki29, j'ai besoin d'automatiser sous macro l'importation de fichier csv

  12. #12
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Re,

    J'essaierais bien ces modifs, pour l'ouverture de la connexion et du rst
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Csv_CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
            DossierCSV & ";Extended Properties=""text;HDR=YES;FMT=Delimited(,)"""
     
     CsvRst.Open "SELECT * FROM " & FichCSV, Csv_CN, adOpenStatic, adLockOptimistic, acCmdText
    PGZ

  13. #13
    Membre actif
    Inscrit en
    Mai 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 61
    Par défaut
    J'ai change. Rien n'y fait. J'ai toujours le meme message d'erreur a la meme ligne. Je désespère

    Apres peut etre ai je fais une mauvaise manip je sais pas...J'ai pourtant les bonnes bibliotheques
    Est ce que ce code marche chez vous?
    Il est tire de
    http://excel.developpez.com/faq/?pag...sfertCsvAccess

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Sub tranfertCSV_Vers_NouvelleTableAccess()
        'Transfére un fichier CSV vers une nouvelle table Access
        'depuis une macro Excel.
        '
        'Nécessite d'activer la référence
        '"Microsoft ActiveX Data Objects x.x Library
        '
     
        Dim AccessCn As ADODB.Connection
        Dim AccessRst As ADODB.Recordset
        Dim Csv_CN As New ADODB.Connection
        Dim CsvRst As New ADODB.Recordset
        Dim DossierCSV As String, NomTable As String
        Dim FichCSV As String, MaBase As String
        Dim nbEnr As Long
     
        'Répertoire du fichier CSV
        DossierCSV = "H:\Projet GDP"
        'Nom du fichier CSV à transfèrer
        FichCSV = "table.csv"
        'Chemin et nom de la base Access
        MaBase = "H:\Projet GDP\BaseAccess.accdb"
        'Nom de la nouvelle Table Access
        NomTable = "MaNouvelleTable"
     
     
        'Connection au fichier CSV
        Csv_CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
            DossierCSV & ";Extended Properties=""text;HDR=YES;FMT=Delimited(,)"""
     
        'Requète dans le fichier CSV
        CsvRst.Open "SELECT * FROM " & FichCSV, Csv_CN, adOpenStatic, adLockOptimistic, acCmdText
     
        'Connection à la base de données Access
        Set AccessCn = New ADODB.Connection
        AccessCn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                       "Data Source=" & MaBase
     
     
        Csv_CN.Execute "SELECT * INTO [" & NomTable & "] IN '" & _
            MaBase & "' From [" & FichCSV & "]", nbEnr
     
     
        AccessCn.Close
        CsvRst.Close
        Csv_CN.Close
        Set AccessRst = Nothing
        Set AccessCn = Nothing
        Set CsvRst = Nothing
        Set Csv_CN = Nothing
    End Sub

  14. #14
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Re,

    J'ai chargé ton csv. J'ai enregistré le csv dans un répertoire à côté d'un classeur dans lequel j'ai fait cette procédure qui semble bien fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Sub OuvreRstSurCSV()
     
    Dim Csv_CN As New ADODB.Connection
    Dim CsvRst As New ADODB.Recordset
    Dim DossierCSV As String
    Dim FichCSV As String
    Dim i As Long
     
    'Répertoire du fichier CSV
    DossierCSV = ThisWorkbook.Path & "\"
    'Nom du fichier CSV à transfèrer
    FichCSV = "table.csv"
     
     
    'Connexion au fichier CSV
    Csv_CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DossierCSV & ";Extended Properties=""text;HDR=Yes;FMT=Delimited(,)"""
    'MsgBox Csv_CN.ConnectionString
    Csv_CN.Open
     
    'Requête dans le fichier CSV
    CsvRst.Open "SELECT * FROM [" & FichCSV & "];", Csv_CN, adOpenStatic, adLockReadOnly, adCmdText
     
    With ThisWorkbook.Worksheets(1)
        .UsedRange.ClearContents
        .Range("A2").CopyFromRecordset CsvRst
        For i = 1 To CsvRst.Fields.Count
            .Cells(1, i) = CsvRst.Fields(i - 1).Name
        Next i
    End With
     
    CsvRst.Close
    Csv_CN.Close
     
    Set CsvRst = Nothing
    Set Csv_CN = Nothing
    End Sub
    Apparemment, dès que j'enlève les crochets autour de FichCSV j'ai une erreur de clause FROM.

    Cordialement,

    PGZ

  15. #15
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Re,
    PS: par acquis de conscience je viens de tester avec Excel 2002 et Access 2002 et tout est OK
    ici il s'agit d'une base 2007 (*.accdb) donc la chaine serait en plus à adapter
    quant au CSV que tu testes effectivement une , n'est pas un ;

  16. #16
    Membre actif
    Inscrit en
    Mai 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 61
    Par défaut
    Ça marche enfin!

    Super! Merci beaucoup pour votre patience et la qualité de vos réponses!
    Bonne fin de Week end!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Syntax error in FROM clause.
    Par Marie_7 dans le forum VB.NET
    Réponses: 2
    Dernier message: 10/03/2014, 09h45
  2. Requête complexe et error type : missing FROM-clause
    Par sharingan_ dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/04/2013, 11h22
  3. Syntax error converting datetime from character string
    Par amirad dans le forum Développement
    Réponses: 6
    Dernier message: 15/05/2009, 10h09
  4. Syntax error in FROM clause.
    Par Fjord dans le forum ASP.NET
    Réponses: 0
    Dernier message: 18/12/2008, 12h08
  5. Réponses: 3
    Dernier message: 07/03/2008, 14h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo