VBA - Function avec plusieurs condition

Bonjour a tous,

Je dois faire une Macro avec "Function" en utilisant If Else If et End If. Je me retrouve avec cette macro qui ne fonctionne pas. Le but est de définir le taux de remise par rapport au montant HT.

Es ce quelqu'un aurait une réponse ?

Merci

Function Taux_Remise(MONTANTHT as Single) As Single

REMISE = MONTANTHT * Taux - REMISE

If HT < 1500 Then

Taux -REMISE = 0

ElseIf HT < 2500 Then

Taux -REMISE = 2

ElseIf HT < 3500 Then

Taux -REMISE = 3.5

ElseIf HT < 5000 Then

Taux -REMISE = 5

Else: Taux -REMISE = 7

End If

End Function

Bonjour Choup72,

⚠ Ne confonds pas tiret et souligné !!! c'est Taux_Remise, pas Taux-Remise :

dans ton code VBA, c'est transformé en soustraction : Taux moins Remise,

et c'est pas VBA qui est fautif : il a fait son boulot correctement !

Résultat du match : VBA : 1 ; Choup72 : 0


Je te propose le fichier Excel ci-dessous.

Si besoin, tu peux demander une adaptation.

Merci de me dire si ça te convient.

Cordialement

7exo-choup72.xlsm (16.71 Ko)

Bonjour,

Et c'est là qu'on voit que "Option Explicit" (déclaration des variables obligatoire) n'a pas été cochée car sinon, la variable aurait été refusée avec le tiret du 6 !

dhany c'est bien cela que je souhaitai faire, je te remercie beaucoup.

Je suppose que l'on peut faire de même avec "Case is".


Theze merci pour ta réponse.

Bonjour Choup72,

Choup72 a écrit :

Je suppose que l'on peut faire de même avec "Case is".

Exactement ! BRAVO !!! remarque très judicieuse et pertinente !!!

Résultat du match : Choup72 : 2 ; VBA : 1

(je décline toute responsabilité si la FIFA cherche à te recruter à coups

de milliards d'Euros sortis de derrière les fagots ! )


Le nouveau fichier Excel devient donc celui ci-dessous

(feuille inchangée, seul le code est optimisé).

Cordialement

16exo-choup72.xlsm (16.79 Ko)

Merci bien. J'avais presque la même , j'avais mis mes taux en dessous de Case is.

J'ai une dernière question :

Sub AGE()

ActiveCell.FormulaR1C1 = "=INT(TODAY()-RC[-1])/365.25"

ActiveCell.Offset(1, 0).Range("A1").Select

End Sub

Comment je peux faire pour mettre cette macro en function. Je ne trouve pas sur le forum.

J'ai essayé avec cette function ci mais elle ne fonctionne pas :

Function AGE(DATENAISSANCE As Date) As Single

Dim AGE As Single

AGE = Int(TODAY() - DATENAISSANCE) / 365.25

'ENT(aujourdhui()-DATENAISSANCE)/365,25)

End Function

Bonjour Choup72,

Je te propose le fichier Excel ci-dessous ; c'est juste un exemple :

mets la date que tu veux en B2 ; résultat en B6 ; je te laisse voir

la formule en B6 ; VBA est inutile pour faire ça, mais si vraiment

tu y tiens, tu peux coder l'équivalent en VBA.


Remarque : ta fonction AGE() serait comme ceci (avec 2 paires de parenthèses) :

Function AGE(DATENAISSANCE As Date) As Single
  AGE = Int((Date - DATENAISSANCE) / 365.25)
End Function

OU comme ceci (avec le signe « \ » pour une division entière) :

Function AGE(DATENAISSANCE As Date) As Single
  AGE = (Date - DATENAISSANCE) \ 365.25
End Function

Mais un calcul avec division par 365.25 ne retourne

qu'un résultat approximatif ➯ à éviter !!!

Cordialement

Merci beaucoup :p

Rechercher des sujets similaires à "vba function condition"