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.
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.
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.