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 :

INSERT dans un classeur xlsx par ADO [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Octobre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2020
    Messages : 17
    Par défaut INSERT dans un classeur xlsx par ADO
    Bonjour à chacun
    Depuis quelques jours, j'apprends à utiliser ADO en EXCEL VBA. J'arrive très bien à lire dans mon classeur et à récupérer les données. Par contre, dès que je tente un INSERT, j'ai le message "L'opération doit utiliser une requête qui peut être mise à jour". J'ai beaucoup fouillé sur Internet et n'ai rien trouvé de satisfaisant, à part que ça pourrait être un problème d'autorisations, mais mes fichiers se trouvent sur mon NAS, et je suis administrateur partout... D'ailleurs, j'ai fait un essai en les mettant sur mon ordinateur, et ça ne change rien.
    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
     
    Dim ConnexionDonnees As ADODB.Connection     'Connexion au classeur des données
     
       Set ConnexionDonnees = New ADODB.Connection
        With ConnexionDonnees
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
                & FichierDonnees & ";Extended Properties=""Excel 12.0 Xml;IMEX=1;HDR=YES;ReadOnly=False;"""
            .Open
        End With
     
    Set Commande = New ADODB.Command
    Set Enregistrements = New ADODB.Recordset
     
    Requete = "INSERT INTO [Ecritures$] (Cle, NumCpt) VALUES (17, 1)"
     
    With Commande
        .ActiveConnection = ConnexionDonnees
        .CommandType = adCmdText
        .CommandText = Requete
        .Execute
    End With
    Command.Close
    Set Command = Nothing
    Set Enregistrements = Nothing
     
    'On ferme la connection aux données
        ConnexionDonnees.Close
        Set ConnexionDonnees = Nothing
    Merci à ceux qui pourront m'aider !

  2. #2
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 560
    Par défaut
    Bonjour,
    MEX=1 converti tous les champs au format texte, en revanche la table devient en lecture seule !

    Il faut supprimer MEX=1; de ta chaîne de connexion si tu veux faire de l'insert ou update.

  3. #3
    Membre averti
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Octobre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2020
    Messages : 17
    Par défaut Merci
    C'est génial d'avoir aussi rapidement la bonne solution !

    Merci

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Je pense qu'il y a mieux à faire qu'apprendre à utliser ADO avec Excel. Excel n'étant pas un SGBD (système de gestion de base de données), les limites sont vite atteintes.

    Quelle est ton utilisation d'Excel qui nécessite de manipuler Excel par ADO?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre averti
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Octobre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2020
    Messages : 17
    Par défaut Je sais
    Oui, Pierre, je suis convaincu de ce que tu me dis.
    Mais je t'explique:
    J'ai plus de 70 ans. J'ai programmé en Assembleur, en Fortran, en Algol, en PL1, en COBOL, en Basic, en VBA (ACCESS), un peu en PHP, etc.
    Outre Access, j'ai utilisé des SGBD relationnels sur des gros systèmes, et aussi un peu MySQL.

    Aujourd'hui, je m'amuse à réaliser une petite application pour gérer ma comptabilité familiale. J'ai Office 365, et je n'ai pas envie d'investir dans autre chose.
    J'ai commencé, il y a une quinzaine de jours, à m'intéresser aux tableaux structurés (ListObject) suite à une recherche sur Internet. Et puis mes recherches m'ont mené vers DAO, et je crois bien que c'est toi qui m'a conseillé d'utiliser plutôt ADO.

    Et, depuis hier, je m'intéresse à la programmation objet, dont j'ai tout juste entendu parler, mais je pense que je vais m'y mettre. Mes classes utiliseront ADO.

    J'ai regardé un peu Power Query, mais ça ne m'a pas donné envie de m'y mettre. Trop "Microsoft" à mon goût.

    En tout cas, merci pour ton aide et tes conseils, que je suivrais de près si j'avais ne serait-ce que 20 ans de moins.

    Voilà. Le vétéran a parlé.

    PS : quand je me présente comme assistant à maîtrise d'ouvrage, c'est la vérité; c'est ce que je faisais à la fin de ma vie professionnelle; j'étais consultant, spécialisé dans la conduite du changement de système d'information.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut Jihemel,

    Si tu t'amuses, c'est autre chose et on peut alors s'amuser ensemble
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre averti
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Octobre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2020
    Messages : 17
    Par défaut Réponse
    Et à ta phrase de Voltaire, à laquelle j'adhère, je réponds par une phrase d'Isaac Newton:
    "Les hommes construisent trop de murs et pas assez de ponts."

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Me demande s'il y a un message caché derrière ...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre averti
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Octobre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2020
    Messages : 17
    Par défaut Pas du tout
    Pas du tout.
    Cette citation fait partie de la signature de mes mails, en une quinzaine de langues différentes...

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

Discussions similaires

  1. [XL-365] Accès classeur XLSX par ADO
    Par jihemel34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/10/2020, 18h20
  2. Insertion dans un fichier trié par ordre croissant
    Par darkterreur dans le forum Langage
    Réponses: 14
    Dernier message: 20/09/2009, 19h39
  3. [VB.NET][MySQL]ID insertion dans une base MySQL par ODBC
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/03/2006, 10h58
  4. [ADO.NET] Problème avec Insert dans base de données
    Par mpascolo dans le forum Accès aux données
    Réponses: 9
    Dernier message: 24/01/2005, 09h36
  5. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34

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