XL 2019 SommeProd en vba

thespeedy20

XLDnaute Occasionnel
Bonjour le Forum,

J 'ai trois Formules à transposer en vba pour insérer dans un textbox :

VB:
1) =SI(OU(E15="Remboursement ordinaire";E15="Bim-vipo");SOMMEPROD(NB.SI(B23:B27;Tarifs!Col_Codes)*(Tarifs!Col_RemOrdi))*E21;"")

Tentative :

With Sheets("Tarification")
If Cells(15, 5) = "Remboursement ordinaire" Or Cells(15, 5) = "Bim-vipo" Then
TextBox7 = SumProduct(CountIf(Sheets("Tarifs").Range("A:A")) * (Sheets("Tarifs").Range("C:C")) * Cells(21, 5), "")
End With

2 ) =SI(E15="Tiers payant";SOMMEPROD(NB.SI(B23:B27;Tarifs!Col_Codes)*(Tarifs!Col_RemOrdi))*E21 - SOMMEPROD(NB.SI(B23:B27;Tarifs!Col_Codes)*(Tarifs!Col_RemTP))*E21;SI(E15="Tiers Payant Réduit";SOMMEPROD(NB.SI(B23:B27;Tarifs!Col_Codes)*(Tarifs!Col_RemOrdi))*E21 - SOMMEPROD(NB.SI(B23:B27;Tarifs!Col_Codes)*(Tarifs!Col_RemBim))*E21;""))

3 ) =SI(OU(E15="Tiers payant";E15="Tiers Payant Réduit");"";SI(E15="Bim-vipo";SOMMEPROD(NB.SI(B23:B27;Tarifs!Col_Codes)*(Tarifs!Col_RemBim))*E21;SI(E15="Remboursement ordinaire";SOMMEPROD(NB.SI(B23:B27;Tarifs!Col_Codes)*(Tarifs!Col_RemTP))*E21;"")))

J'ai réalisé une tentative sur la 1ere formule mais cela ne fonctionne pas, type erreur argument non facultatif...:(

Je vous remercie par avance pour votre aide

OLi
 
Solution
Bonsoir à toutes & à tous, bonsoir @thespeedy20
Bon, allez je suis bien brave ...
Les deux dernières formules sont un peu longues, j'ai fractionné.

Un résumé pour les 3 formules :
Enrichi (BBcode):
'1ère formule (voir post 2)
TextBox7 = [IF(OR(Tarification!E15="Remboursement ordinaire",Tarification!E15="Bim-vipo"),SUMPRODUCT(COUNTIF(Tarification!B23:B27,Tarifs!Col_Codes)*(Tarifs!Col_RemOrdi)*Tarification!E21),"")]

'2ème formule
Select Case Worksheets("Tarification").[E15]
     Case "Tiers payant"
          TextBox7 =...

AtTheOne

XLDnaute Impliqué
Supporter XLD
Bonjour à toutes & à tous, bonjour @thespeedy20
Si ta formule :
Code:
=SI(OU(E15="Remboursement ordinaire";E15="Bim-vipo");SOMMEPROD(NB.SI(B23:B27;Tarifs!Col_Codes)*(Tarifs!Col_RemOrdi))*E21;"")
est correcte et renvoie le bon résultat,
essaie ceci, sans espaces ni retour à la ligne ; (les crochets [ ] correspondent à la méthode Application.Evaluate) :
Enrichi (BBcode):
TextBox7 = [IF(OR(Tarification!E15="Remboursement ordinaire",Tarification!E15="Bim-vipo"),
                   SUMPRODUCT(COUNTIF(Tarification!B23:B27,Tarifs!Col_Codes)*
                             (Tarifs!Col_RemOrdi)*Tarification!E21),"")]
A adapter pour les deux autres formules.
Sans fichier exemple je n'est pas pu tester.
Amicalement
Alain
 

thespeedy20

XLDnaute Occasionnel

Bonjour AtTheOne,​

Cela fonctionne nickel pour ta proposition... Merci

Je n'arrive pas à adapter pour les deux autres, j'ai erreur de type identificateur trop long
j'ai remplacer les points-virgules, par les virgules et mis les parenthèses...

Peux-tu m'aider

Merci

OLI
 

AtTheOne

XLDnaute Impliqué
Supporter XLD
Bonsoir à toutes & à tous, bonsoir @thespeedy20
Bon, allez je suis bien brave ...
Les deux dernières formules sont un peu longues, j'ai fractionné.

Un résumé pour les 3 formules :
Enrichi (BBcode):
'1ère formule (voir post 2)
TextBox7 = [IF(OR(Tarification!E15="Remboursement ordinaire",Tarification!E15="Bim-vipo"),SUMPRODUCT(COUNTIF(Tarification!B23:B27,Tarifs!Col_Codes)*(Tarifs!Col_RemOrdi)*Tarification!E21),"")]

'2ème formule
Select Case Worksheets("Tarification").[E15]
     Case "Tiers payant"
          TextBox7 = [SUMPRODUCT(COUNTIF(Tarification!B23:B27,Tarifs!Col_Codes)*(Tarifs!Col_RemOrdi))*Tarification!E21-SUMPRODUCT(COUNTIF(Tarification!B23:B27,Tarifs!Col_Codes)*(Tarifs!Col_RemTP))*Tarification!E21]
     Case "Tiers Payant Réduit"
          TextBox7 = [SUMPRODUCT(COUNTIF(Tarification!B23:B27,Tarifs!Col_Codes)*(Tarifs!Col_RemOrdi))*Tarification!E21-SUMPRODUCT(COUNTIF(Tarification!B23:B27,Tarifs!Col_Codes)*(Tarifs!Col_RemBim))*Tarification!E21]
     Case Else
          TextBox7 = ""
End Select

'3ème formule
Select Case Worksheets("Tarification").[E15]
     Case "Bim-vipo"
          TextBox7 = [SUMPRODUCT(COUNTIF(Tarification!B23:B27,Tarifs!Col_Codes)*(Tarifs!Col_RemBim))*Tarification!E21]
     Case "Remboursement ordinaire"
          TextBox7 = [SUMPRODUCT(COUNTIF(Tarification!B23:B27,Tarifs!Col_Codes)*(Tarifs!Col_RemTP))*Tarification!E21]
     Case Else
          TextBox7 = ""
End Select

Et comme dans le post 2, faute de fichier exemple je n'ai pas pu tester ...
Merci de me faire un retour
Amicalement
Alain
Ps : WorksheetFunction.SumProduct n'accepte pas que l'on multiplie un de ses arguments (matrice) par une constante, d'où le recourt à Evaluate (ou [ ] ) car dans une feuille on peut le faire avec SOMMEPROD.
 
Dernière édition:

thespeedy20

XLDnaute Occasionnel
Bonjour AtTheOne, le forum

Tes propositions fonctionnent à merveille, Testée avec Textbox et cellule...encore merci pour ton aide...

Juste une petite chose, Remboursement Ordinaire, le O est en majuscule, si non ta formule ne fonctionne pas.
Bonne Journée

OLi
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 939
Membres
101 844
dernier inscrit
pktla