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
| Option Compare Database
Private Sub Commande0_Click()
'Déclaration des variables pour ouvrir Excel en VBA
Dim xlApp As Variant, xlBook As Variant, xlSheet As Variant, xlPath As String, wsName As String, startRow As Integer, pkeycol As String, acTable As String, pkey As String
Dim i As Integer, cSQL As String
'On desactive les messages d'erreurs
DoCmd.SetWarnings False
'Préciser que l'on souhaite ouvrir un seul fichier
Application.FileDialog(msoFileDialogFilePicker).AllowMultiSelect = False
'Ouvre une boite de dialogue pour ouvrir ton fichier Excel
Application.FileDialog(msoFileDialogFilePicker).Show
'Récpère le chemin du fichier Excel dans la variable : chemin
chemin = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1)
'XlApp t'ouvre un objet EXCEL
'XlBook t'ouvre le classeur ( chemin ), ton fichier excel
'Xlsheet te positionne sur la feuil ou l'on va procéder à l'extraction
'XlApp.visible t'affiche le fichier excel ouvert. Tu peux le mettre sur false si tu veux pas le voir s'ouvrir
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("" & chemin & "")
Set xlSheet = xlBook.Worksheets("Feuil5")
xlApp.Visible = True
'On se positione sur la feuil5
xlBook.Worksheets("Feuil5").Activate
'On définie les différents paramètres pour intégrer les données dans la table
wsName = "Feuil5"
'Définie le numéros de ligne ou doit commencer l'exportation. Si tu as des en-tête, tu positionnes sur la ligne 2
startRow = 1
'pkeycol permet de définir la colonne sur lasquel on va boucler plus tard pour tester si il y a encore des données à insérer dans la table
pkeycol = "A"
'Définie la table access ou tu vas importer tes données
acTable = "Préparation"
i = startRow
With xlSheet
'arrêter l'importation lorsque l'on rencontre une case vide
While .Range(pkeycol & i).Value <> "" '(où pKeyCol représente la colonne et i la ligne)
'Requete SQL, pour exporter tes données
cSQL = "INSERT INTO " & acTable & " ([Date],[Code GE],[Activité],[Zone],[HeureD],[HeureF],[Pause],[Colis]) VALUES (" & Chr(34) & .Range("A" & i) & Chr(34) & ", " & Chr(34) & .Range("B" & i) & Chr(34) & ", " & Chr(34) & .Range("C" & i) & Chr(34) & ", " & Chr(34) & .Range("D" & i) & Chr(34) & ", " & Chr(34) & .Range("E" & i) & Chr(34) & ", " & Chr(34) & .Range("F" & i) & Chr(34) & ", " & Chr(34) & .Range("G" & i) & Chr(34) & ", " & Chr(34) & .Range("H" & i) & Chr(34) & ");"
'exécute la requète
DoCmd.RunSQL cSQL
'on incrémente la variable i pour passer à la ligne suivante
i = i + 1
Wend
End With
'On ferme le fichier excel, et on ne sauvegarde pas. Si tu veus sauvegarder tu mets sur true
xlBook.Close savechanges:=False
'On ferme l'objet excel
xlApp.Quit
'On libère les variables
Set xlBook = Nothing
Set xlApp = Nothing
Set xlSheet = Nothing
'on réactive les messages d'erreurs
DoCmd.SetWarnings True
End Sub |