Somme en fonction 2 parametres VISUAL BASIC

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 !

4 réponses

  1. 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
    1. DESOLE je cherche une boucle sur Visual Basic !
      0
      1. Pourquoi tu veux une boucle si une fonction toute prête existe déjà ?
        0
      2. 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
    2. 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
      1. 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