Somme en fonction 2 parametres VISUAL BASIC

Fermé
ivain34 Messages postés 11 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 1 mars 2011 - Modifié par ivain34 le 1/03/2011 à 14:41
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 2 mars 2011 à 09:14
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 !
A voir également:

4 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
1 mars 2011 à 14:20
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
0
ivain34 Messages postés 11 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 1 mars 2011
1 mars 2011 à 14:41
DESOLE je cherche une boucle sur Visual Basic !
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
1 mars 2011 à 15:36
Pourquoi tu veux une boucle si une fonction toute prête existe déjà ?
0
ivain34 Messages postés 11 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 1 mars 2011
1 mars 2011 à 16:57
J'ai simplifié l'exposé de mon probleme. Il me faut une boucle. Celle de Bidouilleu_R me semble interessante, je vais essayé ça! Je vous tiens au courant de mon avancement :)
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
1 mars 2011 à 15:26
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
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
2 mars 2011 à 09:14
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
0