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 :

Importer des données de excel + envoi dans une table de access


Sujet :

VBA Access

  1. #1
    Inactif  

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3 064
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 064
    Points : 4 605
    Points
    4 605
    Par défaut Importer des données de excel + envoi dans une table de access
    Hello

    Je dois réaliser une formulaire permettant de passer des données de Excel vers Access. Il s'agit de 12 fichiers excel qui tous la même structures, chacun ayant plus ou moins le un nombre de lignes respectifs (80 pour le fichier 1 , 50 pour le 2 ... )

    Sous Access j'ai un formulaire qui est composé de ceci :

    - 1 barre de texte qui reçoit l'adresse du fichier excel à importer (nom de cette barre : chemin_d_importation )
    - 1 bouton permettant d'afficher une boite de dialogue qui permet de chercher le fichier à importer (nom du bouton de parcours : parcourir )
    - 1 bouton permettant de valider et qui fait exécute le transfert de excel vers access (bouton nommé : importer )

    Voici le code que j'ai programmé (en parti ) car une partie vient de code que j'ai glaner à droite à gauche pour faire mon programme.

    Je ne connais absolument pas la programmation système VBA , j'utilise ACCESS uniquement pour du requetage.

    Code vba codé pour le bouton "parcourir" :

    / ! \ code venant en partie d'un site anglophone d'ou l'anglais dans celui ci , a noter aussi qu'il y a des explications en français pour expliquer ce que je souhaite faire exactement / ! \

    Code VBA : 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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    Option Compare Database
     
    Option Explicit
     
    Private Sub parcourir_Click()
     
    Me.chemin_d_importation = OuvrirUnFichier(Me.Hwnd, "Données à importer", 1)
     
    End Sub
     
    Sub ADOFromExcelToAccess()
     
    Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
     
    Dim db As Database
    Dim rs_stokage As Recordset 
     
     
    DoCmd.TransferSpreadsheet acImport, 10, "STOCKAGE_IMPORTS", Forms!menu_importation!chemin_d_importation, True, ""
     
    Set db = CurrentDb
    Set rs_stokage = db.OpenRecordset("STOCKAGE_IMPORTS") ' STOCKAGE_IMPORTS est une table access existante et vide ou je souhaite stocker mes donner au fur et à mesure que je vais chercher les données de excel
     
     
    ' ici le code que j'ai trouvé sert à aller chercher les données du fichier avant transfert ( si c'est bien cela ??????? ) 
     
    ' exports data from the active worksheet to a table in an Access database this procedure must be edited before use
     
    ' connect to the Access database
    Set cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=Forms!menu_importation!chemin_d_importation;"
     
    ' open a recordset
    Set rs = New ADODB.Recordset
    rs.Open "STOCKAGE_IMPORTS", cn, adOpenKeyset, adLockOptimistic, adCmdTable
     
    ' all records in a table
     
        r = 20 ' the start row in the worksheet
        Do While Len(Range("A" & r).Formula) > 0
        ' repeat until first empty cell in column A
        With rs
        .AddNew ' create a new record
     
        ' add values to each field in the record  
     
        ' c'est toutes les colonnes présentent le fichier excel 
     
        .Fields("LIB_NOM_PAT_IND") = Range("A" & r).Value
        .Fields("LIB_PR1_IND") = Range("B" & r).Value     '
        .Fields("LIB_AD2") = Range("C" & r).Value
        .Fields("COD_COM") = Range("D" & r).Value
        .Fields("LIB_COM") = Range("E" & r).Value
        .Fields("COD_DEP") = Range("F" & r).Value
        .Fields("NUM_TEL") = Range("G" & r).Value
        .Fields("NUM_TEL_PORT") = Range("H" & r).Value
        .Fields("ADR_MAIL") = Range("I" & r).Value
        .Fields("COD_BAC") = Range("J" & r).Value
        .Fields("LIB_ETB") = Range("K" & r).Value
        .Fields("LIB_AD1_ETB") = Range("L" & r).Value
        .Fields("LIB_AD2_ETB") = Range("M" & r).Value
        .Fields("COD_COM_ADR_ETB") = Range("N" & r).Value
        .Fields("VILLE") = Range("O" & r).Value
        .Fields("Facebook") = Range("P" & r).Value
        .Fields("Viadeo") = Range("Q" & r).Value
        .Fields("COD_IND") = Range("R" & r).Value
        .Fields("COD_NNE_IND") = Range("S" & r).Value
     
        ' add more fields if necessary...
     
        .Update ' stores the new record
        End With
        r = r + 1 ' next row
        Loop
     
        rs.Close
        Set rs = Nothing
        cn.Close
        Set cn = Nothing
        End Sub
     
     
    ' ce code VBA marche en partie la boite de dialogue pour chercher le fichier s'ouvre et le nom du fichier et bien référencé dans la barre texte , par contre j'ignore si il y a des erreurs ou des manques vu que je connais pas la programmation système VBA :oops:

    Je doit ensuite faire la programmation du bouton "importer " qui lui envoie automatiquement les données vers la table existante. Pour ce second bouton , j'ignore ce que je dois faire et comment procéder. Je connais aucunement la programmation système VBA .

    Merci d'éclairer ma lanterne

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 635
    Points : 14 606
    Points
    14 606
    Par défaut
    Bonsoir,
    le code de transfert des classeurs Excel semblent fonctionner, l'importation se résume à insérer les données en exécutant une requête d'ajout, puis de vider la table de stockage :
    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
    Private Sub importer_Click()
    Dim cn As New ADODB.Connection
    Set cn = CurrentProject.Connection
     
    If MsgBox("Voulez-vous ajouter les nouvelles données à la table EXISTANTE ?", _
           vbYesNo + vbQuestion + vbDefaultButton2, "Ajout") = vbYes Then
    ' Ajout des nouvelles données dans la table EXISTANTE 
        cn.Execute "INSERT INTO EXISTANTE SELECT * FROM STOCKAGE_IMPORTS;"
    ' Vidage de la table d'importation
        cn.Execute "DELETE * FROM STOCKAGE_IMPORTS;"
     
    ' Fermeture et destruction de l'objet connection ADODB
        cn.Close
        Set cn = Nothing
        Msgbox "Traitement terminé."
    End If
     
    End Sub
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

Discussions similaires

  1. Réponses: 36
    Dernier message: 12/01/2015, 21h28
  2. [WD19] Pb d'affichage des données d'un combo dans une table
    Par remi82 dans le forum WinDev
    Réponses: 1
    Dernier message: 01/03/2014, 19h24
  3. [XL-2010] Importer des données de plusieurs fichiers dans une feuille excel en VBA
    Par Alibel dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/10/2013, 15h16
  4. Réponses: 6
    Dernier message: 22/07/2013, 16h24
  5. [WD15] Affichage des donnes de fichier INI dans une table mémoire
    Par bestmoroco dans le forum WinDev
    Réponses: 7
    Dernier message: 17/10/2012, 20h15

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