Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Vba utilisation Sumifs

Ldhmn

XLDnaute Nouveau
Bonjour,

Je débute en vba je voudrais calculer de maniere rapide des somme si ens.
J ai lu qu'en vba c est beaucoup plus rapide mais je sèche car je souhaite faire la somme de Chiffre d affaire total par client selon des critères qui changent à chaque ligne sachant que j ai des dates differentes sur chaque ligne. Les critères de la somme si ens:
Une colonne avec le type de ville, et une autre avec le commercial.
La somme de CA client doit-etre redondante sur plusieurs lignes
Colonne B=ville
Colonne C=commercial
Colonne E=CA
Colonne F= somme si ens
J ai essayé avec la fonction For each cell ("F3:F4000")
Puis sumifs(range ("E3:E4000"), range ("B3:B4000"), range("B3"), range("C3:C4000"), range ("C3"))
Par quoi remplacer B3 pour que sur la ligne du dessous la valeur prise en compte soit celle de la cellule B4 et ainsi de suite.
Merci de votre aide
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Ldhmm,
Je ne pense pas que le VBA sera plus rapide qu'une formule.
Ceci étant dit, vous pouvez essayer :
VB:
Sub Ldhmm()
With Sheets("Feuil1")
    For L = 3 To 4000
        .Cells(L, "F") = Application.SumIfs(.Range("E3:E4000"), _
                        .Range("B3:B4000"), Cells(L, "B"), .Range("C3:C4000"), Cells(L, "C"))
    Next L
End With
End Sub
=
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
En utilisant .Range("A65500").End(xlUp).Row qui trouve la dernière ligne utilisée et d'utiliser cette variable pour définir les plages de travail.

VB:
Sub Ldhmm()
With Sheets("Feuil1")
    DerLig = .Range("E65500").End(xlUp).Row ' Modifier colonne si necessaire'
    For L = 3 To DerLig
        .Cells(L, "F") = Application.SumIfs(.Range("E3:E" & DerLig), _
                        .Range("B3:B" & DerLig), Cells(L, "B"), .Range("C3:C" & DerLig), Cells(L, "C"))
    Next L
End With
End Sub
 

ChTi160

XLDnaute Barbatruc
Bonjour Ldhmm
Bonjour le Fil ,le Forum
Pour vous saluer et donner mon approche
Il faut déterminer la dernière ligne non vide de la colonne représentative
Pour Exemple ici : Colonne "C"
VB:
With Sheets("Feuil1")
Derlgn= .Cells(.Rows.count,3).End(xlup).Row
    For L = 3 To Derlgn
        .Cells(L, "F") = Application.SumIfs(.Range("E3:E" &Derlgn), _
                        .Range("B3:B"&Derlgn), Cells(L, "B"), .Range("C3:C" & Derlgn), Cells(L, "C"))
    Next L
End With
En espérant fait avancer le chimilimblick lol
Édit oupss trop rapide lol
(De mon téléphone)
Jean marie
 
Dernière édition:

Ldhmn

XLDnaute Nouveau
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…