Somme en fonction 2 parametres VISUAL BASIC

ivain34 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
Bidouilleu_R Messages postés 1181 Date d'inscription   Statut Membre Dernière intervention   -
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 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
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   Statut Membre Dernière intervention  
 
DESOLE je cherche une boucle sur Visual Basic !
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Pourquoi tu veux une boucle si une fonction toute prête existe déjà ?
0
ivain34 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   295
 
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   Statut Membre Dernière intervention   295
 
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