problème pour traduire sommeprod en VBA

tnguyen05

XLDnaute Nouveau
Bonjour à tous,

j'essaie de faire une macro qui utilise une formule dans excell,
celle-ci fonctionne correctement quand je mets dans la cellule

=SOMMEPROD(('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!$D$1:$D$200=$B6)*
('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!$E$1:$E$200=$C6)*
('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!$G$1:$G$200=$D6);
('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!$I$1:$I$200)
)


j'essaie de la transformer en Vba

lien1 = "'E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'"
champ_type = Chr(34) & Feuil2.Cells(6, 2) & Chr(34)
champ_groupe = Chr(34) & Feuil2.Cells(6, 3) & Chr(34)
champ_contrat = Chr(34) & Feuil2.Cells(6, 4) & Chr(34)

Feuil2.Range("A3") = Evaluate("SUMPRODUCT((" & lien1 & "!D1:D200=" & champ_type & ")*(" & lien1 & "!E1:E200=" & champ_groupe & ")*(" & lien1 & "!G1:G200=" & champ_contrat & "),(" & lien1 & "!I1:I200))")

là j'ai #VALEUR! dans la cellule
si je n'utilise que 2 critères j'ai des résultats,

Feuil2.Range("A3") = Evaluate("=SUMPRODUCT(1*(" & lien1 & "!G1:G200=" & champ_contrat & ")*(" & lien1 & "!E1:E200=" & champ_groupe & "))")) =>ok
Feuil2.Range("A3") = Evaluate("=SUMPRODUCT(1*(" & lien1 & "!G1:G200=" & champ_contrat & "),(" & lien1 & "!I1:I200))") =>Ok
mais j'ai besoin de 4 conditions
je commence à péter un cable,
je n'arrive pas à m'en sortir,
quelqu'un pourrait m'aider avec un oeil extérieur,

merci
 

klin89

XLDnaute Accro
Bonsoir à tous,
Bonsoir tnguyen05,

Dans un module standard, ce code pour visualiser ta formule selon les 4 propriétés proposées en VBA
VB:
Sub Afficher_Formules()
  With Range("D4") 'la cellule qui contient ta formule
    MsgBox "FormulaLocal" & vbTab & .FormulaLocal & vbNewLine _
    & "FormulaR1C1Local" & vbTab & .FormulaR1C1Local & vbNewLine _
    & "Formula" & vbTab & vbTab & .Formula & vbNewLine _
    & "FormulaR1C1" & vbTab & .FormulaR1C1
  End With
End Sub

Klin89
 

tnguyen05

XLDnaute Nouveau
Re : problème pour traduire sommeprod en VBA

salut voici le résultat

FormulaLocal =SOMMEPROD(('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!$D$1:$D$200=$B6)*
('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!$E$1:$E$200=$C6)*
('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!$G$1:$G$200=$D6);
('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!$I$1:$I$200)
)

FormulaR1C1Local =SOMMEPROD(('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!L1C4:L200C4=LC2)*
('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!L1C5:L200C5=LC3)*
('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!L1C7:L200C7=LC4);
('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!L1C9:L200C9)
)

Formula =SUMPRODUCT(('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!$D$1:$D$200=$B6)*
('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!$E$1:$E$200=$C6)*
('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!$G$1:$G$200=$D6),
('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!$I$1:$I$200)
)

FormulaR1C1 =SUMPRODUCT(('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!R1C4:R200C4=RC2)*
('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!R1C5:R200C5=RC3)*
('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!R1C7:R200C7=RC4),
('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!R1C9:R200C9)
)
 

tnguyen05

XLDnaute Nouveau
Re : problème pour traduire sommeprod en VBA

j'ai essayé

champ_type = Chr(34) & Feuil2.Cells(6, 2) & Chr(34)
champ_groupe = Chr(34) & Feuil2.Cells(6, 3) & Chr(34)
champ_contrat = Chr(34) & Feuil2.Cells(6, 4) & Chr(34)

Feuil2.Range("A3").FormulaLocal = Evaluate("SOMMEPROD(('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!$D$1:$D$200=" & champ_type & ")*('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!$E$1:$E$200=" & champ_groupe & ")*('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!$G$1:$G$200=" & champ_contrat & ");('E:\Invoicing\swap to trait\[(1) Janvier 2011 - SWAPS et CONTRATS STRUCTURES tab récap CORRECTE.xls]SWAPS JAN 2011'!$I$1:$I$200))")


mais cela ne fonctionne pas,
j'ai #VALEUR! dans la cellule A3
 

Statistiques des forums

Discussions
312 104
Messages
2 085 337
Membres
102 865
dernier inscrit
FreyaSalander