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

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16