SOMME de plusieurs montants avec condition

Bonjour,

J'aimerais que vous me proposé une solution pour ma macro qui fait la somme des montants pour un même numéro de sinistre (colonne 10) et un même code compagnie (colonne 8)

Je sais pas comment faire pour faire la somme de toutes ces lignes en VBA svp.

Nb: Le résultat de la somme ce fera en colonne 18. (il s'agit d'un fichier de 5000lignes)

Voici le début de macro que j'ai fais mais je sais pas quoi mettre en colonne 18.

Derligne = .Range("A" & Rows.Count).End(xlUp).Row
   For i = 3 To Derligne
    '2eme ligne à comparer
    For ii = i + 1 To Derligne

  If Cells(i, 8) = Cells(ii, 8) And Cells(i, 10) = Cells(ii, 10) Then

  Cells (i,18)=

Merci de me corrigé

Bonjour Kévin,

Une piste :

Sub SommeSiEns()

Dim Derligne As Long, i As Long, Col As Integer
Col = 1 '<-- n° de colonne contenant les montants à sommer
Derligne = .Range("A" & Rows.Count).End(xlUp).Row
For i = 3 To Derligne
    Cells(i,18) = Application.SumIfs(Range(Cells(3, Col), Cells(Derligne, Col)), Range(Cells(3, 8), Cells(Derligne, 8)), Cells(i, 8), Range(Cells(3, 10), Cells(Derligne, 10)), Cells(i, 10)) 'Appel de la fonction Excel SOMME.SI.ENS()
Next i

End Sub

Il faut prévoir des instructions supplémentaires si des cellules ne sont pas complétées ou vides, sinon tu auras des messages d'erreur.

bonjour

resalut Pedro

pourquoi pas sans VBA, avec un simple TCD ?

(ou des SOMMEPROD, mais selon ton fichier et ton PC, ça peut être lent. Avantage : c'est simple)

amitiés à tous

Vraiment très efficaces ! Je m’étais embêté à faire un tableau en macro

re

qu'est-ce qui est très efficace ?

re

qu'est-ce qui est très efficace ?

Salut jmd !

Le TCD sans doute, les formules SOMME.SI.ENS et consœurs ne valent pas la rapidité et la fiabilité d'un TCD, même via VBA...

re

qu'est-ce qui est très efficace ?

Ton code mon amis

Effectivement, le Tableau Croisé Dynamique, plus simple, fiable et rapide pour cette tâche.

Non excusez moi ce qui est très efficace par apport a mon message précédent et bien le code de Pedro. Pour moi un TCD est plus compliqué en codage et en automatisation.

Mais c'est une solution.

Merci de ton efficacité Pedro

Non excusez moi ce qui est très efficace par apport a mon message précédent et bien le code de Pedro. Pour moi un TCD est plus compliqué en codage et en automatisation.

Mais c'est une solution.

Merci de ton efficacité Pedro

dans un TCD il n'y a aucun codage, ni besoin d'aucune automatisation

connais-tu les TCD ?

note : si tu pensais créer "automatiquement" un TCD à chaque fichier, c'est que tu ne les connais pas.

bonne journée,

amitiés

Oui sauf que un TCD on doit l'actualisé a chaque fois, je préfère l'automatisation par VBA.

Mais tu as raison c'est aussi efficace.

Pédro je ne comprends pas pourquoi il me bloque sur la première ligne du ElseIf. Le message d'erreur : " ElseIf sans If"

With Sheets("SUIVTRANS EN COURS")
    Derligne = .Range("A" & Rows.Count).End(xlUp).Row
    For j = 3 To Derligne
    For jj = j + 1 To Derligne

        'REGULARISATION ECART-TEMPLATE (2)

         If .Cells(j, "R") >= -10 And .Cells(j, "R") <= 10 And .Cells(j, "R") <> 0 Then .Cells(j, 13) = "REGULARISATION ECART-TEMPLATE"

        'SOLDE CREDITEUR - A REMBOURSER (3)

        ElseIf .Cells(j, "R") < -10 Then
            .Cells(j, 13) = "SOLDE CREDITEUR - A REMBOURSER"

        'REGLT CIE - SOLDE DEBITEUR (4)

         ElseIf .Cells(j, 9) = "REGLT" And .Cells(j, "R") > 10 Then
            .Cells(j, 13) = "REGLT CIE-SOLDE DEBITEUR"

        'ANNULATION TECHNIQUE (5)
        ElseIf Mid(.Cells(j, "F").Text, 5, 1) = "A" And Mid(.Cells(j, "F").Text, 1, 1) = "S" Then .Cells(j, "M").Value = "ANNULATION TECHNIQUE"

      End If

Next jj
    Next j

End With

Il existe plusieurs syntaxes possibles avec "If" :

1 ligne :

If condition Then Instruction 'Pas besoin de "End If" dans ce cas

Plusieurs lignes :

If condition Then
   Instruction
   Instruction2 'facultatif
Else 'facultatif
   'Instruction autre
End If

Il faut donc que tu sautes une ligne dans cette partie après "Then" :

If .Cells(j, "R") >= -10 And .Cells(j, "R") <= 10 And .Cells(j, "R") <> 0 Then .Cells(j, 13) = "REGULARISATION ECART-TEMPLATE"
'Devient :
If .Cells(j, "R") >= -10 And .Cells(j, "R") <= 10 And .Cells(j, "R") <> 0 Then 
   .Cells(j, 13) = "REGULARISATION ECART-TEMPLATE"
Elseif Truc '... 

Merci Pedro.

Peux-tu me dire comment rajouté cette condition (j=3) :

ElseIf Mid(.Cells(j, 6).Text, 5, 1) = "A" And Mid(.Cells(j, 6).Text, 1, 1) = "S" 
Then .Cells(j, 13).Value = "ANNULATION TECHNIQUE"

Dans cette formule :

=SI(I3="";"PRINCIPAL "&STXT(O3;9;8);SI(GAUCHE(I3;5)="REGLT";"REGLT";SI(GAUCHE(I3;1)="G";"TAXE DE GESTION";SI(GAUCHE(I3;1)="P";"PRINCIPAL "&STXT(O3;9;8);SI(GAUCHE(I3;1)="R";"RECOURS "&STXT(O3;9;8);SI(GAUCHE(I3;1)="F";"FRAIS"))))))

Et en gros ANNULATION TECHNIQUE devrait être mis en I3

Rechercher des sujets similaires à "somme montants condition"