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 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
| Dim xlApp As Excel.Application
'Dim xlSheet As Excel.Worksheet
Dim xlBook As Excel.Workbook
Dim nbrelignes As Long
Dim nbrecolonnes As Long
Dim i As Long 'compteur lignes
Dim j As Long 'compteur colonnes
Dim plagecellulesexcel As String 'contient la plage de cellule à copier
Dim indicecolonnemontant As Long ' indice de la colonne montant
Dim donneesvalides As Byte 'indique si la dernière cellule du fichier Excel contient des données valides
Dim marequete As String 'définition d''une requête
Dim critereDcount As String
Dim Nbre As Long 'retourne le nombre d'occurence trouvé lors d'une recherche
Dim qdf_garantie As DAO.QueryDef
Dim qdf_compteclient As DAO.QueryDef
Dim qdf_notaire As DAO.QueryDef
Dim qdf_operation As DAO.QueryDef
Dim qdf_devise As DAO.QueryDef
Dim qdf_nature As DAO.QueryDef
Dim qdf_marche As DAO.QueryDef
Dim temp_compte As String
Dim temp_nomnotaire As String
Dim temp_operation As String
Dim temp_devise As String
Dim temp_nature As String
Dim temp_typemarche As String
Dim liregarantieexcel As DAO.Recordset
'initialisation des variables qui indiquent le nombre
'de fichiers ajoutés ou non à la base de données
fichierajoute = 0
fichiernonajoute = 0
'On Error GoTo Err_PiloterExcelDepuisAccess_Click
'J'initialise mes variables
Set xlApp = New Excel.Application
Set xlBook = xlApp.Workbooks.Open(fileexcel)
'je récupère le nombre de lignes du fichier Excel
nbrelignes = xlApp.Workbooks(1).Sheets(1).UsedRange.Rows.Count
'cette instruction drvrait marcher mais ne fonctionne pas correctement
nbrecolonnes = xlApp.Workbooks(1).Sheets(1).Range("A1").End(xlToRight).Column
'tester si la dernière ligne contient des données valables
Do
donneesvalides = 0
For j = 1 To nbrecolonnes
If Len(xlApp.Workbooks(1).Sheets(1).Cells(nbrelignes, j).Value) > 1 Then donneesvalides = donneesvalides + 1
Next j
'Si on n'a pas de données valables dans la dernière ligne alors on indice les lignes à la ligne
'précédente car la première récupération nous donne la dernière ligne remplie
'On suppose qu'une ligne est remplie si on a au moins deux champs correctement renseignés
If donneesvalides < 2 Then nbrelignes = nbrelignes - 1
Loop Until donneesvalides > 1
Form_FRMCONNEXION.Caption = "Importation en cours ..."
'Déterminer la plage de cellules à copier depuis le fichier Excel
plagecellulesexcel = "A1:" & IIf(Cells(1, nbrecolonnes).Column > 26, Chr(64 + Cells(1, nbrecolonnes).Column \ 26) & Chr(64 + Cells(1, nbrecolonnes).Column Mod 26), Chr(64 + Cells(1, nbrecolonnes).Column)) & nbrelignes
'Code de fermeture
xlBook.Close SaveChanges:=True
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
'Importation des données dans la base
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "TBLGARANTIEEXCEL", fileexcel, True, plagecellulesexcel
Form_FRMCONNEXION.Caption = "Fin de l'importation"
'Transfert des données de TBLGARANTIEEXCEL vers TBLGARANTIE
'Test de chaque élément pour s'assurer qu''il n''est pas déjà enregistré dans la base de données
marequete = "SELECT TBLGARANTIEEXCEL.N°GARANTIE, TBLGARANTIEEXCEL.N°CLIENT, TBLGARANTIEEXCEL.NOMCLIENT, " & _
"TBLGARANTIEEXCEL.COMPTE, TBLGARANTIEEXCEL.NOMNOTAIRE, TBLGARANTIEEXCEL.OPERATIONS, TBLGARANTIEEXCEL.MONTANT, " & _
"TBLGARANTIEEXCEL.DEVISES, TBLGARANTIEEXCEL.DATES, TBLGARANTIEEXCEL.GARANTIES, TBLGARANTIEEXCEL.DESIGNATIONS, " & _
"TBLGARANTIEEXCEL.VALIDITE, TBLGARANTIEEXCEL.CIH, TBLGARANTIEEXCEL.MARCHE, TBLGARANTIEEXCEL.GARANT " & _
"FROM TBLGARANTIEEXCEL"
'ici on récupère tous les enregistrements de la table TBLGARANTIEEXCEL
Set liregarantieexcel = CurrentDb.OpenRecordset(marequete, dbOpenForwardOnly, dbReadOnly)
'A ce niveau, je veux pouvoir lire chaque ligne de la table
'En faisant ce affichage, je pensais pouvoir afficher l'item 0
MsgBox liregarantieexcel.Fields(0).Value
'fermeture
qdf_garantie.Close
'libération de la référence
Set qdf_garantie = Nothing
Exit_PiloterExcelDepuisAccess_Click:
MsgBox "Lignes ajoutées: " & fichierajoute & vbLf & "Lignes rejetées: " & fichiernonajoute
Exit Sub
Err_PiloterExcelDepuisAccess_Click:
MsgBox "Erreur interne lors de l'extraction du fichier excel" |
Partager