XL 2016 Problème VBA Application.WorksheetFunction.SumIf

luffy94340

XLDnaute Nouveau
Bonjour à tous et à toutes.

Après avoir trouvé un code VBA qui utilise Sumif sur le net, j'ai voulu l'adapté à mes besoins mais n'y est arrivé que partiellement.o_O
J'ai un Feuille "SXX" qui est une extraction d'une base de donnée et une autre feuille de destination "Export"
je souhaite récupérer les valeurs de la colonne H de "SXX" vers "Export" en O à condition qu'elles correspondent aux critères de la colonne B et C
je ai réussi a l'adapté que pour la colonne B mais par pour ma deuxième condition colonne C(voir code).

Je voudrais avoir l'équivalence de cette formule excel (voir exemple en colonne P de Export) :

=SOMME.SI.ENS(mttc;clts;myclts;tva;Mytva)

les plages :
mttc =colonne H de SXX
clts = colonne C de SXX
myclts = colonne B de Export
tva = colonne B de SXX
Mytva = colonne C de Export

voici le code vba

VB:
Sub test()

Dim ws As Worksheet

With Sheets("SXX")
    For i = 2 To 12
    
Sheets("Export").Range("O" & i) = Application.WorksheetFunction.SumIf(.Columns("C"), Sheets("Export").Cells(i, 2), .Range("H1:H65536"))
      Next i
  End With
End Sub
Etant débutant.J'ai réussi à me faire des noeuds au cerveau.

merci encore pour votre aide.
cdt

cyril
 

Pièces jointes

  • teest sumif.xlsm
    196.1 KB · Affichages: 12

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Luffy,
Essayez ça :
Code:
Sub test()
Dim ws As Worksheet
  With Sheets("SXX")
    For i = 2 To 12
        Sheets("Export").Range("O" & i) = Application.WorksheetFunction.SumIfs([mttc], _
        [clts], Sheets("Export").Cells(i, 2), [tva], Sheets("Export").Cells(i, 3))
    Next i
  End With
End Sub
C'est SumIfs et non SumIf ( Somme.si.ens et non Somme.si )
Il vous manquait des parametres dans le SumIfS. ( zone somme, plage1, critere1... plageN,CritereN)
Comme vous avez appelé vos colonnes, autant les utiliser. C'est plus lisible.
 

luffy94340

XLDnaute Nouveau
Bonjour Luffy,
Essayez ça :
Code:
Sub test()
Dim ws As Worksheet
  With Sheets("SXX")
    For i = 2 To 12
        Sheets("Export").Range("O" & i) = Application.WorksheetFunction.SumIfs([mttc], _
        [clts], Sheets("Export").Cells(i, 2), [tva], Sheets("Export").Cells(i, 3))
    Next i
  End With
End Sub
C'est SumIfs et non SumIf ( Somme.si.ens et non Somme.si )
Il vous manquait des parametres dans le SumIfS. ( zone somme, plage1, critere1... plageN,CritereN)
Comme vous avez appelé vos colonnes, autant les utiliser. C'est plus lisible.

Bonjour Sylvanu,

merci encore pour votre réponse, c'est parfait. Je n'avais vu le petit détail qui change tout avec sumifs.
c'est très efficace.

Bonne journée.:)
 

Statistiques des forums

Discussions
312 199
Messages
2 086 160
Membres
103 147
dernier inscrit
tubaman