VBA excel : écrire un choix d'argument dans formule personalisée
hoquei44
Messages postés16027Date d'inscriptiondimanche 19 janvier 2014StatutMembreDernière intervention21 avril 2024
-
Modifié par hoquei44 le 18/03/2017 à 11:51
hoquei44
Messages postés16027Date d'inscriptiondimanche 19 janvier 2014StatutMembreDernière intervention21 avril 2024
-
28 mars 2017 à 00:37
Bonjour,
Je tente depuis ce matin d'apprendre les bases du VBA sur excel.
J'essaye de faire une formule personnalisée qui renverrai un résultat en fonction de deux paramètres.
En l’occurrence le montant de la décote des impôts en fonction du montant de l'impôt brut mais aussi de la nature du foyer (seul, couple).
J'ai découvert qu'il existe la possibilité d'avoir un résultat par "as boolean" en renseignant true/false au lieu de seul/couple. Mais je n'aime pas cette méthode et je préférerai écrire textuellement la nature directement dans la formule.
Ex : =DECOTE(2000;couple)
L'inconvénient du "boolean" est que c'est limité à deux options et que je me retrouverai coincé si je voulais avoir le choix entre trois options ou plus.
Vous trouverez ci-dessous la formule à laquelle je suis parvenu.
Function DECOTE(montant, nature)
If nature = seul Then
If montant > 1553 Then
DECOTE = montant
ElseIf montant < 1513 Then
DECOTE = montant - (1165 - montant * 3 / 4)
End If
ElseIf nature = couple Then
If montant > 2560 Then
DECOTE = montant
ElseIf montant < 2560 Then
DECOTE = montant - (1920 - montant * 3 / 4)
End If
End If
End Function
Je vous remercie par avance pour l'aide que vous m'apporterez.
CB
A voir également:
VBA excel : écrire un choix d'argument dans formule personalisée
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 18 mars 2017 à 12:42
Bonjour,
Pourquoi aimerais-je tant que l'on sache AU MOINS faire la différence entre ce qu'est une FORMULE, qui utilise des FONCTIONS qui peuvent être natives ou personnalisées, et ce qu'est une FONCTION ?
Lorsque je constate que cette notion DE BASE échappe, je n'ai vraiment pas envie (mais alors : pas du tout) d'être de près ou de loin un encouragement à la continuité dans l'incompréhension des choses basiques ...
En gros, vous ne dites de dégager car j'ai fait une confusion sur une sémantique que je ne connaissais même pas hier.
Je ne demande qu'à apprendre. Si on refuse de me transmettre un savoir, car je manque de savoir, alors c'est un peu le serpent qui se mord la queue. Surtout que vous ne m'indiquez même pas comment acquérir les pré-requis nécessaire.
Si personne ne souhaite me répondre, je voudrais bien que l'on m'indique un autre forum ou un guide explicatif, j'en serai reconnaissant.
En fait, il ne manquait que des guillemets de l'argument nature, ainsi que lors de la saisie de la formule pour que la fonction soit correcte (du moins en apparence).
If nature = "seul" Then
[...]
ElseIf nature = "couple" Then
=DECOTE(2000;"couple")
Par contre, je ne sais pas s'il existe la possibilité que la liste des choix apparait lorsque l'on saisie la formule.
Pour les formules recherches, il est proposé de répondre vrai ou faux. Mais existe-il une façon de "personnaliser" cette liste ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 18 mars 2017 à 15:26
1)
vous ne m'indiquez même pas comment acquérir les pré-requis nécessaire.
cela s'appelle l'aide de VBA (sur ta machine). Elle est quasiment le mode d'emploi.
2) une fonction retourne une valeur et est typée (ce n'est pas de celle montrée). Ses paramètres sont également à typer
Si tu avais travaillé en option Explicit, plusieurs de ces aspects auraient été dénoncés d'emblée.
(pour ce qui est de ce que j'ai mis en gras : tu sais maintenant où -je te l'ai dit- en chercher la signification et l'utilisation).
La consultation de l'aide VBA est indispensable pour un débutant. Elle est d'ailleurs également faite très fréquemment par les plus avancés. Développer sans passer par là est similaire à vouloir faire de la bicyclette sans selle ni guidon.
Bonne étude
hoquei44
Messages postés16027Date d'inscriptiondimanche 19 janvier 2014StatutMembreDernière intervention21 avril 2024 18 mars 2017 à 15:33
Merci pour cet indice et des conseils.
Si je trouve la solution, je viendrai la poster.
CB
hoquei44
Messages postés16027Date d'inscriptiondimanche 19 janvier 2014StatutMembreDernière intervention21 avril 2024 19 mars 2017 à 22:26
Bonsoir,
J'ai compris que l'utilisation d'option Explicit oblige à déclarer l'ensemble des variables utilisées dans la fonction.
Cela m'aurait permis de repérer immédiatement l'erreur dû à l'absence de guillemet.
Par contre, je n'ai pas réussi à aller plus loin dans mon problème.
Pour l'aide VBA sur ma machine, il me faudrait déjà une aide pour la lancer puisqu'elle ne répond pas (ni par la barre, ni par F1). Mais bon, le site msdn est là pour compenser.
Whismeril
Messages postés19026Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention20 avril 2024656 19 mars 2017 à 22:55
Bonsoir,
si tu veux appeler cette fonction depuis une autre macro, un enum répondrait à ton besoin.
Par contre, si comme je le comprends, tu veux appeler cette fonction depuis une cellule, il faut mettre la valeur entière correspondante et il n'y pas la liste déroulante (ou en tout cas je ne sais pas faire), et là on perd de son intérêt.
hoquei44
Messages postés16027Date d'inscriptiondimanche 19 janvier 2014StatutMembreDernière intervention21 avril 2024 20 mars 2017 à 23:22
Bonsoir Whismeril,
C'est bien directement depuis une cellule que je vous appeler la "liste déroulante". J'arrête donc de chercher si c'est si complexe que ça à faire.
Merci à vous deux.
CB
Whismeril
Messages postés19026Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention20 avril 2024656 21 mars 2017 à 07:29
Ça doit exister, mais VBA n'est pas mon langage de prédilection...
hoquei44
Messages postés16027Date d'inscriptiondimanche 19 janvier 2014StatutMembreDernière intervention21 avril 2024 28 mars 2017 à 00:37
Bonjour,
Il existe bien des trucs du genre "placeholder" dans les input en html,
mais pour le VBA...
Modifié par hoquei44 le 18/03/2017 à 13:29
En gros, vous ne dites de dégager car j'ai fait une confusion sur une sémantique que je ne connaissais même pas hier.
Je ne demande qu'à apprendre. Si on refuse de me transmettre un savoir, car je manque de savoir, alors c'est un peu le serpent qui se mord la queue. Surtout que vous ne m'indiquez même pas comment acquérir les pré-requis nécessaire.
Si personne ne souhaite me répondre, je voudrais bien que l'on m'indique un autre forum ou un guide explicatif, j'en serai reconnaissant.
CB