VBA erreur dans une fonction

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Greffier Jean-Claude
Le #22236041
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" 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.






LSteph
Le #22236031
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"
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.
Greffier Jean-Claude
Le #22237891
Bonjour,

Avez-vous reçu le tableau.

Greffier.



"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"
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.
Sam
Le #22237881
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" hur5sf$i40$
Bonjour,

Avez-vous reçu le tableau.

Greffier.



"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"
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.




Sam
Le #22239321
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" hur5sf$i40$
Bonjour,

Avez-vous reçu le tableau.

Greffier.



"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"
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.




Greffier
Le #22248271
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" 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.






Publicité
Poster une réponse
Anonyme