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 :

Mise à jour, insertion données depuis un fichier excel


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 27
    Points : 19
    Points
    19
    Par défaut Mise à jour, insertion données depuis un fichier excel
    Bonjour,

    Je vous explique mon probleme. Je dois à partir d'un fichier excel, transférer ces données vers ma table access, c'est à dire si la données éxiste je mets à jour si des valeurs ont changé, et sinon je l'insére. Mon souci est de parcourir mon fichier excel et de vérifier pour chaque ligne ces conditions. Je précise que ma clé s'appel "Code_D" et c'est à partir de cette valeur que je dois faire les tests. Aprés réflexion, je pense utilisé un "recordset" mais débutant ds VB j'ai un peu de mal donc c'est pourquoi je vous sollicite. Merci d'avance

  2. #2
    Inactif  
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Points : 19
    Points
    19
    Par défaut module Insertion et mise à jour
    sur mon site tu un module qui le fais sur la plupart des bd.
    access,dbase,excel,sqlserver & oracle.
    en fonction de ton fichier d depart le script change.
    TXT vers SQL Server ou excel vers SQL Server,Access vers Acces.
    paul.

  3. #3
    Inactif  
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Points : 19
    Points
    19
    Par défaut MODULES INSERTION ET MISE À JOUR DES DONNÉES DANS UNE TABLE( SGBD )
    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
    'Référence-VBAPoject : Microsolft DAO 3.6 Object Library
    Sub CreateBaseBisAccess()
    Dim DB As Database, DBX As Database, sDestination As String
    Dim RS As DAO.Recordset, TableEnCour As DAO.Recordset
    Dim fldLoop As Field, tdfNew As TableDef
     
    On Error Resume Next
    Set DBX = OpenDatabase("E:\Documents and Settings\PAUL\Bureau\auteurs.xls", False, gnReadOnly, "Excel 5.0;")
    Set TableEnCour = DBX.OpenRecordset("auteurs$", dbOpenDynaset, dbSeeChanges, dbOptimistic)
    Screen.MousePointer = 11
    sDestination = "E:\Documents and Settings\PAUL\Bureau\DEMO\FICHIER\auteurs.XLS"
     
    Set DB = OpenDatabase(sDestination, False, gnReadOnly, "Excel 5.0;")
     
    Do Until TableEnCour.EOF
    Set RS = DB.OpenRecordset("select * FROM [auteurs$] WHERE ((([auteurs$].[id_auteur]) Like '" & TableEnCour.Fields(0).Value & "'))", dbOpenDynaset, dbSeeChanges, dbOptimistic)
    If RS.RecordCount = 0 Then
    RS.AddNew
    Else
    RS.Edit
    End If
    RS.Fields("id_auteur").Value = TableEnCour.Fields("id_auteur").Value
    RS.Fields("nom_auteur").Value = TableEnCour.Fields("nom_auteur").Value
    RS.Fields("pn_auteur").Value = TableEnCour.Fields("pn_auteur").Value
    RS.Fields("téléphone").Value = TableEnCour.Fields("téléphone").Value
    RS.Fields("adresse").Value = TableEnCour.Fields("adresse").Value
    RS.Fields("ville").Value = TableEnCour.Fields("ville").Value
    RS.Fields("pays").Value = TableEnCour.Fields("pays").Value
    RS.Fields("code_postal").Value = TableEnCour.Fields("code_postal").Value
    RS.Fields("contrat").Value = TableEnCour.Fields("contrat").Value
    RS.Update
    TableEnCour.MoveNext
    Loop
    TableEnCour.Close
    DB.Close
    Set DB = Nothing
    Set TableEnCour = Nothing
    Screen.MousePointer = 0
    End Sub

  4. #4
    Inactif  
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Points : 19
    Points
    19
    Par défaut MODULES INSERTION ET MISE À JOUR DES DONNÉES DANS UNE TABLE( SGBD )
    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
    'Référence-VBAPoject : Microsolft DAO 3.6 Object Library
    'Excel vers Access
    'Module VBA à insérer > Set DBX = OpenDatabase(...)
    Sub CreateBaseBisAccess()
    Dim DB As Database, DBX As Database, sDestination As String, gExpDB, sTable, idxFrom, idxTo, idxFromName, sType, gsSQLDB
    Dim RS As DAO.Recordset, TableEnCour As DAO.Recordset
    Dim fldLoop As Field, tdfNew As TableDef
     
    On Error Resume Next
    Set DBX = OpenDatabase("E:\Documents and Settings\PAUL\Bureau\CLIENTS.XLS", False, gnReadOnly, "Excel 5.0;")
    Set TableEnCour = DBX.OpenRecordset("CLIENTS$", dbOpenDynaset, dbSeeChanges, dbOptimistic)
    Screen.MousePointer = 11
    'pointe sur la base MDB
    sDestination = "E:\Documents and Settings\PAUL\Bureau\DEMO\FICHIER\CLIENTS.MDB"
     
    sConnect = ";pwd="
    Set DB = OpenDatabase(sDestination, False, gnReadOnly, sConnect)
     
    Do Until TableEnCour.EOF
    Set RS = DB.OpenRecordset("select * FROM [CLIENTS] WHERE ((([CLIENTS].[codeclient]) Like '" & TableEnCour.Fields(0).Value & "'))", dbOpenDynaset, dbSeeChanges, dbOptimistic)
    If RS.RecordCount = 0 Then
    RS.AddNew
    Else
    RS.Edit
    End If
    RS.Fields("codeclient").Value = TableEnCour.Fields("codeclient").Value
    RS.Fields("société").Value = TableEnCour.Fields("société").Value
    RS.Fields("contact").Value = TableEnCour.Fields("contact").Value
    RS.Fields("fonction").Value = TableEnCour.Fields("fonction").Value
    RS.Fields("adresse").Value = TableEnCour.Fields("adresse").Value
    RS.Fields("ville").Value = TableEnCour.Fields("ville").Value
    RS.Fields("région").Value = TableEnCour.Fields("région").Value
    RS.Fields("code postal").Value = TableEnCour.Fields("code postal").Value
    RS.Fields("pays").Value = TableEnCour.Fields("pays").Value
    RS.Fields("téléphone").Value = TableEnCour.Fields("téléphone").Value
    RS.Fields("fax").Value = TableEnCour.Fields("fax").Value
    RS.Update
    TableEnCour.MoveNext
    Loop
    TableEnCour.Close
    DB.Close
    Set DB = Nothing
    Set TableEnCour = Nothing
    Screen.MousePointer = 0
    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
    'Référence-VBAPoject : Microsolft DAO 3.6 Object Library
    'Access vers Excel
    'Module VBA à insérer > Set DBX = OpenDatabase(...)
    Sub CreateBaseBisAccess()
    Dim DB As Database, DBX As Database, sDestination As String, gExpDB, sTable, idxFrom, idxTo, idxFromName, sType, gsSQLDB
    Dim RS As DAO.Recordset, TableEnCour As DAO.Recordset
    Dim fldLoop As Field, tdfNew As TableDef
     
    On Error Resume Next
    Set DBX = OpenDatabase("E:\Documents and Settings\PAUL\Bureau\CLIENTS.MDB", False, gnReadOnly, "")
    Set TableEnCour = DBX.OpenRecordset("CLIENTS", dbOpenDynaset, dbSeeChanges, dbOptimistic)
    Screen.MousePointer = 11
    'pointe sur la base XLS
    sDestination = "E:\Documents and Settings\PAUL\Bureau\DEMO\FICHIER\CLIENTS.XLS"
     
    Set DB = OpenDatabase(sDestination, False, gnReadOnly, "Excel 5.0;")
     
    Do Until TableEnCour.EOF
    Set RS = DB.OpenRecordset("select * FROM [CLIENTS] WHERE ((([CLIENTS$].[codeclient]) Like '" & TableEnCour.Fields(0).Value & "'))", dbOpenDynaset, dbSeeChanges, dbOptimistic)
    If RS.RecordCount = 0 Then
    RS.AddNew
    Else
    RS.Edit
    End If
    RS.Fields("codeclient").Value = TableEnCour.Fields("codeclient").Value
    RS.Fields("société").Value = TableEnCour.Fields("société").Value
    RS.Fields("contact").Value = TableEnCour.Fields("contact").Value
    RS.Fields("fonction").Value = TableEnCour.Fields("fonction").Value
    RS.Fields("adresse").Value = TableEnCour.Fields("adresse").Value
    RS.Fields("ville").Value = TableEnCour.Fields("ville").Value
    RS.Fields("région").Value = TableEnCour.Fields("région").Value
    RS.Fields("code postal").Value = TableEnCour.Fields("code postal").Value
    RS.Fields("pays").Value = TableEnCour.Fields("pays").Value
    RS.Fields("téléphone").Value = TableEnCour.Fields("téléphone").Value
    RS.Fields("fax").Value = TableEnCour.Fields("fax").Value
    RS.Update
    TableEnCour.MoveNext
    Loop
    TableEnCour.Close
    DB.Close
    Set DB = Nothing
    Set TableEnCour = Nothing
    Screen.MousePointer = 0
    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
    'Référence-VBAPoject : Microsolft DAO 3.6 Object Library
    'Access ver SQL Server
    'Module VBA à insérer > Set DBX = OpenDatabase(...)
    Sub CreateBaseBisAccess()
    Dim DB As Database, DBX As Database, sDestination As String, gExpDB, sTable, idxFrom, idxTo, idxFromName, sType, gsSQLDB
    Dim RS As DAO.Recordset, TableEnCour As DAO.Recordset
    Dim fldLoop As Field, tdfNew As TableDef
     
    On Error Resume Next
    Set DBX = OpenDatabase("E:\Documents and Settings\PAUL\Bureau\CLIENTS.MDB", False, gnReadOnly, "")
    Set TableEnCour = DBX.OpenRecordset("CLIENTS", dbOpenDynaset, dbSeeChanges, dbOptimistic)
    Screen.MousePointer = 11
    sDestination = "UID=SA;PWD=;DRIVER={SQL Server};SERVER=CELINE;DATABASE=pubs;"
     
    Set DB = OpenDatabase("", False, gnReadOnly, "UID=SA;PWD=;DRIVER={SQL Server};SERVER=CELINE;DATABASE=pubs;")
     
    Do Until TableEnCour.EOF
    If Not DB Is Nothing Then Set DB = Nothing
    Set DB = OpenDatabase("", False, gnReadOnly, "UID=SA;PWD=;DRIVER={SQL Server};SERVER=CELINE;DATABASE=pubs;")
    Set RS = DB.OpenRecordset("select * FROM [CLIENTS] WHERE ((([CLIENTS].[codeclient]) Like '" & TableEnCour.Fields(0).Value & "'))", dbOpenDynaset, dbSeeChanges, dbOptimistic)
    If RS.RecordCount = 0 Then
    RS.AddNew
    Else
    RS.Edit
    End If
    RS.Fields("codeclient").Value = TableEnCour.Fields("codeclient").Value
    RS.Fields("société").Value = TableEnCour.Fields("société").Value
    RS.Fields("contact").Value = TableEnCour.Fields("contact").Value
    RS.Fields("fonction").Value = TableEnCour.Fields("fonction").Value
    RS.Fields("adresse").Value = TableEnCour.Fields("adresse").Value
    RS.Fields("ville").Value = TableEnCour.Fields("ville").Value
    RS.Fields("région").Value = TableEnCour.Fields("région").Value
    RS.Fields("code postal").Value = TableEnCour.Fields("code postal").Value
    RS.Fields("pays").Value = TableEnCour.Fields("pays").Value
    RS.Fields("téléphone").Value = TableEnCour.Fields("téléphone").Value
    RS.Fields("fax").Value = TableEnCour.Fields("fax").Value
    RS.Update
    TableEnCour.MoveNext
    Loop
    TableEnCour.Close
    DB.Close
    Set DB = Nothing
    Set TableEnCour = Nothing
    Screen.MousePointer = 0
    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
    'Référence-VBAPoject : Microsolft DAO 3.6 Object Library
    'SQL Server Ves Access
    'Module VBA à insérer > Set DBX = OpenDatabase(...)
    Sub CreateBaseBisAccess()
    Dim DB As Database, DBX As Database, sDestination As String, gExpDB, sTable, idxFrom, idxTo, idxFromName, sType, gsSQLDB
    Dim RS As DAO.Recordset, TableEnCour As DAO.Recordset
    Dim fldLoop As Field, tdfNew As TableDef
     
    On Error Resume Next
    Set DBX = OpenDatabase("", False, gnReadOnly, "UID=SA;PWD=;DRIVER={SQL Server};SERVER=CELINE;DATABASE=pubs;")
    Set TableEnCour = DBX.OpenRecordset("clients", dbOpenDynaset, dbSeeChanges, dbOptimistic)
    Screen.MousePointer = 11
    'pointe sur la base MDB
    sDestination = "E:\Documents and Settings\PAUL\Bureau\CLIENTS.MDB"
     
    sConnect = ";pwd="
    Set DB = OpenDatabase(sDestination, False, gnReadOnly, sConnect)
     
    Do Until TableEnCour.EOF
    Set RS = DB.OpenRecordset("select * FROM [clients] WHERE ((([clients].[codeclient]) Like '" & TableEnCour.Fields(0).Value & "'))", dbOpenDynaset, dbSeeChanges, dbOptimistic)
    If RS.RecordCount = 0 Then
    RS.AddNew
    Else
    RS.Edit
    End If
    RS.Fields("codeclient").Value = TableEnCour.Fields("codeclient").Value
    RS.Fields("société").Value = TableEnCour.Fields("société").Value
    RS.Fields("contact").Value = TableEnCour.Fields("contact").Value
    RS.Fields("fonction").Value = TableEnCour.Fields("fonction").Value
    RS.Fields("adresse").Value = TableEnCour.Fields("adresse").Value
    RS.Fields("ville").Value = TableEnCour.Fields("ville").Value
    RS.Fields("région").Value = TableEnCour.Fields("région").Value
    RS.Fields("code postal").Value = TableEnCour.Fields("code postal").Value
    RS.Fields("pays").Value = TableEnCour.Fields("pays").Value
    RS.Fields("téléphone").Value = TableEnCour.Fields("téléphone").Value
    RS.Fields("fax").Value = TableEnCour.Fields("fax").Value
    RS.Update
    TableEnCour.MoveNext
    Loop
    TableEnCour.Close
    DB.Close
    Set DB = Nothing
    Set TableEnCour = Nothing
    Screen.MousePointer = 0
    End Sub

Discussions similaires

  1. [AC-2002] [Automation] Erreur Extraction de données depuis un fichier Excel
    Par raph04 dans le forum VBA Access
    Réponses: 30
    Dernier message: 28/04/2010, 14h09
  2. [XL-2003] Mise à jour de données d'un fichier excel vers un autre
    Par meumeu73.1 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/03/2010, 14h37
  3. Mise à jours des données d'un fichier INI
    Par dz_robotix dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/02/2010, 11h51
  4. Importer des données depuis un fichier Excel.
    Par tatemilio2 dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 02/02/2010, 11h19
  5. Réponses: 2
    Dernier message: 09/12/2008, 10h21

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