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

Access Discussion :

Transfert de données entre Excel et Access ?


Sujet :

Access

  1. #1
    Membre expérimenté
    Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 192
    Par défaut Transfert de données entre Excel et Access ?
    Bonsoir membres du forum,
    Comment pourrait on transférer les donner d'Excel dans une table Access 2013 par codes VBA ?
    En faisant correspondre chaque colonne Excel par rapport à un champ précis d'une Table Access ?
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort
    :faq:

  2. #2
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 309
    Par défaut
    Salut
    Le plus simple serait d'importer votre feuille de calculs avec liaison ou non dans une tbl de votre bdd. De créer ensuite un req pour ordonner vos champs
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP :weird:
    Merci de cliquer sur :plusser: si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur :resolu:

  3. #3
    Membre expérimenté
    Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 192
    Par défaut
    Citation Envoyé par hyperion13 Voir le message
    Le plus simple serait d'importer votre feuille de calculs avec liaison ou non dans une tbl de votre bdd. De créer ensuite un req pour ordonner vos champs
    Bonjour hyperion13,
    Message compris.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'Exemple de Code de Transfert de Données depuis Excel vers Access.
    'Alors test ça dans Excel (export d'un nom & d'un prénom contenu dans les cellules A1 & A2 'vers la base d:\test.mdb dans la table1 contenant les champs Nom et Prénom):
    Dim Access As Object
    Dim Sql As String
    Set Access = GetObject("d:\test.mdb")
    Access.Visible = True
    With Sheets(1)
        Sql = "insert into table1 ( Nom, prénom ) select """ & .Cells(1, 1) & """ , """ & .Cells(1, 2) & """;"
    End With
    Access.Application.docmd.runsql Sql
    Set Access = Nothing
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort
    :faq:

  4. #4
    Membre expérimenté
    Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 192
    Par défaut
    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
     
    Private Sub bt_Selection_Click()
    'Déclaration des variables
    Dim strFichier As String
    Dim oFD As FileDialog
    Dim AncienNom As String
    Dim NouvNom As String
     
    'Paramètre la fenêtre Ouvrir
    Set oFD = Application.FileDialog(msoFileDialogOpen)
    With oFD
        'Ajoute les filtres pour fichiers
        With .Filters
            .Clear
            .Add "Fichiers Excel", "*.xls;*.xlsx;*.xlsm"
        End With
     
        'Renseignement du titre
     
        .Title = "Fichier des Notes pour " & Me.txtCLASSE & "-" & Me.txtCOMPO & "-" & Me.txtANNEE & "-FRANCAIS"
     
            'Ouvre l'explorateur dans le fichier 'Mes documents' du User connecté.
        '.InitialFileName = Environ("USERPROFILE") & "\Mes documents"
        .InitialFileName = CurrentProject.Path
     
        .AllowMultiSelect = False
        'Permet de choisir le mode d'affichage dans l'explorateur (ici apperçu)
        .InitialView = msoFileDialogViewThumbnail
        'Permet de personnaliser le bouton.
        .ButtonName = "Choisir un fichier"
        'Affiche la fenêtre
     
     
        If .Show Then
                Me.sCheminFichier = .SelectedItems(1)
                DoEvents
                RemplirListeClasseurs
        End If
    End With
    End Sub
    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
     
    Sub RemplirListeClasseurs()
    On Error Resume Next
    Dim App As Excel.Application
    Dim Classeur As Excel.Worksheet
    Dim strFichier As String            'Nom du fichier Excel
    Dim I As Integer
    Dim Nb As Integer
    strFichier = Me.sCheminFichier
    Set App = CreateObject("Excel.application")     'Ouverture d'Excel
    App.Workbooks.Open strFichier                   'Ouverture du fichier à traiter
    With App
        'Vidage de la liste
        Do While Me.ListeClasseurs.ListCount > 0
            DoEvents
            'Nb = Me.ListeClasseurs.ListCount
            'For i = 0 To Me.ListeClasseurs.ListCount - 1
                Me.ListeClasseurs.RemoveItem 0
                Me.ListeClasseurs.Requery
            'Next i
        Loop
     
        'Remplissage de la liste
        For Each Classeur In .Worksheets
        DoEvents
            Me.ListeClasseurs.AddItem Classeur.Name
        Next
    End With
    ' ferme excel
    App.Workbooks.Close
     
    App.Quit
     
    Set App = Nothing
    Set Classeur = Nothing
    End Sub
    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
    63
    64
    65
    66
    67
    68
    69
    70
     
    Sub CreerTableEtImporterDonnees()
        Dim dbs As DAO.Database
        Dim strNomTable As String
        Dim strSQL As String
        Dim rst As DAO.Recordset
        Dim I As Integer
        Dim strChamp As String
        Dim Fichier As String
        Dim Feuille As String
        Dim N As Integer
        Dim strMsg As String
     
     
        strSQL = "SELECT * FROM MATIERE_CLASSE_FR WHERE annee_scol='" & Me.txtANNEE & "' AND classe_francais ='" & Me.txtCLASSE & "';"
        'strNomTable = "Temp_" & Left(Me.txtCOMPO, 1) & Right(Me.txtCOMPO, 11) & "_" & Right(Me.txtANNEE, 4)
        strNomTable = "Temp_Importation_NotesExcel"
        Set dbs = CurrentDb
        Set rst = dbs.OpenRecordset(strSQL)
        If TableExiste(strNomTable) Then
            SupprimerTable (strNomTable)
            'MsgBox "Elle existe"
        End If
        strSQL = "CREATE TABLE  [" & strNomTable & "] (anscol CHAR, NatureCompoAr CHAR, ClasseFr CHAR, mle_Eleve INTEGER, NomEleve CHAR);"
     
        DoCmd.SetWarnings False
     
        dbs.Execute strSQL
            If Not rst.EOF Then
                Do While Not rst.EOF
                    strChamp = fNOM_parID_Matiere_FR(rst.Fields("matiere_francais"))
     
                    strSQL = "ALTER TABLE  " & strNomTable & "  ADD COLUMN [" & strChamp & "] REAL;"
                    DoEvents
                    dbs.Execute strSQL
     
                    rst.MoveNext
                Loop
            End If
     
            strSQL = "ALTER TABLE  " & strNomTable & "  ADD COLUMN TOTAL REAL;"
            DoEvents
            dbs.Execute strSQL
     
            strSQL = "ALTER TABLE  " & strNomTable & "  ADD COLUMN MOYENNE REAL;"
            DoEvents
            dbs.Execute strSQL
     
            strSQL = "ALTER TABLE  " & strNomTable & "  ADD COLUMN Classement CHAR;"
            DoEvents
            dbs.Execute strSQL
     
            strSQL = "ALTER TABLE  " & strNomTable & "  ADD COLUMN Appreciation CHAR;"
            DoEvents
            dbs.Execute strSQL
     
     Fichier = Me.sCheminFichier
     Feuille = Me.ListeClasseurs & "!"
     
        'Vide la Table Temporaire des KYC
        DoCmd.RunSQL "DELETE * FROM   " & strNomTable & ";"
     
        'Importe les données du classeur vers la table temporaire
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, strNomTable, Fichier, True, Feuille
     
        DoCmd.SetWarnings True
     
    rst.Close
    Set rst = Nothing
    End Sub
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
     
    Sub InserrerNotes(vAnScol As String, vClas As String, vCompo As String)
        Dim dbs As DAO.Database
        Dim strSQL As String
        Dim strSQL_Eleve As String
        Dim rst As DAO.Recordset
        Dim rstEleve As DAO.Recordset
        Dim I As Integer
        Dim strNomTable As String
     
        'Variables de l'entête de la compo
        Dim stAnnee As String
        Dim vMle_El As Long
        Dim vClasse As String
        Dim vNatCompo As String
        Dim vStatut As String
        Dim N As Integer
     
        Dim sCoef As Integer
        Dim idAuto As Long
        Dim idComp As Long
        Dim NumMat As Long
        Dim LaNote As Single
     
        strSQL_Eleve = "SELECT * FROM REQUETECLASSEFRANCAIS WHERE ANNEE_SCOL='" & vAnScol & "' AND ClasseFrancais ='" & vClas & "';"
     
        'strNomTable = "Temp_" & Left(vCompo, 1) & Right(vCompo, 11) & "_" & Right(vAnScol, 4)
        strNomTable = "Temp_Importation_NotesExcel"
     
        Set dbs = CurrentDb
     
        Set rstEleve = dbs.OpenRecordset(strSQL_Eleve)
     
     
        If Not rstEleve.EOF Then    'On boucle sur la liste des élèves de la classe
            rstEleve.MoveFirst
     
            Do While Not rstEleve.EOF
     
            DoEvents
     
            Me.lblMessage.Caption = "Traitement de l'élève n°" & rstEleve.Fields("Mleeleve") & "-" & rstEleve.Fields("nom") & " " & rstEleve.Fields("prenom")
            Me.lblMessage.Visible = True
     
            strSQL = "SELECT * FROM " & strNomTable & " WHERE mle_Eleve =" & rstEleve.Fields("Mleeleve") & " AND anscol='" & vAnScol & "' AND NatureCompoAr ='" & vCompo & "';"
            Set rst = dbs.OpenRecordset(strSQL)
            If Not rst.EOF Then
                N = 4
                rst.MoveFirst
                Do While Not rst.EOF
     
                DoEvents
     
                'Initialisation de l'entête de des notes [INFOS_COMPOSITION_FRANCAIS] pour l'élève actif
                    idComp = NumeroAutoCompoFrancais() + 1
                    stAnnee = vAnScol
                    vMle_El = rstEleve.Fields("Mleeleve")
                    vClasse = vClas
                    vNatCompo = vCompo
                    vStatut = "Classé"
                    'Mettre le controle d'existence ici
     
                    If CompoDejaImportée_Fr(Me.txtANNEE, rstEleve("Mleeleve"), Me.txtCLASSE, Me.txtCOMPO) = False Then
     
                        strSQL = "INSERT INTO INFOS_COMPOSITION_FRANCAIS (idCompoF, anscol, mle_Eleve, ClasseFr, NatureCompoAr, Statut) VALUES (" & idComp & ", '" & stAnnee & "', " & vMle_El & ", '" & vClasse & "', '" & vNatCompo & "', '" & vStatut & "' );"
     
                        DoCmd.SetWarnings False
                        DoCmd.RunSQL strSQL
     
                            idAuto = NumeroAutoNotesFrancais()
     
                            DoEvents
     
                            For I = 1 To Me.NbreMatiere
                                DoEvents
                                idAuto = idAuto + 1
                                NumMat = CLng(fIDM_parMATIERE(rst.Fields(N + I).Name))
     
                                'Teste le contenu des cellules de notes
                                If IsNull(rst.Fields(N + I).Value) Then
                                LaNote = 0
                                Else
                                LaNote = CSng(rst.Fields(N + I).Value)
                                End If
     
                                sCoef = fCOEF_parMATIERE(Me.txtANNEE, Me.txtCLASSE, fIDM_parMATIERE(rst.Fields(N + I).Name))
     
                                strSQL = "INSERT INTO NOTES_CLASSES_FRANCAIS (idNotesFrancais, idCF, matiereFr, coef) VALUES (" & idAuto & ", " & idComp & ", " & NumMat & ", " & sCoef & " );"
                                DoCmd.SetWarnings False
                                DoCmd.RunSQL strSQL
     
                                strSQL = "update NOTES_CLASSES_FRANCAIS set NOTES_CLASSES_FRANCAIS.Note =" & Replace(LaNote, ",", ".") & _
                                " where NOTES_CLASSES_FRANCAIS.idNotesFrancais =" & idAuto & ";"
                                DoCmd.SetWarnings False
                                DoCmd.RunSQL strSQL
                                strSQL = ""
     
     
                                'AfficherNotesEleve = AfficherNotesEleve & vbCrLf & rst.Fields(n + i).Name & "=" & rst.Fields(n + i).Value
                                'Debug.Print AfficherNotesEleve
                            Next I
     
                        Else
                            Me.lblMessage.Caption = "Notes déjà importées pour l'élève n°" & rstEleve.Fields("Mleeleve") & "-" & rstEleve.Fields("nom") & " " & rstEleve.Fields("prenom")
                            Me.lblMessage.Visible = True
                        End If
                        rst.MoveNext
                    Loop
     
     
                End If
                rstEleve.MoveNext
                Loop
     
                MsgBox "Transfert effectué avec succès !"
                DoCmd.OpenForm "CLASSEFRANCAIS", , , "[ClasseFrancais]='" & Me.txtCLASSE & "' AND [ANNEE_SCOL]='" & Me.txtANNEE & "'", , , "PF"
                'DoCmd.OpenForm stDoc, , , "[ClasseFrancais]='" & Me.lstCLASSES_FR_DISPO & "' AND [ANNEE_SCOL]='" & Me.lstANNEE_SCOLAIRE & "'", , , "PF"
                DoCmd.Close acForm, "frmIMPORTER_NOTES_FichEXCEL_Fr"
                rst.Close
                rstEleve.Close
     
                Set rst = Nothing
                Set rstEleve = Nothing
     
                 ' Delete the Employees table.
     
                dbs.Execute "DROP TABLE " & strNomTable & ";"
        End If
    DoCmd.SetWarnings True
    End Sub
    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
     
    Private Sub btn_Traitement_Click()
    DoCmd.SetWarnings False
    'Création et importation des données
        CreerTableEtImporterDonnees
        Me.lblMessage.Caption = "Création et importation des données..."
        Me.lblMessage.Visible = True
        DoEvents
     
     
    'Transfert des données de la table tampon vers la table des notes
        InserrerNotes Me.txtANNEE, Me.txtCLASSE, Me.txtCOMPO
     
        'Me.lblMessage.Caption = "Création et importation des données..."
        'Me.lblMessage.Visible = False
     
        DoEvents
    DoCmd.SetWarnings True
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Form_Load()
    DoCmd.MoveSize 1000, 1000, 14500, 7000
    'Me.NumCol = 3
    'Me.NumColDepart = 6
    If Not IsNull(Me.sCheminFichier) Then
        DoEvents
        RemplirListeClasseurs
    End If
    End Sub
    Nom : Exemple de Formulaire Importateur de Données depuis Excel 1.jpg
Affichages : 23
Taille : 119,6 Ko

    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort
    :faq:

Discussions similaires

  1. Transfert de date entre Excel et ACCESS
    Par Sly2k dans le forum VB.NET
    Réponses: 1
    Dernier message: 08/08/2007, 23h32
  2. Réponses: 1
    Dernier message: 29/05/2006, 19h42
  3. AdoQuery:Transfert d'enregistrements entre deux bases access
    Par jnc dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/01/2006, 14h39
  4. Communication entre Excel et Access
    Par sylvia94 dans le forum Access
    Réponses: 4
    Dernier message: 13/01/2006, 14h43
  5. insert entre excel et access
    Par patmich2 dans le forum ASP
    Réponses: 6
    Dernier message: 06/10/2004, 14h24

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