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
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
=
Merci beaucoup sylvanu!
Dernière question si je ne connais pas la derniere ligne comment puis je descendre la formule jusqu a la derniere ligne ou il y a des valeurs.
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
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
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