[Macro] Vérification somme cellule

Missow

XLDnaute Nouveau
Bonjour à tous,

Je m'explique.

Vous trouverez ci-joint un fichier uploadable directement (après conversion CSV) sous SAP.

Il me sert notamment pour la saisie des notes de frais (rien de plus rapide qu'Excel..).

Je souhaiterais que dans mon exemple joint :

Une macro vérifie si :
- la somme de L5:7 = L4
- la somme de L9:L11 = L8

Plus globalement :
Somme des lignes (contenant 40 en I) sous la ligne contenant "31" en I = valeur en L (sur la ligne du 31)

A chaque nouveau "31" le calcul doit repartir de 0

Ainsi il pourrait m'alerter en ne mettant aucun remplissage si la somme est correcte ou un fond rouge si la somme n'est pas correcte. (dans mon exemple la première somme est fausse et la seconde est vraie)

Précisions -> Les cellules vides sur fond jaune (colonne I) sont remplies par des "40" J'aimerais aussi une macro qui me permette d'effectuer cela, le "31" est renseigné manuellement.
Les cellules sur fond bleu clair sont le fruit d'une macro. (Colonnes E et H)


J'espère avoir été clair, n'hésitez pas si vous avez des questions.

Jordan
 

Pièces jointes

  • DEMANDE EXCEL.xlsx
    193.6 KB · Affichages: 80
  • DEMANDE EXCEL.xlsx
    193.6 KB · Affichages: 75

Grand Chaman Excel

XLDnaute Impliqué
Re : [Macro] Vérification somme cellule

Bonjour,
Si j'ai bien compris, code à essayer :

VB:
Sub Test()
   Dim rg As Range, c As Range, cRef As Range
   Dim Somme As Double, TempSomme As Double

   Set rg = Range("L4:L" & Range("L" & Rows.Count).End(xlUp).Row)
   For Each c In rg
      If c.Offset(0, -3) = 31 Then
         Set cRef = c
         TempSomme = c.Value
         Somme = 0
         Set c = c.Offset(1, 0)

         Do Until c.Offset(0, -3) = 31 Or IsEmpty(c)
            Somme = Somme + c.Value
            c.Offset(0, -3) = 40
            Set c = c.Offset(1, 0)
         Loop

         If Somme <> TempSomme Then cRef.Interior.ColorIndex = 3
      End If
   Next c
End Sub

A+
 

Grand Chaman Excel

XLDnaute Impliqué
Re : [Macro] Vérification somme cellule

Bonjour,
Comme cela :
VB:
Sub Test()
   Dim rg As Range, c As Range, cRef As Range
   Dim Somme As Double, TempSomme As Double

   Set rg = Range("L4:L" & Range("L" & Rows.Count).End(xlUp).Row)
   For Each c In rg
      If c.Offset(0, -3) = 31 Then
         Set cRef = c
         TempSomme = c.Value
         Somme = 0
         If c.Offset(0, 7) = "" Then c.Offset(0, 7) = "4A"
         Set c = c.Offset(1, 0)

         Do Until c.Offset(0, -3) = 31 Or IsEmpty(c)
            Somme = Somme + c.Value
            c.Offset(0, -3) = 40
            If c.Offset(0, 7) = "" Then c.Offset(0, 7) = "4A"
            Set c = c.Offset(1, 0)
         Loop

         If Somme <> TempSomme Then cRef.Interior.ColorIndex = 3
      End If
   Next c
End Sub
 

Discussions similaires

Réponses
5
Affichages
381
Réponses
7
Affichages
316
Réponses
7
Affichages
520

Statistiques des forums

Discussions
312 164
Messages
2 085 870
Membres
103 007
dernier inscrit
salma_hayek