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
|
Private Sub Commande8_Click()
Dim Semaine As String
Dim Mois As String
questionner:
Semaine = InputBox("Entrer la semaine à importer")
If Len(Semaine) <> 2 Then
GoTo questionner
End If
Quest:
Mois = InputBox("Entrer la mois à importer")
'Ici l'importation se déclenche en cliquant sur le bouton "Commande1"
'mais on peut aussi mettre ce code à l'ouverture d'un formulaire
Dim oApp As Excel.Application
Dim oWkb As Excel.Workbook
Dim oWSht As Excel.Worksheet
Fichier = "BOvptS" & Semaine & " " & Mois & ".xls"
If Dir("H:\animation version finale1\" & Fichier) <> vbNullString Then
GoTo Go
Else
MsgBox "Fichier Inconnu... Arret de la procedure"
Exit Sub
End If
Exit Sub
Go:
Set oApp = CreateObject("excel.application")
Set oWkb = oApp.Workbooks.Open("H:\animation version finale1\" & Fichier) 'mettez ici le chemin vers votre fichier Excel
Set oWSht = oWkb.Worksheets("Feuil1") 'mettez ici le nom de la feuille qui contient les données à importer
'première ligne ou commence l'import
i = 4
'pour éviter les messages lors de l'ajout des enregistrements
DoCmd.SetWarnings False
'tant qu'on n'est pas arrivés à la ligne 600 du tableur
While i < 1250
'on peut aussi arrêter l'importation lorsque le programme rencontre une case
'vide en remplaçant la ligne du While par :
'While oWSht.Range("I" & i).value <> "" '(où I représente la colonne et i la ligne)
'condition de remplissage de la table => eviter les doublons
'si l'enregistrement existe déjà dans la table destination,
'on passe à la ligne suivante sans l'importer
'If DCount("*", "[ope]", "[nom_du_champ_destination_qui_ne_doit_pas_avoir_de_doublons] LIKE '" & oWSht.Cells(i, 9) & "'") = 0 Then
'le numéro 9 correspond au numéro de la colonne source, tel que : A=1, B=2, C=3 ...
'requète SQL (avec en paramètre la ligne i et le numéro de la colonne comme précisé au-dessus)
If IsNumeric(oWSht.cells(i, 1).value) = True And oWSht.cells(i, 1).value <> "" Then
cSQL = "insert into [ope] ( [oper], [Sigle], [Nom Opératrice(recap)], [Sectorisation],[Ville],[t40a],[t40s],[t99],[C4E refusees],[focos],[non4e],[ass 4e],[GAET],[nb ge pot],[nb dde gcv],[nb pot gcv],[colissimo],[pot colissimo],[ca dde],[ca sub],[ca val],[v compl],[clt],[AS PLAT],[AS GOLD],[Periode], [MOIS])" & _
" values (" & Chr(34) & oWSht.cells(i, 1) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 2) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 3) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 4) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 5) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 7) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 8) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 9) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 10) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 11) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 12) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 13) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 14) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 15) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 16) & Chr(34) & "," & _
"" & Chr(34) & oWSht.cells(i, 17) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 18) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 19) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 20) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 21) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 22) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 23) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 28) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 51) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 52) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 53) & Chr(34) & "," & Chr(34) & oWSht.cells(i, 54) & Chr(34) & ");"
End If
'ici, on ne prend que les colonnes M (=13) et K (=11).
'exécute la requète
DoCmd.RunSQL cSQL
'End If
'on incrémente la variable i pour passer à la ligne suivante
i = i + 1
Wend
'on réactive les messages d'erreurs
DoCmd.SetWarnings True
oWkb.Close
End Sub |
Partager