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 :

Problème d'insertion de données feuille xls / insert into


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Par défaut Problème d'insertion de données feuille xls / insert into
    Bonjour,

    Je dois enregistrer un ensemble de ligne une par une dans un fichier xls. J'ai donc utilisé le code suivant dispo sur le net (merci à son auteur) :

    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
    Sub InsertRecord(ByVal nom As String, ByVal prenom As String, ByVal age As Integer)
        Dim Cnx As ADODB.Connection
        Dim fichier As String, Feuille As String, strSQL As String
     
        fichier = "d:\arboserveur\recapitulatif_erreurs.xls" 'chemin complet du fichier fermé
        Feuille = "Feuil1" 'Onglet où les données doivent être insérées
     
     
        Set Cnx = New ADODB.Connection
     
        With Cnx
            .Provider = "MSDASQL"
            .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
                "DBQ=" & fichier & "; ReadOnly=False;"
            .Open
        End With
     
        'Les données doivent être indiquées dans le même ordre que les champs dans la base de données.
        strSQL = "INSERT INTO [" & Feuille & "$] " & "VALUES ( '" & nom & "', '" & prenom & "', " & age & ")"
     
     
        Cnx.Execute strSQL
     
        Cnx.Close
        Set Cnx = Nothing
    End Sub
    J'ai bien un fichier excel, dont voici une capture d'écran :
    Colonne 1 en text
    Colonne 2 en text
    Colonne 3 en numérique



    Lors ce que je tente d'enregistrer en appelant la fonction d'execution de la requête j'ai le message suivant :

    "ODBC EXCEL : le nombre de valeurs de la requête doit coïncider avec le nombre de champs destination"

    Je pense que mon erreur est toute bête, mais après beaucoup de recherches, j'arrive pas à trouver :/

    Merci d'avance !

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    Bonjour,
    Lorsque tu utilises "insert to", le travail est facilité en nommant ta cible; dans ton exemple, nommes A1:C1 par ex:db_ecrire

    Ci joint des exemples basiques de liaisons avec ADO, celui qui te concerne est ecrire_db_fermé dans home_ado.xls
    il te reste à adapter aux conditions de ton appli (macro param^trée, noms ...)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Par défaut
    Merci de ta réponse, mais dans ta source on fais un select, on ajoute dans une cellule précise et on fais une MAJ. Je souhaiterais ajouter une ligne de 3 cellule, l'une à la suite des autres, il y a possibilité de faire ca via un insert into directement ?

    EDIT, j'ai trouvé une autre solution chez microsoft, assez simple à mettre en oeuvre, il faut cependant créer un nom de table (MyTable) dans le fichier xls avec les champs qu'il faut (ici FirstName, LastName).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    'Create a new connection object for Book1.xls
       Dim conn As New ADODB.Connection
       conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=C:\Book1.xls;Extended Properties=Excel 8.0;"
       conn.Execute "Insert into MyTable (FirstName, LastName)" & _
          " values ('Bill', 'Brown')"
       conn.Execute "Insert into MyTable (FirstName, LastName)" & _
          " values ('Joe', 'Thomas')"
       conn.Close

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    Si tu avais daigné lire mon message entièrement, je te conseillais de nommer ta cible !!!!
    et tu t'es trompé de macro pourtant indiquée dans mon message

    Désespérant...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Par défaut
    Je l'avais lus plusieurs fois, c'est juste que j'ai fais pas mal de recherches sur le nommage justement, ca ne semblait pas du tout évident pour moi dans un premier temps, c'est sur le tuto de microsoft que j'ai percuté. Je tiens à te remercier, tu m'as mis sur la piste, et au final avec le nomage de compris, ta solution était bonne c'est clair.

    Désolé si je t'ai blessé, c'était pas dans mes intentions bien au contraire.

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    Tu ne m'a pas blessé, mais écoeuré d'être encore une fois solidaire pour rien

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

Discussions similaires

  1. problème insertion de données dans feuille excel
    Par UDSP50 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/12/2014, 16h25
  2. [Débutant] Problème d'importation de données manquantes xls via MATLAB
    Par mainak29 dans le forum MATLAB
    Réponses: 10
    Dernier message: 14/08/2012, 16h14
  3. Réponses: 7
    Dernier message: 07/05/2009, 17h32
  4. problème d'insertion de données
    Par Falgan dans le forum ASP
    Réponses: 2
    Dernier message: 06/04/2004, 09h29
  5. [Interbase 7] Problème d'insertion de données
    Par Tuscelan dans le forum InterBase
    Réponses: 12
    Dernier message: 19/11/2003, 22h58

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