Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA erreur dans une fonction

6 réponses
Avatar
Greffier Jean-Claude
Bonjour,



J'ai à vous soumettre la fonction ci-dessous, pourriez-vous me donner des
pistes de résolutions.







NOMS
Tarif 1
Tarif 2
Produit 1
Produit 2
Produit 3
Produit 4
Produit 5
TOTAL



Prix tarif 1


2.20
2.30
2.60
2.60
2.60


Prix tarif 2


3.30
3.45
3.90
3.90
3.90


A
1

2

1
2

12.20

B
1


1


1
4.90

C

1

1
1
1

11.25

D

1
1



1
7.20

E
1


3


3
14.70

total par produits


7.70
12.65
6.50
9.10
14.30






Ainsi, la formule ci_après calcule la somme des achats par le client_A en
fonction de sa tarification : si le tarif client dans la colonne "B" est "1"
,on doit effectuer la somme des quantités des produits par par le tarif
correspondant. La formule se lit comme suit:



Le total des lignes s'effectue par des SOMMEPROD ex : Total pour la ligne
4 :

=SI(B4<>"";SOMMEPROD(prix_tarif_1;D4:H4);SOMMEPROD(prix_tarif_2;D4:H4))

Avec Prix_tarif_1 = D2 :H2

Avec Prix_tarif_2 = D3 :H3



Cette formulation tombe juste.



Par contre pour des facilités j'aimerais en faire une fonction.
Malheureusement après son déroulement j'obtiens toujours « #VALEUR! » .



Où se trouve l'erreur.



Function AchatByAdhérent(TarifAdhérent As Range, _

TarifNonAdhérent As Range, _

ZoneAchatHCPain As Range, _

ZoneChoixAdhérent As Range) As Double



Application.Volatile



If ZoneChoixAdhérent <> "" Then

AchatByAdhérent = Evaluate("=SumProduct(TarifAdhérent *
ZoneAchatHCPain)")

Else

AchatByAdhérent = Evaluate("=SumProduct(TarifNonAdhérent *
ZoneAchatHCPain)")

End If



If AchatByAdhérent = 0 Then

AchatByAdhérent = ""

End If



End Function





Merci de m'avoir lu, et de me proposer une solution.



Greffier.

6 réponses

Avatar
Greffier Jean-Claude
re bonjour,

Le tableau s'est mal transmis.
Merci de me pardonner.
JE le reconstitue .

A B C D E
F G H I

1 noms tarif 1 tarif 2 produit 1 produit 2 produit
3 produit 4 produit 5 total
2 prix tarif 1 2.20 2.30
2.60 2.60 2.60
3 prix tarif 2 3.30 3.45
3.90 3.90 3.90
4 A 1 2
1 2 12.20
5 B 1 1
1 4.90
6 C 1 1
1 1 11.25
7 D 1 1
1 7.20
8 E 1 3
3 14.70


J'ai à vous soumettre la fonction ci-dessous, pourriez-vous me donner des
pistes de résolutions.

Ainsi, la formule ci_après calcule la somme des achats par le client_A en
fonction de sa tarification : si le tarif client dans la colonne "B" est
"1" ,on doit effectuer la somme des quantités des produits par le tarif
correspondant. La formule se lit comme suit:



Le total des lignes s'effectue par des SOMMEPROD ex : Total pour la
ligne 4
=SI(B4<>"";SOMMEPROD(prix_tarif_1;D4:H4);SOMMEPROD(prix_tarif_2;D4:H4))
Avec Prix_tarif_1 = D2 :H2
Avec Prix_tarif_2 = D3 :H3

Cette formulation tombe juste.

Par contre pour des facilités j'aimerais en faire une fonction.
Malheureusement après son déroulement j'obtiens toujours « #VALEUR! » .

Où se trouve l'erreur.

Function AchatByAdhérent(TarifAdhérent As Range, _

TarifNonAdhérent As Range, _
ZoneAchatHCPain As Range, _
ZoneChoixAdhérent As Range) As Double

Application.Volatile

If ZoneChoixAdhérent <> "" Then
AchatByAdhérent = Evaluate("=SumProduct(TarifAdhérent *
ZoneAchatHCPain)")
Else
AchatByAdhérent = Evaluate("=SumProduct(TarifNonAdhérent *
ZoneAchatHCPain)")
End If


If AchatByAdhérent = 0 Then
AchatByAdhérent = ""
End If

End Function

Merci de m'avoir lu, et de me proposer une solution.

Greffier.









"Greffier Jean-Claude" a écrit dans le message de news:
huqcvs$c7n$
Bonjour,



J'ai à vous soumettre la fonction ci-dessous, pourriez-vous me donner des
pistes de résolutions.







NOMS
Tarif 1
Tarif 2
Produit 1
Produit 2
Produit 3
Produit 4
Produit 5
TOTAL



Prix tarif 1


2.20
2.30
2.60
2.60
2.60


Prix tarif 2


3.30
3.45
3.90
3.90
3.90


A
1

2

1
2

12.20

B
1


1


1
4.90

C

1

1
1
1

11.25

D

1
1



1
7.20

E
1


3


3
14.70

total par produits


7.70
12.65
6.50
9.10
14.30






Ainsi, la formule ci_après calcule la somme des achats par le client_A en
fonction de sa tarification : si le tarif client dans la colonne "B" est
"1" ,on doit effectuer la somme des quantités des produits par par le
tarif correspondant. La formule se lit comme suit:



Le total des lignes s'effectue par des SOMMEPROD ex : Total pour la
ligne 4 :

=SI(B4<>"";SOMMEPROD(prix_tarif_1;D4:H4);SOMMEPROD(prix_tarif_2;D4:H4))

Avec Prix_tarif_1 = D2 :H2

Avec Prix_tarif_2 = D3 :H3



Cette formulation tombe juste.



Par contre pour des facilités j'aimerais en faire une fonction.
Malheureusement après son déroulement j'obtiens toujours « #VALEUR! » .



Où se trouve l'erreur.



Function AchatByAdhérent(TarifAdhérent As Range, _

TarifNonAdhérent As Range, _

ZoneAchatHCPain As Range, _

ZoneChoixAdhérent As Range) As Double



Application.Volatile



If ZoneChoixAdhérent <> "" Then

AchatByAdhérent = Evaluate("=SumProduct(TarifAdhérent *
ZoneAchatHCPain)")

Else

AchatByAdhérent = Evaluate("=SumProduct(TarifNonAdhérent *
ZoneAchatHCPain)")

End If



If AchatByAdhérent = 0 Then

AchatByAdhérent = ""

End If



End Function





Merci de m'avoir lu, et de me proposer une solution.



Greffier.






Avatar
LSteph
Bonjour,

Tu peux mettre un lien de ton classeur exemple que tu déposes d'abord

http://cjoint.com

--
LSteph

On 10 juin, 11:58, "Greffier Jean-Claude" wrote:
Bonjour,

J'ai vous soumettre la fonction ci-dessous, pourriez-vous me donner des
pistes de r solutions.

      NOMS
     Tarif 1
     Tarif 2
     Produit 1
     Produit 2
     Produit 3
     Produit 4
     Produit 5
     TOTAL

      Prix tarif 1

     2.20
     2.30
     2.60
     2.60
     2.60

      Prix tarif 2

     3.30
     3.45
     3.90
     3.90
     3.90

      A
     1

     2

     1
     2

     12.20

      B
     1

     1

     1
     4.90

      C

     1

     1
     1
     1

     11.25

      D

     1
     1

     1
     7.20

      E
     1

     3

     3
     14.70

      total par produits

     7.70
     12.65
     6.50
     9.10
     14.30

Ainsi, la formule ci_apr s calcule la somme des achats par le client_A en
fonction de sa tarification : si le tarif client dans la colonne "B" est "1"
,on doit effectuer la somme des quantit s des produits par par le tarif
correspondant. La formule se lit comme suit:

Le total des lignes s'effectue par des SOMMEPROD    ex : Total pour l a ligne
4 :

=SI(B4<>"";SOMMEPROD(prix_tarif_1;D4:H4);SOMMEPROD(prix_tarif_2;D4:H4))

Avec Prix_tarif_1 = D2 :H2

Avec Prix_tarif_2 = D3 :H3

Cette formulation tombe juste.

Par contre pour des facilit s j'aimerais en faire une fonction.
Malheureusement apr s son d roulement j'obtiens toujours #VALEUR! .

O se trouve l'erreur.

Function AchatByAdh rent(TarifAdh rent As Range, _

                       TarifNonAdh rent As Range, _

                       ZoneAchatHCPain As Range, _

                       ZoneChoixAdh rent As Range ) As Double

Application.Volatile

If ZoneChoixAdh rent <> "" Then

        AchatByAdh rent = Evaluate("=SumProduct(TarifAdh rent *
ZoneAchatHCPain)")

Else

        AchatByAdh rent = Evaluate("=SumProduct(TarifNonAdh r ent *
ZoneAchatHCPain)")

End If

If AchatByAdh rent = 0 Then

        AchatByAdh rent = ""

End If

End Function

Merci de m'avoir lu, et de me proposer une solution.

Greffier.
Avatar
Greffier Jean-Claude
Bonjour,

Avez-vous reçu le tableau.

Greffier.



"LSteph" a écrit dans le message de news:

Bonjour,

Tu peux mettre un lien de ton classeur exemple que tu déposes d'abord

http://cjoint.com

--
LSteph

On 10 juin, 11:58, "Greffier Jean-Claude" wrote:
Bonjour,

J'ai vous soumettre la fonction ci-dessous, pourriez-vous me donner des
pistes de r solutions.

NOMS
Tarif 1
Tarif 2
Produit 1
Produit 2
Produit 3
Produit 4
Produit 5
TOTAL

Prix tarif 1

2.20
2.30
2.60
2.60
2.60

Prix tarif 2

3.30
3.45
3.90
3.90
3.90

A
1

2

1
2

12.20

B
1

1

1
4.90

C

1

1
1
1

11.25

D

1
1

1
7.20

E
1

3

3
14.70

total par produits

7.70
12.65
6.50
9.10
14.30

Ainsi, la formule ci_apr s calcule la somme des achats par le client_A en
fonction de sa tarification : si le tarif client dans la colonne "B" est
"1"
,on doit effectuer la somme des quantit s des produits par par le tarif
correspondant. La formule se lit comme suit:

Le total des lignes s'effectue par des SOMMEPROD ex : Total pour la ligne
4 :

=SI(B4<>"";SOMMEPROD(prix_tarif_1;D4:H4);SOMMEPROD(prix_tarif_2;D4:H4))

Avec Prix_tarif_1 = D2 :H2

Avec Prix_tarif_2 = D3 :H3

Cette formulation tombe juste.

Par contre pour des facilit s j'aimerais en faire une fonction.
Malheureusement apr s son d roulement j'obtiens toujours #VALEUR! .

O se trouve l'erreur.

Function AchatByAdh rent(TarifAdh rent As Range, _

TarifNonAdh rent As Range, _

ZoneAchatHCPain As Range, _

ZoneChoixAdh rent As Range) As Double

Application.Volatile

If ZoneChoixAdh rent <> "" Then

AchatByAdh rent = Evaluate("=SumProduct(TarifAdh rent *
ZoneAchatHCPain)")

Else

AchatByAdh rent = Evaluate("=SumProduct(TarifNonAdh rent *
ZoneAchatHCPain)")

End If

If AchatByAdh rent = 0 Then

AchatByAdh rent = ""

End If

End Function

Merci de m'avoir lu, et de me proposer une solution.

Greffier.
Avatar
Sam
Bonjour,
il faut nous donner le lien créé par cjoint (si tu as déposé le fichier tout
récemment, le lien est peut être encore dans sous tes doigts - il suffit
répondre à ce message et de faire COLLER ou CTRL V et le lien va
apparaître).
Cordialement
Michel dit "Sam"

"Greffier Jean-Claude" a écrit dans le message de news:
hur5sf$i40$
Bonjour,

Avez-vous reçu le tableau.

Greffier.



"LSteph" a écrit dans le message de news:

Bonjour,

Tu peux mettre un lien de ton classeur exemple que tu déposes d'abord

http://cjoint.com

--
LSteph

On 10 juin, 11:58, "Greffier Jean-Claude" wrote:
Bonjour,

J'ai vous soumettre la fonction ci-dessous, pourriez-vous me donner des
pistes de r solutions.

NOMS
Tarif 1
Tarif 2
Produit 1
Produit 2
Produit 3
Produit 4
Produit 5
TOTAL

Prix tarif 1

2.20
2.30
2.60
2.60
2.60

Prix tarif 2

3.30
3.45
3.90
3.90
3.90

A
1

2

1
2

12.20

B
1

1

1
4.90

C

1

1
1
1

11.25

D

1
1

1
7.20

E
1

3

3
14.70

total par produits

7.70
12.65
6.50
9.10
14.30

Ainsi, la formule ci_apr s calcule la somme des achats par le client_A en
fonction de sa tarification : si le tarif client dans la colonne "B" est
"1"
,on doit effectuer la somme des quantit s des produits par par le tarif
correspondant. La formule se lit comme suit:

Le total des lignes s'effectue par des SOMMEPROD ex : Total pour la ligne
4 :

=SI(B4<>"";SOMMEPROD(prix_tarif_1;D4:H4);SOMMEPROD(prix_tarif_2;D4:H4))

Avec Prix_tarif_1 = D2 :H2

Avec Prix_tarif_2 = D3 :H3

Cette formulation tombe juste.

Par contre pour des facilit s j'aimerais en faire une fonction.
Malheureusement apr s son d roulement j'obtiens toujours #VALEUR! .

O se trouve l'erreur.

Function AchatByAdh rent(TarifAdh rent As Range, _

TarifNonAdh rent As Range, _

ZoneAchatHCPain As Range, _

ZoneChoixAdh rent As Range) As Double

Application.Volatile

If ZoneChoixAdh rent <> "" Then

AchatByAdh rent = Evaluate("=SumProduct(TarifAdh rent *
ZoneAchatHCPain)")

Else

AchatByAdh rent = Evaluate("=SumProduct(TarifNonAdh rent *
ZoneAchatHCPain)")

End If

If AchatByAdh rent = 0 Then

AchatByAdh rent = ""

End If

End Function

Merci de m'avoir lu, et de me proposer une solution.

Greffier.




Avatar
Sam
Bonjour,
ceci semble fonctionner.
J'ai oté le dernier If quand =0 car il y a un pb de type de variable

Function AchatByAdhérent(TarifAdhérent As Range, _
TarifNonAdhérent As Range, _
ZoneAchatHCPain As Range, _
ZoneChoixAdhérent As Range) As Double
Application.Volatile
If ZoneChoixAdhérent <> "" Then
AchatByAdhérent = WorksheetFunction.SumProduct(TarifAdhérent,
ZoneAchatHCPain)
Else
AchatByAdhérent = WorksheetFunction.SumProduct(TarifNonAdhérent,
ZoneAchatHCPain)
End If
End Function

Cordialement
Michel dit "Sam"

"Greffier Jean-Claude" a écrit dans le message de news:
hur5sf$i40$
Bonjour,

Avez-vous reçu le tableau.

Greffier.



"LSteph" a écrit dans le message de news:

Bonjour,

Tu peux mettre un lien de ton classeur exemple que tu déposes d'abord

http://cjoint.com

--
LSteph

On 10 juin, 11:58, "Greffier Jean-Claude" wrote:
Bonjour,

J'ai vous soumettre la fonction ci-dessous, pourriez-vous me donner des
pistes de r solutions.

NOMS
Tarif 1
Tarif 2
Produit 1
Produit 2
Produit 3
Produit 4
Produit 5
TOTAL

Prix tarif 1

2.20
2.30
2.60
2.60
2.60

Prix tarif 2

3.30
3.45
3.90
3.90
3.90

A
1

2

1
2

12.20

B
1

1

1
4.90

C

1

1
1
1

11.25

D

1
1

1
7.20

E
1

3

3
14.70

total par produits

7.70
12.65
6.50
9.10
14.30

Ainsi, la formule ci_apr s calcule la somme des achats par le client_A en
fonction de sa tarification : si le tarif client dans la colonne "B" est
"1"
,on doit effectuer la somme des quantit s des produits par par le tarif
correspondant. La formule se lit comme suit:

Le total des lignes s'effectue par des SOMMEPROD ex : Total pour la ligne
4 :

=SI(B4<>"";SOMMEPROD(prix_tarif_1;D4:H4);SOMMEPROD(prix_tarif_2;D4:H4))

Avec Prix_tarif_1 = D2 :H2

Avec Prix_tarif_2 = D3 :H3

Cette formulation tombe juste.

Par contre pour des facilit s j'aimerais en faire une fonction.
Malheureusement apr s son d roulement j'obtiens toujours #VALEUR! .

O se trouve l'erreur.

Function AchatByAdh rent(TarifAdh rent As Range, _

TarifNonAdh rent As Range, _

ZoneAchatHCPain As Range, _

ZoneChoixAdh rent As Range) As Double

Application.Volatile

If ZoneChoixAdh rent <> "" Then

AchatByAdh rent = Evaluate("=SumProduct(TarifAdh rent *
ZoneAchatHCPain)")

Else

AchatByAdh rent = Evaluate("=SumProduct(TarifNonAdh rent *
ZoneAchatHCPain)")

End If

If AchatByAdh rent = 0 Then

AchatByAdh rent = ""

End If

End Function

Merci de m'avoir lu, et de me proposer une solution.

Greffier.




Avatar
Greffier
Bonjour,

Suite à de nombreuses erreurs, je peux enfin remercier toutes les personnes
qui m'ont aidé.
A sam j'ai résolu la question en mettant variant au lieu de double.

Greffier.



"Greffier Jean-Claude" a écrit dans le message de news:
huqcvs$c7n$
Bonjour,



J'ai à vous soumettre la fonction ci-dessous, pourriez-vous me donner des
pistes de résolutions.







NOMS
Tarif 1
Tarif 2
Produit 1
Produit 2
Produit 3
Produit 4
Produit 5
TOTAL



Prix tarif 1


2.20
2.30
2.60
2.60
2.60


Prix tarif 2


3.30
3.45
3.90
3.90
3.90


A
1

2

1
2

12.20

B
1


1


1
4.90

C

1

1
1
1

11.25

D

1
1



1
7.20

E
1


3


3
14.70

total par produits


7.70
12.65
6.50
9.10
14.30






Ainsi, la formule ci_après calcule la somme des achats par le client_A en
fonction de sa tarification : si le tarif client dans la colonne "B" est
"1" ,on doit effectuer la somme des quantités des produits par par le
tarif correspondant. La formule se lit comme suit:



Le total des lignes s'effectue par des SOMMEPROD ex : Total pour la
ligne 4 :

=SI(B4<>"";SOMMEPROD(prix_tarif_1;D4:H4);SOMMEPROD(prix_tarif_2;D4:H4))

Avec Prix_tarif_1 = D2 :H2

Avec Prix_tarif_2 = D3 :H3



Cette formulation tombe juste.



Par contre pour des facilités j'aimerais en faire une fonction.
Malheureusement après son déroulement j'obtiens toujours « #VALEUR! » .



Où se trouve l'erreur.



Function AchatByAdhérent(TarifAdhérent As Range, _

TarifNonAdhérent As Range, _

ZoneAchatHCPain As Range, _

ZoneChoixAdhérent As Range) As Double



Application.Volatile



If ZoneChoixAdhérent <> "" Then

AchatByAdhérent = Evaluate("=SumProduct(TarifAdhérent *
ZoneAchatHCPain)")

Else

AchatByAdhérent = Evaluate("=SumProduct(TarifNonAdhérent *
ZoneAchatHCPain)")

End If



If AchatByAdhérent = 0 Then

AchatByAdhérent = ""

End If



End Function





Merci de m'avoir lu, et de me proposer une solution.



Greffier.