Somme en fonction 2 parametres VISUAL BASIC
ivain34
Messages postés
12
Statut
Membre
-
Bidouilleu_R Messages postés 1209 Statut Membre -
Bidouilleu_R Messages postés 1209 Statut Membre -
Bonjour,
Je voudrai trouver une boucle sur visual basic qui puisse faire la somme de cellues (colonne A) en fonction de deux parametres texte fixe (colonnes B et C).
Pour etre clair :
Si la cellule B1 correspond au texte "consigneB" et si C1 correspond au texte "consigneC" on commence l'addition avec A1.
On passe à la ligne. Si les memes conditions sont respectées en B2 et C2, on selectionne A2 et on l'additionne à A1.
Etc...
D'avance merci pour l'aide que vous pourrez m'apporter !
Je voudrai trouver une boucle sur visual basic qui puisse faire la somme de cellues (colonne A) en fonction de deux parametres texte fixe (colonnes B et C).
Pour etre clair :
Si la cellule B1 correspond au texte "consigneB" et si C1 correspond au texte "consigneC" on commence l'addition avec A1.
On passe à la ligne. Si les memes conditions sont respectées en B2 et C2, on selectionne A2 et on l'additionne à A1.
Etc...
D'avance merci pour l'aide que vous pourrez m'apporter !
4 réponses
-
Bonjour,
Ta question serait plus appropriée dans le forum Bureautique.
Néanmoins, si tu parles bien d'Excel, recherche du côté de la fonction SOMME.SI()
Xavier -
-
Bonjour,
une solution parmi d'autres,
on peut aussi écrire une fonction et on peut aussi
utiliser somme.si.ens ( somme si savec plusieurs critères)
mais tu dis que tu veux une boucle alors voilà une boucle.Sub sommeSurCritère() Dim C As Range Dim nbLig As Long Dim maSomme As Double nbLig = Sheets("feuil1").Range("A65635").End(xlUp).Row maSomme = 0 For Each C In Range("A2:A" & nbLig) ' je suppose que la plage comme de A2 à Axxx If C.Offset(0, 1) = "ConsigneB" And C.Offset(0, 2) = "ConsigneC" Then maSomme = maSomme + C.Value End If Next MsgBox maSomme End Sub -
Pour le fun! mais on est pas loin de réinventer la roue :-)
Sub test() Dim y as double ' pour des valeurs commençant en A2 y = SommeSiBoucle(2, 1, 2, 3) End Sub Function SommeSiBoucle(ligDep As Integer, colDep As Integer, colCritere1 As Integer, colCritere2 As Integer) Dim nblig As Long Dim maSomme As Double nblig = ActiveSheet.Cells(ligDep, colDep).End(xlDown).Row maSomme = 0 For Each C In Range(Cells(ligDep, colDep), Cells(nblig, colDep)) ' Ici on pourrait passer le critère en paraètres avec une variable string If C.Offset(0, (colCritere1 - 1)) = "ConsigneB" And C.Offset(0, (colCritere2 - 1)) = "ConsigneC" Then maSomme = maSomme + C.Value End If SommeSiBoucle = maSomme Next End Function