Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Somme sur col. C suivant col. B

7 réponses
Avatar
astalavista
Bonjour


Je cherche à implémanter l'"algorithme" suivant, en VBA:

Parcourir la colonne B
si B.value contient "toto" alors
sommetoto = sommetoto + C.value
si B.value contient "tata" alors
sommetata = sometata + C.value
....

Pouvez-vous m'aider?
Merci d'avance

7 réponses

Avatar
AV
| Parcourir la colonne B
| si B.value contient "toto" alors
| sommetoto = sommetoto + C.value
| si B.value contient "tata" alors
| sommetata = sometata + C.value

Les boucles, d'une façon générale, moins il y en a et mieux c'est !
Inutile de parcourir la colonne B pour tester les contenus et ...etc...
La fonction SOMME.SI fait ça très bien
Si tu tiens au vba ça ferait :

x1 = Application.SumIf([B:B], "toto", [C:C])
x2 = Application.SumIf([B:B], "tata", [C:C])

AV
Avatar
Ardus Petus
Je suppose que tu travailles dans ActiveWorksheet

Sub sumIt()
Dim sommetoto As Double
Dim sommetata As Double
Dim c As Range
For Each c In Range(Cells(1, "B"), Cells(Rows.Count, "B").End(xlUp))
Select Case c.Value
Case "toto"
sommetoto = sommetoto.c.Offset(0, 1).Value
Case "tata"
sommetata = sommetata.c.Offset(0, 1).Value
End Select
Next c
End Sub

Cordialement,
--
AP

"astalavista" a écrit dans le message de
news:444b8d53$0$9631$
Bonjour


Je cherche à implémanter l'"algorithme" suivant, en VBA:

Parcourir la colonne B
si B.value contient "toto" alors
sommetoto = sommetoto + C.value
si B.value contient "tata" alors
sommetata = sometata + C.value
....

Pouvez-vous m'aider?
Merci d'avance




Avatar
astalavista
Les boucles, d'une façon générale, moins il y en a et mieux c'est !
Inutile de parcourir la colonne B pour tester les contenus et ...etc...
La fonction SOMME.SI fait ça très bien
Si tu tiens au vba ça ferait :

x1 = Application.SumIf([B:B], "toto", [C:C])
x2 = Application.SumIf([B:B], "tata", [C:C])

AV


Merci, OK pour la fonction
mais ça renvoie toujours 0
j'ai l'impression que ça vient du fait que le
critère dont j'ai besoin est:
contient "toto"
c'est à dire xxxtotoxxx doît être comptabilisé
est-ce possible ?

Avatar
astalavista
Sub sumIt()
Dim sommetoto As Double
Dim sommetata As Double
Dim c As Range
For Each c In Range(Cells(1, "B"), Cells(Rows.Count, "B").End(xlUp))
Select Case c.Value
Case "toto"
sommetoto = sommetoto.c.Offset(0, 1).Value
Case "tata"
sommetata = sommetata.c.Offset(0, 1).Value
End Select
Next c
End Sub

OK merci mais j'ai l'impression que pour la chaine eacte "toto" , "tata"

j'aurais besoin que ça marche pour "xxtotoxx" ...

Avatar
AV
| c'est à dire xxxtotoxxx doît être comptabilisé

Somme des cellules de "plageB" pour les cellules correspondantes de "plageA"
contenant "toto"
Avec des plages nommées :

MsgBox [sum(if(isnumber(find("toto",plageA)),plageB,""))]

AV
Avatar
Fredo P
Bonsoir astlavista

=SOMME.SI(C5:C10;"*toto*";B5:B10)

"astalavista" a écrit dans le message de news:
444b8d53$0$9631$
Bonjour


Je cherche à implémanter l'"algorithme" suivant, en VBA:

Parcourir la colonne B
si B.value contient "toto" alors
sommetoto = sommetoto + C.value
si B.value contient "tata" alors
sommetata = sometata + C.value
....

Pouvez-vous m'aider?
Merci d'avance




Avatar
astalavista
Bravo, c'est ça qu'il me fallait à l'ordre pres:

=SOMME.SI(B5:B10;"*toto*";C5:C10)

encore merci ...