Récupération de valeurs du petit au grand

Résolu
Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Tout d'abord, veuillez me pardonner si je me suis trompé du forum, car je n'arrive pas à définir mon problème.

Je travaille sur une petite application de comptabilité dans le VB6 avec acces.
J'ai arrivé à l'édition de la balance. Celle ci contient

N° du compte
L'intitulé de compte
le montant du Débit
le montant du Crédit
le Solde cumulé

Normalement la saisie des opérations se faisaient par mois et par type de journal ( Achats,Ventes,Banques,Caisse,Opération diverses),

Comme j'édite ma balance par ordre de compte,j'ai rencontré un problème dans le cumul des soldes.
alors j'ai pensé que si j'arrive à récupérer les valeurs de la table de base, du petit compte au grand, et les enregistrer classées dans une autre table de transit, et de là j'édite ma balance, peut être que ça réussira.

Le comment pour récupérer ces valeurs de cette façon m'échappe

Merci pour votre aide

3 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, je suppose que les 5 champs que tu nous montres sont les champs que tu souhaites pour ton résultat.
    souhaites-tu un seul résultat par compte? ou bien veux-tu reprendre toutes les opérations, en calculant à chaque fois le solde instantané?
    peux-tu nous décrire les tables et les champs de ta base?
    peux-tu également partager la source de ton application?
    0
  2. Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   2
     
    Rebonjour

    Merci pour ta réponse. Ce que je cherche , comment, à partir de la table1, où les comptes sont enregistrés d'une façon désordonné, les récupérer du petit compte au plus grand et les enregistrer par ordre croissant dans la table2.

    Encore merci
    0
    1. Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   2
       
      Re bonjour

      Je vous reformule mon probléme d'une autre façon plus simple.
      Comment pourrai je trier , (gràce à un code de vb6, ) les cellules d'une colonne de table en acces de façon croissante. ?

      Merci d'avance pour votre aide
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention  
       
      montre-nous le code que tu utilises. difficile de t'expliquer comment adapter ton code sans rien en savoir.
      0
    3. Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   2
       
      Re bonjour

      Voilà, je vous explique avant tout.

      J'ai :
      A- une Table principale ( TableTraitement) où je saisie les opérations comptables.
      B-une commande pour imprimer la Balance (Etat comptable). on y trouve 6 colonnes
      Colonne 1 : Compte
      Colonne 2 : Intitulé
      Colonne 3 : Debit
      Colonne 4 : Credit
      Colonne 5 : Solde
      Colonne 6 : Cumul

      Pour passer de la TableTraitement à la Balance, je passe par une Table de transit (TableBalance).
      Celle-ci se vide et se remplie lors de chaque commande d'impression de la balance.


      Après plusieurs tentative, j'ai réussi une partie de mon objectif, c'est à dire avoir le classement par ordre croissant des comptes, en passant par une autre table de transit ( TableBalanceClas ). Celle-ci se vide et se remplie lors de chaque commande.
      Elle se remplie par la récupération des données de la première table de transit (TableBalance).

      Mon problème reste dans l'enregistrement des cumul dans cet ordre (c.à.d l'ordre croissant des comptes)


      mes codes sont comme suite:




      Private Sub CmdImprimer_Click()

      'la commande d'mpression ( Sélection de : Tous )

      If OptTous.Value = True Then

      'Aller vers la sub de calcul


      Call Balance

      End If
      
      


      Sub Balance()


      '________Vider la TableBalance


      Dim I, PN, DN As Integer

      'Determiner le premier Numéro

      SQLs = "select * from TableBalance where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdreBalance asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS![NOrdreBalance] <> 0 Then
      RS.MoveFirst
      PN = RS![NOrdreBalance]
      End If
      RS.Close


      'Determiner le Dernier numéro

      SQLs = "select * from TableBalance where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdreBalance asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS![NOrdreBalance] <> 0 Then
      RS.MoveLast
      DN = RS![NOrdreBalance]
      End If
      RS.Close

      'Récupérer les valeurs et les enregistrer

      For I = PN To DN Step 1

      SQLs = "select * from TableBalance where ((Dossier='" & CStr(VarDossier) & "')and (NOrdreBalance=" & CInt(I) & "))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If I <> 0 Then


      SQLs = "select * from TableBalance where ((Dossier='" & CStr(VarDossier) & "')and (NOrdreBalance=" & CInt(I) & "))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS![NOrdreBalance] = I Then
      RS.Delete
      End If
      RS.Close

      End If


      Next I



      '_________Vider la TableBalanceClas



      Dim IClas, PNClas, DNClas As Integer

      'Determiner le premier Numéro

      SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS![NOrdre] <> 0 Then
      RS.MoveFirst
      PNClas = RS![NOrdre]
      End If
      RS.Close


      'Determiner le dernier numéro

      SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS![NOrdre] <> 0 Then
      RS.MoveLast
      DNClas = RS![NOrdre]
      End If
      RS.Close


      'Récupérer les valeurs et les enregistrer

      For IClas = PNClas To DNClas Step 1

      SQLs = "select * from TableBalanceClas where ((Dossier='" & CStr(VarDossier) & "')and (NOrdre=" & CInt(IClas) & "))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If IClas <> 0 Then


      SQLs = "select * from TableBalanceClas where ((Dossier='" & CStr(VarDossier) & "')and (NOrdre=" & CInt(IClas) & "))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS![NOrdre] = IClas Then
      RS.Delete
      End If
      RS.Close

      End If


      Next IClas


      '_________Remplir la TableBalance


      Dim ITrait, PNTrait, DNTrait As Integer


      SQLs = "select * from TableTraitement where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS![NOrdre] <> 0 Then
      RS.MoveFirst
      PNTrait = RS![NOrdre]
      End If
      RS.Close


      SQLs = "select * from TableTraitement where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS![NOrdre] <> 0 Then
      RS.MoveLast
      DNTrait = RS![NOrdre]
      End If
      RS.Close


      For ITrait = PNTrait To DNTrait Step 1

      Dim Compte, Intitule As String
      Dim Debit, Credit As Double


      SQLs = "select * from TableTraitement where ((Dossier='" & CStr(VarDossier) & "')and (NOrdre=" & CInt(ITrait) & "))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS![NOrdre] = ITrait Then
      Compte = RS![Compte]
      Intitule = RS![Intitule]
      End If
      RS.Close


      SQLs = "select sum(Debit) from TableTraitement where ((Dossier='" & CStr(VarDossier) & "')and (Compte='" & CStr(Compte) & "'))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      Debit = Format(RS.Fields(0), "#,##0.00")
      RS.Close


      SQLs = "select sum(Credit) from TableTraitement where ((Dossier='" & CStr(VarDossier) & "')and (Compte='" & CStr(Compte) & "'))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      Credit = Format(RS.Fields(0), "#,##0.00")
      RS.Close



      '____________________

      Dim NOrdreBalance As Integer


      SQLs = "select * from TableBalance where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdreBalance asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic


      If RS![NOrdreBalance] <> 0 Then
      RS.MoveLast
      NOrdreBalance = RS![NOrdreBalance] + 1
      Else
      NOrdreBalance = 1
      End If
      RS.Close



      SQLs = "select * from TableBalance where ((Dossier='" & CStr(VarDossier) & "')and (Compte='" & CStr(Compte) & "'))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS.EOF Then
      GoTo Oks:
      Exit Sub
      Else
      GoTo Nos:
      Exit Sub
      End If


      Oks:




      RS.AddNew
      RS![NOrdreBalance] = NOrdreBalance
      RS![Societe] = VarSociete
      RS![Dossier] = VarDossier
      RS![Compte] = Compte
      RS![Intitule] = Intitule
      RS![Debit] = Debit
      RS![Credit] = Credit
      RS.Update
      RS.Close


      Nos:

      Next ITrait

      '________Reclassement des comptes dans la TableBalanceClas

      Dim NbreLignes, ILignes, NOrdreLignes As Integer
      Dim CompteLignes, IntituleLignes As String
      Dim DebitLignes, CreditLignes As Double


      SQLs = "select Compte from TableBalance where (Dossier='" & CStr(VarDossier) & "')" & "order by Compte asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenStatic


      NbreLignes = RS.RecordCount
      RS.Close


      For ILignes = 1 To NbreLignes Step 1

      SQLs = "select * from TableBalance where ((Dossier='" & CStr(VarDossier) & "') and (NOrdreBalance=" & CInt(ILignes) & "))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenStatic


      If RS![NOrdreBalance] = ILignes Then
      CompteLignes = RS![Compte]
      IntituleLignes = RS![Intitule]
      DebitLignes = RS![Debit]
      CreditLignes = RS![Credit]
      End If
      RS.Close


      '______________

      SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenStatic

      If RS![NOrdre] <> 0 Then
      RS.MoveLast
      NOrdreLignes = RS![NOrdre] + 1
      Else
      NOrdreLignes = 1
      End If
      RS.Close


      '______________
      SQLs = "select * from TableBalanceClas where (Compte=" & CLng(CompteLignes) & ")"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenStatic


      If RS.EOF Then
      GoTo OkLignes:
      Exit Sub
      Else
      GoTo NoLignes:
      Exit Sub
      End If

      OkLignes:

      RS.AddNew
      RS![Compte] = CLng(CompteLignes)
      RS![Intitule] = IntituleLignes
      RS![Debit] = DebitLignes
      RS![Credit] = CreditLignes
      RS![NOrdre] = NOrdreLignes
      RS![Dossier] = VarDossier
      RS.Update
      RS.Close

      NoLignes:

      Next ILignes


      '________Calcul des soldes


      Dim ISoldes, PNSoldes, DNSoldes As Integer
      Dim DebitSoldes, CreditSoldes, MtSoldes As Double


      SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS![NOrdre] <> 0 Then
      RS.MoveFirst
      PNSoldes = RS![NOrdre]
      End If
      RS.Close


      SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS![NOrdre] <> 0 Then
      RS.MoveLast
      DNSoldes = RS![NOrdre]
      End If
      RS.Close


      For ISoldes = PNSoldes To DNSoldes Step 1




      SQLs = "select * from TableBalanceClas where ((Dossier='" & CStr(VarDossier) & "') and (NOrdre=" & CInt(ISoldes) & "))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic


      If RS![NOrdre] = ISoldes Then
      DebitSoldes = RS![Debit]
      CreditSoldes = RS![Credit]
      End If
      RS.Close

      MtSoldes = CDbl(DebitSoldes) - CDbl(CreditSoldes)


      SQLs = "select * from TableBalanceClas where ((Dossier='" & CStr(VarDossier) & "') and (NOrdre=" & CInt(ISoldes) & "))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic


      If RS![NOrdre] = ISoldes Then
      RS![Solde] = MtSoldes
      RS.Update
      End If
      RS.Close




      Next ISoldes



      End Sub
      
          
      0
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      as-tu essayé de faire
      delete * from TableBalance
      pour vider la table?
      0
    5. Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   2
       
      Re bonjour

      Jamais. pour une simple raison : je ne le savais pas
      je vais l'essayer

      Merci pour l'information
      0
  3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    suggestion:
    SQLs = " select Compte, Intitule, sum(Debit) as totaldebit, sum(Credit) as totalcredit " _
        + " from TableTraitement " _
        + " where Dossier='" + CStr(VarDossier) + "' order by Compte"
    RStrait.Open SQLs, db, adOpenKeyset, adLockPessimistic
    db.Execute "delete * from TableBalance where Dossier='" + CStr(VarDossier) + "' "
    RSbal.Open "TableBalance", db, adOpenKeyset, adLockPessimistic
    cumul = 0
    Do While Not RStrait.EOF
        RSbal.AddNew
        RSbal![Societe] = VarSociete
        RSbal![dossier] = VarDossier
        RSbal![Compte] = RStrait!Compte
        RSbal![Intitule] = RStrait!Intitule
        RSbal![Debit] = RStrait!totaldebit
        RSbal![Credit] = RStrait!totalcredit
        RSbal![solde] = RStrait!totaldebit - RStrait!totalcredit
        cumul = cumul + RSbal![solde]
        RSbal![cumul] = cumul
        RSbal.Update
        RStrait.MoveNext
    Loop
    RStrait.Close
    RSbal.Close
    0
    1. Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   2
       
      Bonjour

      Vous m'aviez bien aidé par votre suggestion. je m'en suis inspiré et le resultat était positif.
      voilà ce que j'ai écris comme code :


      '________NOrdre

      Dim NbreNOrdre As Integer

      NOrdreLignes = 1

      SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by Compte asc"
      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic


      Do While Not RS.EOF

      RS![NOrdre] = NOrdreLignes
      RS.Update

      NOrdreLignes = NOrdreLignes + 1

      RS.MoveNext
      Loop
      RS.Close



      Toute ma commande d'impression est redevenue comme suite :

      Sub Balance()


      '________Vider la TableBalance



      SQLs = "delete * from TableBalance"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic


      '_________Vider la TableBalanceClas






      SQLs = "delete * from TableBalanceClas"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic




      '_________Remplir la TableBalance


      Dim ITrait, PNTrait, DNTrait As Integer


      SQLs = "select * from TableTraitement where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS![NOrdre] <> 0 Then
      RS.MoveFirst
      PNTrait = RS![NOrdre]
      End If
      RS.Close


      SQLs = "select * from TableTraitement where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS![NOrdre] <> 0 Then
      RS.MoveLast
      DNTrait = RS![NOrdre]
      End If
      RS.Close


      For ITrait = PNTrait To DNTrait Step 1

      Dim Compte, Intitule As String
      Dim Debit, Credit As Double


      SQLs = "select * from TableTraitement where ((Dossier='" & CStr(VarDossier) & "')and (NOrdre=" & CInt(ITrait) & "))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS![NOrdre] = ITrait Then
      Compte = RS![Compte]
      Intitule = RS![Intitule]
      End If
      RS.Close


      SQLs = "select sum(Debit) from TableTraitement where ((Dossier='" & CStr(VarDossier) & "')and (Compte='" & CStr(Compte) & "'))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      Debit = Format(RS.Fields(0), "#,##0.00")
      RS.Close


      SQLs = "select sum(Credit) from TableTraitement where ((Dossier='" & CStr(VarDossier) & "')and (Compte='" & CStr(Compte) & "'))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      Credit = Format(RS.Fields(0), "#,##0.00")
      RS.Close



      '____________________

      Dim NOrdreBalance As Integer


      SQLs = "select * from TableBalance where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdreBalance asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic


      If RS![NOrdreBalance] <> 0 Then
      RS.MoveLast
      NOrdreBalance = RS![NOrdreBalance] + 1
      Else
      NOrdreBalance = 1
      End If
      RS.Close



      SQLs = "select * from TableBalance where ((Dossier='" & CStr(VarDossier) & "')and (Compte='" & CStr(Compte) & "'))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS.EOF Then
      GoTo Oks:
      Exit Sub
      Else
      GoTo Nos:
      Exit Sub
      End If


      Oks:




      RS.AddNew
      RS![NOrdreBalance] = NOrdreBalance
      RS![Societe] = VarSociete
      RS![Dossier] = VarDossier
      RS![Compte] = Compte
      RS![Intitule] = Intitule
      RS![Debit] = Debit
      RS![Credit] = Credit
      RS.Update
      RS.Close


      Nos:

      Next ITrait

      '________Reclassement des comptes dans la TableBalanceClas

      Dim NbreLignes, ILignes, NOrdreLignes As Integer
      Dim CompteLignes, IntituleLignes As String
      Dim DebitLignes, CreditLignes As Double


      SQLs = "select Compte from TableBalance where (Dossier='" & CStr(VarDossier) & "')" & "order by Compte asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenStatic


      NbreLignes = RS.RecordCount
      RS.Close



      For ILignes = 1 To NbreLignes Step 1

      SQLs = "select * from TableBalance where ((Dossier='" & CStr(VarDossier) & "') and (NOrdreBalance=" & CInt(ILignes) & "))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenStatic


      If RS![NOrdreBalance] = ILignes Then
      CompteLignes = RS![Compte]
      IntituleLignes = RS![Intitule]
      DebitLignes = RS![Debit]
      CreditLignes = RS![Credit]
      End If
      RS.Close


      '______________
      SQLs = "select * from TableBalanceClas where (Compte=" & CLng(CompteLignes) & ")"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenStatic


      If RS.EOF Then
      GoTo OkLignes:
      Exit Sub
      Else
      GoTo NoLignes:
      Exit Sub
      End If

      OkLignes:

      RS.AddNew
      RS![Compte] = CLng(CompteLignes)
      RS![Intitule] = IntituleLignes
      RS![Debit] = DebitLignes
      RS![Credit] = CreditLignes
      RS![Dossier] = VarDossier
      RS.Update
      RS.Close

      NoLignes:


      Next ILignes



      '________NOrdre

      Dim NbreNOrdre As Integer

      NOrdreLignes = 1

      SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by Compte asc"
      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic


      Do While Not RS.EOF

      RS![NOrdre] = NOrdreLignes
      RS.Update

      NOrdreLignes = NOrdreLignes + 1

      RS.MoveNext
      Loop
      RS.Close




      '________Calcul des soldes


      Dim ISoldes, PNSoldes, DNSoldes, ISoldesAv As Integer
      Dim DebitSoldes, CreditSoldes, MtSoldes, MtCumuls As Double
      Dim DebitSoldesAv, CreditSoldesAv, MtSoldesAv, MtCumulsAv As Double


      SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS![NOrdre] <> 0 Then
      RS.MoveFirst
      PNSoldes = RS![NOrdre]
      End If
      RS.Close


      SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      If RS![NOrdre] <> 0 Then
      RS.MoveLast
      DNSoldes = RS![NOrdre]
      End If
      RS.Close


      For ISoldes = PNSoldes To DNSoldes Step 1




      SQLs = "select * from TableBalanceClas where ((Dossier='" & CStr(VarDossier) & "') and (NOrdre=" & CInt(ISoldes) & "))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic


      If RS![NOrdre] = ISoldes Then
      DebitSoldes = RS![Debit]
      CreditSoldes = RS![Credit]
      End If
      RS.Close

      MtSoldes = CDbl(DebitSoldes) - CDbl(CreditSoldes)




      SQLs = "select * from TableBalanceClas where ((Dossier='" & CStr(VarDossier) & "') and (NOrdre=" & CInt(ISoldes) & "))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic


      If RS![NOrdre] = ISoldes Then
      RS![Solde] = MtSoldes
      RS.Update
      End If
      RS.Close


      '_______________Les données de la ligne antérieure

      ISoldesAv = ISoldes - 1



      If ISoldes = 1 Then
      MtCumuls = CDbl(MtSoldes)

      ElseIf ISoldes > 1 Then

      SQLs = "select * from TableBalanceClas where ((Dossier='" & CStr(VarDossier) & "') and (NOrdre=" & CInt(ISoldesAv) & "))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic


      If RS![NOrdre] = ISoldesAv Then
      MtCumulsAv = RS![Cumul]
      End If
      RS.Close

      MtCumuls = CDbl(MtCumulsAv) + CDbl(MtSoldes)
      End If



      SQLs = "select * from TableBalanceClas where ((Dossier='" & CStr(VarDossier) & "') and (NOrdre=" & CInt(ISoldes) & "))"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic


      If RS![NOrdre] = ISoldes Then
      RS![Cumul] = MtCumuls
      RS.Update
      End If
      RS.Close


      Next ISoldes

      '_____________________________________________

      Dim DebitG, CreditG, SoldeG As Double


      SQLs = "select sum(Debit) from TableBalance where (Dossier='" & CStr(VarDossier) & "')"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      DebitG = Format(RS.Fields(0), "#,##0.00")
      RS.Close


      SQLs = "select sum(Credit) from TableBalance where (Dossier='" & CStr(VarDossier) & "')"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

      CreditG = Format(RS.Fields(0), "#,##0.00")
      RS.Close

      SoldeG = Format((CDbl(DebitG) - CDbl(CreditG)), "#,##0.00")

      '_________________________________________________________________________
      On Error Resume Next


      SQLs = "select * from TableBalanceClas where (Dossier='" & CStr(VarDossier) & "')" & "order by Compte asc"

      If RS.State = adStateOpen Then RS.Close
      RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic


      ADBalance.RecordSource = SQLs

      Set DRBalance.DataSource = ADBalance


      ADBalance.Refresh


      DRBalance.Sections("Section4").Controls("LDossier").Caption = VarDossier
      DRBalance.Sections("Section4").Controls("LDateDebut").Caption = VarDateD
      DRBalance.Sections("Section4").Controls("LDateFinale").Caption = VarDateF


      DRBalance.Sections("Section5").Controls("LblSolde").Caption = Format(SoldeG, "#,##0.00")

      DRBalance.Show
      DRBalance.WindowState = 2




      End Sub

      
      


      Avec toute ma reconnaissance
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      suggestion corrigée:
      SQLs = " select Compte, Intitule, sum(Debit) as totaldebit, sum(Credit) as totalcredit " _
          + " from TableTraitement " _
          + " where Dossier='" + CStr(VarDossier) _
          + "' group by Compte, Intitule order by Compte"
      RStrait.Open SQLs, db, adOpenKeyset, adLockPessimistic
      db.Execute "delete * from TableBalance where Dossier='" + CStr(VarDossier) + "' "
      RSbal.Open "TableBalance", db, adOpenKeyset, adLockPessimistic
      cumul = 0
      Do While Not RStrait.EOF
          RSbal.AddNew
          RSbal![Societe] = VarSociete
          RSbal![dossier] = VarDossier
          RSbal![Compte] = RStrait!Compte
          RSbal![Intitule] = RStrait!Intitule
          RSbal![Debit] = RStrait!totaldebit
          RSbal![Credit] = RStrait!totalcredit
          RSbal![solde] = RStrait!totaldebit - RStrait!totalcredit
          cumul = cumul + RSbal![solde]
          RSbal![cumul] = cumul
          RSbal.Update
          RStrait.MoveNext
      Loop
      RStrait.Close
      RSbal.Close
      0
    3. Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   2
       
      Re bonjour

      Merci infiniment;
      0
    4. Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   2
       
      Bonjour

      J'ai essayé votre suggestion avec réussite pour récupérer le cumul d'une table sans aucun filtre.
      la Question comment pourrai je faire avec ces phrases de codes pour avoir le cumul avec filtre,
      c'est à dire le calcul des cumul pour chaque compte enregistré dans cette table ?

      Merci d'avance
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Lenouveauapprenti Messages postés 306 Date d'inscription   Statut Membre Dernière intervention  
         
        chaque compte enregistré dans quelle table?
        0