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 :

VBA: Transfert de données d'Excel vers Access [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut VBA: Transfert de données d'Excel vers Access
    Bonjour,

    Je tente de transférer des données présentes sur un feuille Excel vers un tableau Access mais je n'arrive pas à m'y retrouver.

    Je souhaiterai que mon programme efface le contenu précédent présent dans la table Access existante pour ensuite remplir avec les données présentes dans Excel.

    J'ai tenté quelque-chose à partir de recherche sur le forum mais ça ne semble pas adapté

    Pourriez-vous m'aider svp ?

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
     
        Dim cn As ADODB.Connection
        rs As ADODB.Recordset
        r As Long
     
        Set cn = New ADODB.Connection
     
        cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=C:\Users\kguesmia\Documents\Alerte CASSE appro\Casse_appro.accdb;"
     
        Set rs = New ADODB.Recordset
     
        rs.Open "Table1", cn, adOpenKeyset, adLockOptimistic, adCmdTable
     
        r = 2
     
        Do While Len(Range("A" & r).Formula) > 0
     
              With rs
     
                .AddNew 
     
                .Fields("Date jour") = Range("A" & r).Value
     
                .Fields("Base") = Range("B" & r).Value
     
                .Fields("Filiere") = Range("C" & r).Value
     
                .Fields("Cnuf") = Range("D" & r).Value
     
                .Fields("Ean13") = Range("J" & r).Value
     
                .Fields("Itm8") = Range("E" & r).Value
     
                .Fields("Désignation") = Range("G" & r).Value
     
                .Fields("DLC") = Range("M" & r).Value
     
                .Fields("DLV") = Range("N" & r).Value
     
                .Fields("Cdt") = Range("H" & r).Value
     
                .Fields("Upa") = Range("I" & r).Value
     
                .Fields("Date fin de vie") = Range("AC" & r).Value
     
                .Fields("Date casse") = Range("U" & r).Value 
     
              '  .Fields("Nb jrs avt début ct date") = Range("C" & r).Value
     
                .Fields("Colis Stk") = Range("L" & r).Value
     
                .Update 
     
            End With
     
            r = r + 1 
     
        Loop
     
     
        rs.Close

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    A première vu ton code d'insertion à l'air pas mal, bien qu'optimisable

    Pour vider la table, le plus rapide c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cn.Execute "Delete From Table1"
    Ça supprime tous les enregistrements de Table1

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Ton code permet l'ajout de données dans ta table à priori ça ca dont fonctionner non?

    Mais si tu veux supprimer les données de ta table li faut exécuter une requête de suppression avec.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cn.execute "Dlete from Table1;"
    Édite: Trop tard!

  4. #4
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut
    Le souci est des la première ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim cn As ADODB.Connection
    je rencontre l'erreur "Type défini par l'utilisateur non défini"

  5. #5
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim cn As Object,Rs as Object 
    Set cn =CreateObject("ADODB.Connection")
    Connexion..
     
     
     
    Set Rs=CreateObject("Adodb.RecordSet")
    Rs.open Sql,Cn

  6. #6
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Perso je trouve plus propre le rajout de la référence Microsoft ActiveX Data Objects Library

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par cerede2000 Voir le message
    Perso je trouve plus propre le rajout de la référence Microsoft ActiveX Data Objects Library
    les références aux Api ca fout la grouille en fonction des machines sur lesquels le programme tourne!

    Autant que faire ce peut utilises CreateObject!

  8. #8
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut
    cerede2000, ca ne fonctionne pas mieux avec Nom : Capture.PNG
Affichages : 523
Taille : 18,9 Ko

    Je vais essayer la méthode d'Rdurupt.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Si to application à été conçu sur un ordi 32bits et que ton client à une 64bits ca plante si tu utilises les références de vba!

  10. #10
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut
    Maintenant je suis planté à l'execution de cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=C:\Users\kguesmia\Documents\Alerte CASSE appro\Casse_appro.accdb;"
    Nom : Capture3.PNG
Affichages : 481
Taille : 6,9 Ko

  11. #11
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Ce n'est pas le bon que tu as pris
    Nom : Capture.PNG
Affichages : 451
Taille : 12,2 Ko

    @rdurupt : Je ne suis pas fan du tout late binding
    Je préfères les objets bien déclarés en plus on bénéficie comme ça d'intellisense
    Il est vraie en revanche que sur certains postes (Office x64 notamment) ça soit un peu problématique

  12. #12
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Citation Envoyé par kimou75 Voir le message
    Nom : Capture3.PNG
Affichages : 481
Taille : 6,9 Ko
    Oh la belle erreur automation

    Essaye avec le rajout de la référence correcte juste pour voir

  13. #13
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut
    Pas mieux

    Ça tombe KO à la même étape.

  14. #14
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    La ça sent pas bon, j'ai déjà rencontrés quelques cas comme ça, lié à des MAJ Windows ou Office qui avait mis le boxon dans l'accès aux API.

  15. #15
    Invité
    Invité(e)
    Par défaut
    Tu utilise un connexion pour le fichier mdb!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Provider="Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;
    Persist Security Info=False;"

  16. #16
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut
    Si l'un de vous à une autre méthode de transfert vers Access qui fonctionne sans problème, je suis également preneur !

  17. #17
    Invité
    Invité(e)
    Par défaut
    Après ça dépend si ton fichier Excel est enregistrer ou pas!
    Mais avant donnes nous de informations pour nous dire que ça fonctionne!

    D toute les façon tu n'échappe pas à Ado!

    Sinon il faut ouvrir un session Acces.application dna vba! Mais personnellement je n'aime pas! Mais je sais faire.
    Dernière modification par Invité ; 22/03/2016 à 17h27.

  18. #18
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut
    Yes super ! ca passe !

    Maintenant j'ai des petits souci pour alimenter ma table Access. Je suis en train de vérifier mon code. Je reviens vers vous dans l'heure quoi qui l'arrive

  19. #19
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut
    Ca fonctionne tres bien ! merci beaucoup


    j'ai juste un dernier petit souci: j'ai voulu enregistrer ma table Access et ensuite la fermer. J'ai donc ajouté Mais j'ai de nouveau l'erreur Automation.

  20. #20
    Invité
    Invité(e)
    Par défaut
    Tu n'as pas besoin s'enregistrer ta table Access Rs.update le fait
    Seule Rs.Close est utile!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Transfert de données d'excel vers access
    Par mataw dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/04/2012, 09h04
  2. Import de données de Excel vers Access
    Par kdestine dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/09/2007, 11h48
  3. Importation de données d'Excel vers Access
    Par jolemoine dans le forum Access
    Réponses: 9
    Dernier message: 13/07/2007, 14h56
  4. transfert de donnés de excel vers Mysql
    Par mkachekh dans le forum Outils
    Réponses: 4
    Dernier message: 20/10/2006, 12h08
  5. [VBA-E]Exporter des données d'Excel vers Access
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/06/2006, 15h57

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