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
| Private Sub bt_MaJCli_Click()
Dim oApp As Excel.Application
Dim oWkb As Excel.Workbook
Dim oWSht As Excel.Worksheet
Set oApp = CreateObject("excel.application")
Set oWkb = oApp.Workbooks.Open("F:\stage p\fichier client.xls") 'chemin vers fichier Excel
Set oWSht = oWkb.Worksheets("fichier client") ' nom de la feuille qui contient les données à importer
'première ligne ou commence l'import
i = 2
'pour éviter les messages lors de l'ajout des enregistrements
DoCmd.SetWarnings False
'tant qu'on ne rencontre pas une case vide
While oWSht.Range("I" & i).Value <> ""
'condition de remplissage de la table => eviter les doublons
'si l'enregistrement existe déjà dans la table destination,
'on le supprime puis on place le nouveau
If DCount("*", "[client]", "[codecli] LIKE '" & oWSht.Cells(i, 1) & "*'") = 1 Then
'le numéro 1 correspond au numéro de la colonne source, tel que : A=1, B=2, C=3 ...
cSQL = "delete * from [client] where [codecli] LIKE '" & oWSht.Cells(i, 1) & "*'"
DoCmd.RunSQL cSQL
End If
cSQL = ""
'requète SQL (avec en paramètre la ligne i et le numéro de la colonne comme précisé au-dessus)
cSQL = "insert into [client] ( [codecli], [nomcli] ) values (" & Chr(34) & oWSht.Cells(i, 1) & Chr(34) & ", " & Chr(34) & oWSht.Cells(i, 2) & Chr(34) & ")"
'ici, on ne prend que les colonnes A (=1) et B (=2).
DoCmd.RunSQL cSQL 'exécute la requète
'on incrémente la variable i pour passer à la ligne suivante
i = i + 1
Wend
DoCmd.SetWarnings True
End Sub |
Partager