Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

problème pour traduire sommeprod en VBA

  • Initiateur de la discussion Initiateur de la discussion tnguyen05
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

tnguyen05

Guest
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😀200=" & 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
 
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
 
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)
)
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…