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

VBA Access Discussion :

Transfert Fichier excel dans une table ACCESS


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 3
    Par défaut Transfert Fichier excel dans une table ACCESS
    Bonjour tout le monde

    J'ai besoin d'un petit coup de main SVP

    Je travail (en stage) sur un outil d'imporation et d'exportation de données entre ACCESS et Excel. (access 2000, sql server et excel 2000)

    J'en suis seulement à la partie d'importation de fichier Excel pour l'instant.
    Je veux automatiser au max donc je travail sous VBA access.
    (Je ne suis pas très fort en vba)

    -J'essaie de tester l'existence de la table (ça marche)
    -Puis je crée une table à partir de code SQL (ca marche aussi)

    -Je veux ensuite importer le fichier EXCEL dans ma table qui vient d'être crée
    --> là ça merde!

    (message d'erreur : ODBC -- l'appel a échoué
    [Microsoft][ODBC SQL server driver][SQL server] i lexiste déjà un objet nommé "RC_teste' dans la base de données (#2714)

    en fait je pense que "DoCmd.TransferSpreadsheet" crée une nouvelle table et ne veux pas que je transfert mon fichier dans ma table pré-formater

    De plus je n'arrive pas à mettre à jour la liste de mes tables dans ACCESS
    lorsque je viens d'en créer une et que je suis en train d'exécuter ma macro.

    F5 marche très bien manuellement après ma macro, mais je n'arrive pas à l'automatiser en vba. J'ai essayé "Application.RefreshDatabaseWindow" et SendKeys "{F5}", mais cela ne marche pas.



    Voilà mon code

    (la fonction OuvrirUnFichier provient de : http://access.developpez.com/faq/?pa...#AffBoitDialog )

    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
    Sub importation_base()
        On Error GoTo err:
     
        Dim db As DAO.Database
        Dim rst As New Recordset
        'Dim rst2 As New Recordset
        Dim requete As String
        Dim requete2 As String
        Dim R8 As String
     
        Set db = CurrentDb
        requete = InputBox("rentrer le nom de la table à importer")
        If requete = "" Then End
        R1 = requete
        requete = "SELECT * from " & requete
     
         With rst
                    Set .ActiveConnection = CurrentProject.Connection
                    .CursorType = adOpenKeyset
                    .Open requete
                    R1 = MsgBox("cette table a déja été importé, voulez vous en importer une autre", vbYesNo)
     
        End With
     
        If R1 = 6 Then
            importation_base
        Else
        End
        End If
        rst.Close
     
        End
     
    err:
    requete2 = "CREATE TABLE [dbo].[" & R1 & " ] ([Ctc_Code] [int]PRIMARY KEY IDENTITY (1, 1) NOT NULL ,[Ctc_Fk_Code_Entreprise] [int] NOT NULL ,[Ctc_Nom] [varchar] (40) NOT NULL ,[Ctc_Prenom] [varchar] (40) NULL ,[Ctc_Titre] [varchar] (4) NULL ,[Ctc_Tel] [varchar] (20) NULL ,[Ctc_Fax] [varchar] (20) NULL ,[Ctc_Portable] [varchar] (20) NULL ,[Ctc_Email] [varchar] (50) NULL ,[Ctc_Nom_Assistant] [varchar] (50) NULL ,[Ctc_Tel_Assistant] [varchar] (20) NULL ,[Ctc_Fk_Code_Fonction] [varchar] (10) NOT NULL ,[Ctc_Remarque_Fonction] [varchar] (150) NULL ,[Ctc_Notes] [varchar] (144) NULL ,[Ctc_Date_Creation] [datetime] NOT NULL ,[Ctc_Date_Maj] [datetime] NOT NULL ,[Ctc_Auteur] [int] NULL ,[Ctc_Inactif] [bit] NOT NULL ,[Ctc_Stagiaire] [bit] NOT NULL ,[Ctc_Lotus] [bit] NOT NULL ,[Ctc_NPAI_Mail] [bit] NOT NULL ,[Ctc_Origine_des_bases] [varchar] (25) NOT NULL ,[Ctc_NPAI_Courrier] [bit] NOT NULL ,[info_sup1] [varchar] (200) NULL ,[info_sup2] [varchar] (200) NULL ,[info_sup3] [varchar] (200) NULL ) ON [PRIMARY]"
      With rst
           Set .ActiveConnection = CurrentProject.Connection
               .CursorType = adOpenKeyset
               .Open requete2
        End With
     
     
    R8 = OuvrirUnFichier(0, "Sélection d'un fichier", 1, "Fichier Excel", "xls", "C:")
    DoCmd.TransferSpreadsheet acImport, 6, R1, R8, False
    End Sub

    Comment Peut on importer un fichier excel dans un table préformater en vba??
    et comment puis-je mettre à jour ma liste de table automatiquement???

    Je ne suis pas sûr d'avoir été très clair, donc n'hésitez pas à me demander des précisions.

    Merci d'avance pour votre aide

  2. #2
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 3
    Par défaut Faire apparaître une table dans la liste des table après sa création
    Bonjour tout le monde

    j'ai modifier mon code du post au dessus et je me retrouve plus que avec un problème sur les deux.
    je suis finalement passé par DoCmd.RunCommand acCmdImport (ce que
    j'appellerais l'assistant d'importation d'access).


    le problème c'est que ma base fraichement renommé n'est pas mise à jour dans la liste des table et donc je ne peux pas la sélectionner dans la liste de l'assistant pour importer mon fichier excel dans cette table.

    (Mon idée était que la nouvelle base crée deviendrait la "table type" qui sera cloné à chaque importation, et que la table type (donc déjà dans la liste de mes tables) deviendrait la table où je vais importer ma feuil excel.

    Mais, comme la table crée, le changement de nom ne s'effectue que après la macro avec "F5" donc je ne peut pas sélectionner ma table renommer dans la liste des choix...

    J'ai essayer plein de truc (un peut au pif je l'accorde)
    -CurrentDb.TableDefs(R1).Indexes.Refresh 'R1 et le nouveau nom de ma table
    ou
    -CurrentDb.TableDefs.Refresh
    ou
    -Application.RefreshDatabaseWindow
    ou
    -DoCmd.RunCommand acCmdRefreshDatabaseWindow
    ou
    - DoCmd.RefreshDatabaseWindow
    ou
    - acCmdRefreshDatabaseWindow

    Soit les "commandes" n'existent pas, soit elles n'ont pas d'effet

    Si quelqu'un à déjà rencontré ce problème, ou sait comment résoudre ce problème, j'aimerais beaucoup qu'il m'en fasse part!

    Je vous remercie d'avance pour votre aide au combien précieuse.

    (PS n'hésiter pas à me poser des questions je se me suis mal exprimé, ou n'ai pas été clair)

    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
    Sub importation_base()
        On Error GoTo err:
     
        Dim db As DAO.Database
        Dim rst As New Recordset
        Dim rst2 As Recordset
        Dim requete As String
        Dim requete2 As String
        Dim R8 As String
        Dim SQL As String
        Dim SQL2 As String
     
        'vérification de l'existence de la base
        requete = InputBox("rentrer le nom de la table à importer")
        If requete = "" Then End
        R1 = requete
        requete = "SELECT * from " & requete
     
         With rst
                    Set .ActiveConnection = CurrentProject.Connection
                    .CursorType = adOpenKeyset
                    .Open requete
                    R1 = MsgBox("cette table a déja été importé, voulez vous en importer une autre", vbYesNo)
     
        End With
     
        If R1 = 6 Then
            importation_base
        Else
        End
        End If
        rst.Close
     
        End
     
    err:
    'renommer ma base type
    SQL = "exec sp_rename RC_CONTACTS_TYPE, " & R1
    DoCmd.RunSQL (SQL)
     
    SQL2 = "sp_recompile " & R1
    DoCmd.RunSQL (SQL2)
     
    'recréer ma base type
    requete2 = "CREATE TABLE [dbo].[RC_CONTACTS_TYPE ] ([Ctc_Code] [int]PRIMARY KEY IDENTITY (1, 1) NOT NULL ,[Ctc_Fk_Code_Entreprise] [int] NOT NULL ,[Ctc_Nom] [varchar] (40) NOT NULL ,[Ctc_Prenom] [varchar] (40) NULL ,[Ctc_Titre] [varchar] (4) NULL ,[Ctc_Tel] [varchar] (20) NULL ,[Ctc_Fax] [varchar] (20) NULL ,[Ctc_Portable] [varchar] (20) NULL ,[Ctc_Email] [varchar] (50) NULL ,[Ctc_Nom_Assistant] [varchar] (50) NULL ,[Ctc_Tel_Assistant] [varchar] (20) NULL ,[Ctc_Fk_Code_Fonction] [varchar] (25) NOT NULL ,[Ctc_Remarque_Fonction] [varchar] (150) NULL ,[Ctc_Notes] [varchar] (144) NULL ,[Ctc_Date_Creation] [datetime] NOT NULL ,[Ctc_Date_Maj] [datetime] NOT NULL ,[Ctc_Auteur] [int] NULL ,[Ctc_Inactif] [bit] NOT NULL ,[Ctc_Stagiaire] [bit] NOT NULL ,[Ctc_Lotus] [bit] NOT NULL ,[Ctc_NPAI_Mail] [bit] NOT NULL ,[Ctc_Origine_des_bases] [varchar] (25) NOT NULL ,[Ctc_NPAI_Courrier] [bit] NOT NULL ,[info_sup1] [varchar] (200) NULL ,[info_sup2] [varchar] (200) NULL ,[info_sup3] [varchar] (200) NULL ) ON [PRIMARY]"
     
      With rst
           Set .ActiveConnection = CurrentProject.Connection
               .CursorType = adOpenKeyset
               .Open requete2
        End With
    Application.RefreshDatabaseWindow
     
    'lancer la commande d'importation ACCESS
    DoCmd.RunCommand acCmdImport
     
    End Sub

Discussions similaires

  1. [AC-2002] Importer fichier Excel dans une table Access
    Par Kalymar dans le forum Access
    Réponses: 4
    Dernier message: 28/05/2011, 15h09
  2. [AC-2000] Import fichier Excel dans une table Access déjà existante
    Par icecreams01 dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/05/2010, 15h07
  3. Réponses: 3
    Dernier message: 20/04/2010, 09h31
  4. Importation d'un fichier excel dans une table access
    Par cmaitre dans le forum VBA Access
    Réponses: 11
    Dernier message: 15/04/2008, 16h59
  5. Réponses: 7
    Dernier message: 04/10/2005, 18h21

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