VBA - Contrôle somme montants

Bonjour à tous,

Je souhaiterais effectuer un contrôle d'équilibrage des montants sur des tableaux.

Avec mon code actuelle ci-dessous, la macro contrôle l'ensemble des montants. Cependant, j'aimerai un contrôle par écriture. Le début d'une nouvelle écriture est formalisée quand le colonne A = "1".

Sub test()

Dim MaPlage As Range, cel As Range
Dim DernLigne As Long
Dim PrF200emLigne As Long
Dim DernLign As Long
Dim PremLign As Long

DernLigne = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
PremLigne = Sheets(1).[A7]
DernLign = Range("B" & Rows.Count).End(xlUp).Row

DernLigne = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row

    Set MaPlage = Sheets(1).Range("F7" & ":F" & DernLigne + 1)
    For Each cel In MaPlage 'pour toutes les cellules de la plage
        If cel.Offset(, -5) = "2" And cel.Offset(, -3) = "40" Then
        cel.Value = "" & cel.Value
        End If
    Next

    Set MaPlage = Sheets(1).Range("F7" & ":F" & DernLigne + 1)
    For Each cel In MaPlage 'pour toutes les cellules de la plage
        If cel.Offset(, -5) = "2" And cel.Offset(, -3) = "50" Then
        cel.Value = "-" & cel.Value
        End If
    Next

Dim total As Double
total = 0

    Set MaPlage = Sheets(1).Range("F7" & ":F" & DernLigne + 1)
      For Each cel In MaPlage 'pour toutes les cellules de la plage
       If cel.Offset(, -5) = "2" Then
          total = total + cel.Value
        End If
      Next

    Sheets(1).Range("F7" & ":F" & DernLigne + 1).Replace What:="-", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Range("F37").Select

    If total <> 0 Then
        dl = Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1
        Sheets(2).Cells(dl, 1) = "Vos écritures ne sont pas équilibrées." & Chr(10) & "Veuillez vérifier la somme des montants"

    End If

    Set MaPlage = Sheets(1).Range("F7" & ":F" & DernLigne + 1)
      For Each cel In MaPlage 'pour toutes les cellules de la plage
       If cel.Offset(, -5) = "2" Then
          cel.NumberFormat = "0.00"

        End If
      Next

    MsgBox "Les contrôles sont terminés." & Chr(10) & Chr(10) & "Merci.", vbInformation

End Sub

Dans mon fichier ci-joint, la somme des montants est = 0, cependant la somme de chaque écriture est différente de 0.

sans titre sans titre2

Avez-vous une idée de code pour lui dire de vérifier si la somme de l'ensemble des écriture est égale à 0 ?

Je pensais à cela, mais je ne vois pas comment le formalisé :

  • somme des montants si colonne A = 2
  • contrôle si somme = 0 jusqu'à la prochaine colonne A = 1
  • Boucle jusqu'à la fin du tableau sachant qu'il peut y avoir X écritures

Merci pour votre aide.

16classeur1.xlsm (17.64 Ko)

Bonjour Jeremy,

Dans l'EXCEL donné en exemple, les montants ne sont pas signés. Est-ce la colonne "C" qui indique le signe sur les ligne "2"?

Bonjour GVIALLES,

Effectivement, c'est bien la colonne C qui détermine le signe des montants.

Quand la colonne C = 50, le montant est négatif

Quand la colonne C = 40, le montant est positif.

Cordialement.

Rechercher des sujets similaires à "vba controle somme montants"