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

VB 6 et antérieur Discussion :

Insertion de données dans Excel


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut Insertion de données dans Excel
    Bonjour,

    Dans une appli VB6, j'ai besoin d'ajouter des enregistrements dans une feuille Excel 2002.
    Voila le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Conn = "Driver={Microsoft Excel Driver (*.xls)}; DBQ="Test.xls"
    Set Conn1 = CreateObject("ADODB.Connection")
    Conn1.Open (Conn)
    insert into [Feuil3$] ([N° ordre], [Nom]) values('111', 'A')
    Conn1.Execute (mysql)
    Conn1.Close
    Set Conn1 = Nothing
    Et le message que je reçois.

    L'opération doit utiliser une requête qui peut être mise à jour.
    Après une journée de recherche, je m'en remets à vous si quelqu'un avait une piste pour régler ce problème.

    Par contre, aucun problème avec une requête SQL de type SELECT.

    Merci

  2. #2
    Membre éprouvé
    Avatar de wape
    Profil pro
    Inscrit en
    Février 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2003
    Messages : 90
    Par défaut
    Bonjour,

    Essaye éventuellement cette approche :

    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
    Private Sub Command1_Click()
     
       'Ajouter "Microsoft ActiveX Data Objects 2.X Library" (cf. menu Projet > Références...)
     
       Dim sCnx As String
       Dim sWbk As String
     
       Dim oCnx As New ADODB.Connection
       Dim oRst As New ADODB.Recordset
     
       sWbk = "C:\Test.xls" '<-- Chemin complet du classeur Excel
     
       'Ouvrir la connexion ADO
       sCnx = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
              "Data Source=" & sWbk & ";Extended Properties=Excel 8.0"
       oCnx.Open sCnx
     
       'Insérer les nouvelles valeurs
       With oRst
          '.CursorLocation = adUseClient
          .Open "SELECT * FROM [Feuil3$]", oCnx, adOpenStatic, adLockOptimistic
          .AddNew
          .Fields("N° ordre").Value = "111"
          .Fields("Nom").Value = "A"
          .Update
          .Close
       End With
     
       'Fermer la connexion ADO
       oCnx.Close
     
       'Libérer les ressources
       Set oRst = Nothing
       Set oCnx = Nothing
     
    End Sub
    wape

  3. #3
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Re,

    Merci, je regarderai ça en début de semaine prochaine because autre urgence.

  4. #4
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut pc75

    Déjà, je vois des irrégularités dans ton code, sur les deux premières lignes, à tout le moins.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Conn = "Driver={Microsoft Excel Driver (*.xls)}; DBQ="Test.xls"
    Set Conn1 = CreateObject("ADODB.Connection")
    Sur la première ligne, tu as la variable Conn et sur la deuxième ligne, c'est Conn1. Les deux noms ne concordent pas.

    Attention aux guillemets dans les chaînes de caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Conn1 = "Driver={Microsoft Excel Driver (*.xls)}; DBQ=""Test.xls"""
    Une façon d'insérer un guillemet dans une chaîne : le doubler. Exemple
    Les deux guillemets extérieurs délimitent la chaîne, les deux du centre servent à afficher un seul guillemet dans le Label1.

    Mais n'ayant pas vérifié la validité de ton code, il vaudrait mieux explorer aussi la solution proposée par wape.

    Ceci dit, si tu souhaite utiliser une autre méthode, tu peux utiliser les objets d'Excel en ajoutant une référence à Excel dans ton projet. Il y a un tutoriel que tu as peut-être déjà exploré : Utiliser Excel à partir de Visual Basic.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour

    En complément du lien de Zaza, cet article de Silkyroad devrait t'aider : Lire et modifier les propriétés des classeurs et autres fichiers.

    Starec

  6. #6
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Re,

    Tout d'abord, merci de vos réponses.

    J'ai testé la méthode de wape, et l'enregistrement a bien été créé.

    Par contre, je ne vois pas comment l'utiliser dans mon cas. Je me plante peut-être sur la démarche.

    En fait, j'ai deux feuilles avec exactement les mêmes colonnes. Le but de l'opération est de créer une troisième feuille avec les données de la première et y ajouter les données de la seconde qui n'existent pas déjà dans la première.
    Je dois ensuite appliquer un tri sur plusieurs colonnes dans cette troisième feuille.

    Merci à vous.

+ 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. Insertion de données dans un tableau depuis EXCEL VBA
    Par reda120 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/12/2013, 12h11
  3. automatiser l'insertion de données dans une bd
    Par matterazzo dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 24/10/2005, 01h06
  4. Récupérer des données dans excel
    Par alexia2 dans le forum MFC
    Réponses: 1
    Dernier message: 19/05/2005, 15h34
  5. Réponses: 7
    Dernier message: 12/10/2004, 16h43

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