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 :

écrire dans un classeur fermé


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    consultant BTP
    Inscrit en
    Février 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant BTP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 51
    Par défaut écrire dans un classeur fermé
    Bonjour,
    Je suis actuellement entrain de faire le tuto sur la lecture et l'ecriture dans un classeur fermé. Cependant je bloque sur l'écriture, en effet j'ai créé un fichier Base.xls dans C:\. J'ai ensuite créé un fichier excel avec la macro du tuto:
    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
    Sub ajoutEnregistrement()
        Dim Cn As ADODB.Connection
        Dim Fichier As String, Feuille As String, strSQL As String
        Dim LaDate As Date
        Dim PrixUnit As Integer
        Dim leNom As String, lePrenom As String
     
        Fichier = "C:\Base.xls"
        Feuille = "Feuil1"
     
        'Les données à insérer:
        LaDate = CDate("26/05/2006")
        leNom = "NomTest"
        lePrenom = "PrenomTest"
        PrixUnit = 40
     
        Set Cn = New ADODB.Connection
     
        With Cn
            .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 [Feuil1$] VALUES (#" & LaDate & "#, " & _
            "'" & leNom & "', " & _
            "'" & lePrenom & "', " & _
            PrixUnit & ")"
     
        MsgBox strSQL
        Feuille = "Feuil2"
     
        Cn.Execute strSQL
     
        Cn.Close
        Set Cn = Nothing
    End Sub
    Et à l'execution un message d'erreur apparait :
    Erreur d'exécution '-2147217900 (80040e14)':
    [Microsoft][Pilote ODBC Excel] Le nombre de valeurs de la requete doit coincider avec le nombre de champs destination.

    Ou est mon erreur ?????? Merci

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    As-tu respecté ceci dans le classeur fermé?
    Ce chapitre montre comment ajouter des enregistrements, à la suite des données existantes dans un classeur structuré comme une base de données. La première ligne sert à indiquer le nom des champs, à partir de la première colonne (A), et les enregistrements sont ensuite ajoutés automatiquement dans les lignes suivantes.

  3. #3
    Membre averti
    Homme Profil pro
    consultant BTP
    Inscrit en
    Février 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant BTP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 51
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            strSQL = "INSERT INTO [Feuil1$]([LaDate],[leNom],[lePrenom],[PrixUnit]) VALUES (" & "12/12/12" & ", " & "'" & "test" & "', " & "'" & "test" & "', " & 50 & ")"
    Bonjour,
    J'ai ajouté le nom de mes colonnes dans la macro ainsi que des valeurs bidons directement, resultat plus de message d'erreur mais il n'ecrit toujours pas dans mon classeur ....
    Les celulles allant de A1 àD1 contiennent bien le nom des 4 champs a remplir.
    Merci

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Les deux solutions fonctionnent correctement.

    Soit la première et tu ne dois pas tenir compte du nom des champs dans le classeur fermé mais respecter le nombre de champs. Tu pourrais très bien avoir en A1 : "aaa", B1 : "bbb", C1 : "ccc" et D1 : "ddd".

    Soit dans la seconde solution, ne pas tenir compte du nombre de champs dans le classeur fermé mais respecter le nom exact des champs à compléter comme tu l'as fait.

    Bref, d'ici...je ne vois pas où se produit l'erreur.

  5. #5
    Membre averti
    Homme Profil pro
    consultant BTP
    Inscrit en
    Février 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant BTP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 51
    Par défaut
    Bonjour,
    Moi non plus je ne trouve pas l'explication.
    Existe-t-il une manipulation a faire pour definir les champs utilisés sur le fichier qui contient ma base de donnée.
    Merci.

  6. #6
    Membre averti
    Homme Profil pro
    consultant BTP
    Inscrit en
    Février 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant BTP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 51
    Par défaut
    Bonjour,
    Bon cette fois ça y est cela marche j'ai du supprimmer mes colonnes puis les renommer et j'ai mis a jour le code résultat cela fonctionne.
    Cependant le code final me parait ... bizard.
    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 ajoutEnregistrement()
        Dim Cn As ADODB.Connection
        Dim Fichier, Feuille, strSQL As String
        Dim leprix As Integer
        Dim Nom, Prenom As String
     
        Fichier = "C:\Base.xls"
        Feuille = "Feuil1"
     
        'Les données à insérer:
        nvDate = CDate("3/05/2012")
        Nom = "NomTest"
        Prenom = "PrenomTest"
        leprix = 40
     
        Set Cn = New ADODB.Connection
     
     
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
            & Fichier & ";Extended Properties=""Excel 12.0;HDR=Yes;"""
            .Open
        End With
     
        strSQL = "INSERT INTO [" & Feuille & "$]([LaDate],[leNom],[lePrenom],[PrixUnit]) VALUES ('" & nvDate & "', '" & Nom & "', '" & Prenom & "', '" & leprix & "')"
     
        'strSQL = "INSERT INTO [Feuil1$]([LaDate],[leNom],[lePrenom],[PrixUnit]) VALUES (" & "12/12/12" & ", " & "'" & "test" & "', " & "'" & "test" & "', " & 50 & ")"
        ',[leNom],[lePrenom],[PrixUnit]
        '& "', '" & Nom & "', '" & Prenom & "', '" & leprix
     
        Cn.Execute strSQL
        Cn.Close
        Set Cn = Nothing
     
    End Sub

Discussions similaires

  1. Lire et écrire dans les classeurs Excel fermés
    Par zidenne dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/10/2013, 15h22
  2. [XL-2007] Lire et écrire dans les classeurs Excel fermés
    Par jijie dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/03/2013, 14h28
  3. écrire dans un classeur fermé
    Par rico99 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/07/2010, 21h48
  4. [XL-2003] Lire et écrire dans les classeurs Excel fermés
    Par skan_one dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/07/2009, 14h34
  5. Copier une ligne et écrire dans un classeur fermé .
    Par BRUNO71 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/12/2007, 22h24

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