Public Sub test_Lecture()
'Cocher la référence "Microsoft DAO 3.51 Object Library"
'Avant de lancer cette procédure, il faut disposer d'une
'table "DonnéesBrutes" et d'une table "DonnéesCorrigées",
'copie de la précédente mais sans aucun enregistrement.
'Pour ces 2 tables, la structure est la suivante :
'Ligne - Entier long
'Début - Date/heure
'Fin - Date/heure
'Jours - Entier long
'*******************************************************
Dim Db As DAO.Database
Dim tbl1 As DAO.TableDef
Dim tbl2 As DAO.TableDef
Dim DateD As Date, DateF As Date
Dim nbJours As Long, NumLigne As Long
Dim RS1 As DAO.Recordset
Dim RS2 As DAO.Recordset
Set Db = CurrentDb
'Ouverture des tables
Set tbl1 = Db.TableDefs("DonnéesBrutes" )
Set tbl2 = Db.TableDefs("DonnéesCorrigées" )
Set RS1 = tbl1.OpenRecordset(dbOpenTable)
Set RS2 = tbl2.OpenRecordset(dbOpenTable)
RS1.MoveFirst
NumLigne = RS1!Ligne
DateD = RS1!Début
DateF = RS1!Fin
nbJours = RS1!Jours
'Boucle principale
Do
RS1.MoveNext
If RS1.EOF Then
'Fin de fichier, enregistrer la dernière ligne
'et sortie de boucle
RS2.AddNew
RS2!Ligne = NumLigne
RS2!Début = DateD
RS2!Fin = DateF
RS2!Jours = nbJours
RS2.Update
Exit Do
End If
If RS1!Début - DateF = 1 Then
'Cumuler les champs Fin et Jours
DateF = RS1!Fin
nbJours = nbJours + RS1!Jours
Else
'Enregistrer dans la table
'DonnéesCorrigées
RS2.AddNew
RS2!Ligne = NumLigne
RS2!Début = DateD
RS2!Fin = DateF
RS2!Jours = nbJours
RS2.Update
NumLigne = RS1!Ligne
DateD = RS1!Début
DateF = RS1!Fin
nbJours = RS1!Jours
End If
Loop
MsgBox "Traitement terminé"
Set RS2 = Nothing
Set RS1 = Nothing
Set tbl1 = Nothing
Set tbl2 = Nothing
Set Db = Nothing
End Sub
|