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
| private sub DecouperEXcel()
dim db as dao.database:set db=currentdb
dim rXls as dao.recordset:set rXls=db.OpenRecordset("NomTableLieeExcel")
dim rPersonne as dao.recordset : set rPersonne = db.OpenRecordset"Personne", dbOpenDynaset)
dim rConnexe1 as dao.recordset : set rConnexe1 = db.OpenRecordset"Connexe1", dbOpenDynaset) 'À mettre autant de fois que de tables connexes
dim clefPersonne as long
dim criterePersonne as string
do while not rXls.eof() 'Parcours le fichier Excel
'Suppose que les données du fichier Excel sont triées sur la 'personne' et que tu disposes d'une combinaison de champs qui te permet de distinguer tes personnes. Je vais supposer Nom + Prenom + DateNaissance
criterePersonne="[Nom]=""" & rPersonne![nom] & """ and [Prenom]=""" & rPersonne![Prenom] & " and [DateNaissance]=#" & format(rPersonne![DateNaissance],"yyyy-mm-dd") & "#" 'Le format évite les ambiguités sur les dates.
call rPersonne.FindFirst(critere)
if rPersonne.NoMatch() then
'Nouvelle personne
rPersonne.AddNew
rPersonne![Nom]=rXls![Nom]
rPersonne![Prenom]=rXls![Prenom]
' Ici les autres infos relatives à la personne
rPersonne.update
end if
clefPersonne=rPersonne![ClefPersonne]'Attention, valider qu'on récupère bien le numéro de la personne après une création. Sinon, il faut refaire un rPersonne.FindFirst(critere)
'Ce bloc est à répéter pour chacune des tables connexes
' Ajoute les infos connexes
rConnexe1.addnew
rConnexe1![ClefPersonne]=clefPersonne
rConnexe1![ChampConnexe1]=rXls![ChampConnexe1]
rConnexe1![ChampConnexe2]=rXls![ChampConnexe2]
'ici les autres champs de Connexe1
rConnexe1.update
'Fin de bloc à répéter..........................................
rXls.moveNext
loop
rConnexe1.close : set rConnexe1=nothing 'À mettre autant de fois que de tables connexes
rPersonne.close : set rPersonne=nothing 'Ferme et libère la mémoire utilisée
Xls.close:set Xls=nothing
set db=nothing
end sub |
Partager