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

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