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
| Public Function CréerLesMvts(LaTable As String)
Dim Q As QueryDef
Dim TypeMvts As String
Dim Rec As DAO.Recordset
Dim Fld As Field
Dim Arg1, Arg2, Arg3, Arg5, Arg6 As String
Dim Arg4 As Long
Dim Sql As String
DoCmd.SetWarnings False
'Vidanger les mvts existants
TypeMvts = Mid(LaTable, 9, Len(LaTable) - 8)
'vidange du fichier mvt(i)
Sql = "DELETE Mvts" & TypeMvts & ".id FROM Mvts" & TypeMvts & ";"
Set Q = CurrentDb.CreateQueryDef("temp", Sql)
DoCmd.OpenQuery "temp"
DoCmd.DeleteObject acQuery, "temp"
Set Q = Nothing
'LireLaTable en séquence
Set Rec = CurrentDb.OpenRecordset(LaTable)
Do Until Rec.EOF
'détecter les champs déclencheurs de mouvements et créer le Mvt
For Each Fld In Rec.Fields
If Fld = 0 Then GoTo ChampSuivant
Arg1 = Mid(LaTable, 9, 3) 'origine
Arg2 = Rec("N°extrait") 'N°Extrait
Arg3 = Rec("Date") 'Date
Select Case Fld.Name
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Case "M3D001" To "M3D999" 'je voudrais exprimer comme M3D*
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Arg4 = Rec("N" & Right(Fld.Name, Len(Fld.Name) - 1)) 'N°Cpte
Arg5 = ScanSubsti(CStr(Fld.Value * -1), ",", ".") 'Montant avec un .
Arg6 = Nz(Rec("L" & Right(Fld.Name, Len(Fld.Name) - 1)), " ") 'Libellé
Call CréerMvts_écrire(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
Case "M3C001" To "M3C999"
Arg4 = Rec("N" & Right(Fld.Name, Len(Fld.Name) - 1)) 'N°Cpte
Arg5 = ScanSubsti(CStr(Fld.Value), ",", ".") 'Montant avec un .
Arg6 = Nz(Rec("L" & Right(Fld.Name, Len(Fld.Name) - 1)), " ") 'Libellé
Call CréerMvts_écrire(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
Case "M2D001000000" To "M2D999999999"
Arg4 = Mid(Fld.Name, 7, 6) 'N°Cpte
Arg5 = ScanSubsti(CStr(Fld.Value * -1), ",", ".") 'Montant avec un .
Arg6 = Nz(Rec("L" & Right(Fld.Name, Len(Fld.Name) - 1)), " ") 'Libellé
Call CréerMvts_écrire(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
Case "M2C001000000" To "M2C999999999"
Arg4 = Mid(Fld.Name, 7, 6) 'N°Cpte
Arg5 = ScanSubsti(CStr(Fld.Value), ",", ".") 'Montant avec un .
Arg6 = Nz(Rec("L" & Right(Fld.Name, Len(Fld.Name) - 1)), " ") 'Libellé
Call CréerMvts_écrire(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
Case "M1D001000000" To "M1D999999999"
Arg4 = Mid(Fld.Name, 7, 6) 'N°Cpte
Arg5 = ScanSubsti(CStr(Fld.Value * -1), ",", ".") 'Montant avec un .
Arg6 = " " 'Libellé
Call CréerMvts_écrire(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
Case "M1C001000000" To "M1C999999999"
Arg4 = Mid(Fld.Name, 7, 6) 'N°Cpte
Arg5 = ScanSubsti(CStr(Fld.Value), ",", ".") 'Montant avec un .
Arg6 = " " 'Libellé
Call CréerMvts_écrire(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
Case "Visa1" To "Visa9"
Arg4 = "490021" 'N°Cpte
Arg5 = ScanSubsti(CStr(Fld.Value), ",", ".") 'Montant avec un .
Arg6 = "Visa" 'Libellé
Call CréerMvts_écrire(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
Arg4 = "580000" 'N°Cpte
Arg5 = ScanSubsti(CStr(Fld.Value * -1), ",", ".") 'Montant avec un .
Call CréerMvts_écrire(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)
End Select
ChampSuivant:
Next Fld
Rec.MoveNext
Loop
'créer les contreparties
Call CréerMvts_contreparties(LaTable)
DoCmd.SetWarnings True
End Function |