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
| Private Sub Commande47_Click()
'importer table 1
Dim xlPath As String
Dim wsName As String
Dim startRow As Integer
Dim pKeyCol As String
Dim acTable As String
Dim pKey As String
xlPath = "C:\Users\SCoudurier\Desktop\Cable routing T1_20120525.xlsx"
wsName = "Scope"
startRow = 3
pKeyCol = "A"
acTable = "Table1"
pKey = "N°"
'-> La fonction renvoie vrai si l'import réussit et faux dans le cas contraire
'xlPath : chemin du fichier Excel
'wsName : nom de la feuille Excel qui contient les données à importer
'startRow : ligne du fichier Excel où commence l'import
'pKeyCol : colonne du fichier Excel qui est la clé primaire de la table Access
'acTable : table Access qui reçoit les données
'pKey : nom du champ "identifiant"
ImportXL1 xlPath, wsName, startRow, pKeyCol, acTable, pKey
End Sub
Function ImportXL1(xlPath As String, wsName As String, startRow As Integer, pKeyCol As String, acTable As String, pKey As String) As Boolean
'-> La fonction renvoie vrai si l'import réussit et faux dans le cas contraire
'xlPath : chemin du fichier Excel
'wsName : nom de la feuille Excel qui contient les données à importer
'startRow : ligne du fichier Excel où commence l'import
'pKeyCol : colonne du fichier Excel qui est la clé primaire de la table Access
'acTable : table Access qui reçoit les données
'pKey : nom du champ "identifiant"
'active la routine de gestion d'erreur.
On Error GoTo erreur
'déclaration des variables
Dim app As Excel.Application
Dim wkb As Excel.Workbook
Dim wks As Excel.Worksheet
'initialisation des variables
Set app = New Excel.Application
Set wkb = app.Workbooks.Open(xlPath)
Set wks = wkb.Worksheets(wsName)
Dim i As Integer, cSQL As String
i = startRow
'pour éviter les messages lors de l'ajout des enregistrements
DoCmd.SetWarnings False
With wks
'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)
'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("*", acTable, pKey & " LIKE '" & .Range(pKeyCol & i).Value & "'") = 0 Then
'requête SQL (ajouter autant de champs que nécessaire)
cSQL = "INSERT INTO " & acTable & " ( [Type circuit], [Repère câble]) VALUES (" & Chr(34) & .Range("B" & i) & Chr(34) & ", " & Chr(34) & .Range("F" & i) & Chr(34) & ");"
'exemple avec les colonnes E et G
'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
End With
'on réactive les messages d'erreurs
DoCmd.SetWarnings True
'libération variables
Set wks = Nothing
Set wkb = Nothing
Set app = Nothing
MsgBox "Import du fichier Excel réussi.", vbInformation + vbOKOnly, "Opération terminée..."
ImportXL = True
Exit Function
erreur: ' Routine de gestion d'erreur.
MsgBox "Erreur: " & Err.Number & vbCrLf & Err.Description, vbOKOnly + vbInformation
ImportXL = False
End Function |
Partager