Fonction sur Excel
Résolu/Fermé
hoquei44
Messages postés
16349
Date d'inscription
dimanche 19 janvier 2014
Statut
Membre
Dernière intervention
16 novembre 2024
-
Modifié le 5 juil. 2022 à 22:40
hoquei44 Messages postés 16349 Date d'inscription dimanche 19 janvier 2014 Statut Membre Dernière intervention 16 novembre 2024 - 6 juil. 2022 à 23:01
hoquei44 Messages postés 16349 Date d'inscription dimanche 19 janvier 2014 Statut Membre Dernière intervention 16 novembre 2024 - 6 juil. 2022 à 23:01
A voir également:
- Fonction sur Excel
- Excel fonction si et - Guide
- Liste déroulante excel - Guide
- Fonction moyenne excel - Guide
- Comment aller à la ligne sur excel - Guide
- Word et excel gratuit - Guide
2 réponses
via55
Messages postés
14495
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
7 novembre 2024
2 735
6 juil. 2022 à 00:21
6 juil. 2022 à 00:21
Bonjour à toi
Pourquoi faire simple quand on peut faire compliqué !
Si j'ai bien compris ta problématique, personnellement je bâtirai ma fonction ainsi :
Cdlmnt
VIa
Pourquoi faire simple quand on peut faire compliqué !
Si j'ai bien compris ta problématique, personnellement je bâtirai ma fonction ainsi :
Function tarif_paye(nombre) Select Case nombre Case Is <= 10 pu = 30: plus = 0: moins = 0 Case Is <= 20 pu = 25: plus = 300: moins = 10 Case Is <= 30 pu = 20: plus = 550: moins = 20 Case Is <= 40 pu = 15: plus = 750: moins = 30 Case Is <= 50 pu = 10: plus = 900: moins = 40 Case Is > 50 pu = 5: plus = 1000: moins = 50 End Select tarif_paye = (nombre - moins) * pu + plus End Function
Cdlmnt
VIa
via55
Messages postés
14495
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
7 novembre 2024
2 735
6 juil. 2022 à 21:00
6 juil. 2022 à 21:00
Bonsoir
1) Ta fonction personnalisée fonctionne très bien chez mois sans erreur de VALEUR
2) Par contre elle renvoie un résultat erroné à partir de 21 articles !
https://www.cjoint.com/c/LGgs6a2Oe7u
3) J'ai établi de mon côté sur ce fichier une fonction personnalisée tarif_paye2 qui a l'air de fonctionner et qui ne comporte pas le Array avec les 0
Cdlmnt
Via
1) Ta fonction personnalisée fonctionne très bien chez mois sans erreur de VALEUR
2) Par contre elle renvoie un résultat erroné à partir de 21 articles !
https://www.cjoint.com/c/LGgs6a2Oe7u
3) J'ai établi de mon côté sur ce fichier une fonction personnalisée tarif_paye2 qui a l'air de fonctionner et qui ne comporte pas le Array avec les 0
Cdlmnt
Via
hoquei44
Messages postés
16349
Date d'inscription
dimanche 19 janvier 2014
Statut
Membre
Dernière intervention
16 novembre 2024
6 juil. 2022 à 22:44
6 juil. 2022 à 22:44
Bonsoir,
J'ai copier-coller le code que j'avais posté hier dans un nouveau tableur, et effectivement il n'y a pas d'erreur de valeur. Je ne vais pas chercher à comprendre.
Par contre ma curiosité va me pousser à comprendre le dysfonctionnement à partir de 21.
Merci pour votre aide.
J'ai copier-coller le code que j'avais posté hier dans un nouveau tableur, et effectivement il n'y a pas d'erreur de valeur. Je ne vais pas chercher à comprendre.
Par contre ma curiosité va me pousser à comprendre le dysfonctionnement à partir de 21.
Merci pour votre aide.
hoquei44
Messages postés
16349
Date d'inscription
dimanche 19 janvier 2014
Statut
Membre
Dernière intervention
16 novembre 2024
>
hoquei44
Messages postés
16349
Date d'inscription
dimanche 19 janvier 2014
Statut
Membre
Dernière intervention
16 novembre 2024
6 juil. 2022 à 23:01
6 juil. 2022 à 23:01
Trouvé pour le problème à partir de 21 :
Il faut remplacer la ligne
Par la ligne
Et mon problème de valeur provenant du fait que j'avais une ligne de plus dans mon algo mais que j'avais supprimé en le mettant sur le site. Il s'agissait d'une ligne du style :
Donc, j'en conclu qu'une fonction ne peut pas écrire de valeur dans une autre cellule.
CB
Il faut remplacer la ligne
Table_Antecedant(i) = Table_Antecedant(i - 1) + Table_Paye(i) * Table_Tarif(i)
Par la ligne
Table_Antecedant(i) = Table_Antecedant(i - 1) + (Table_Paye(i) - Table_Paye(i - 1)) * Table_Tarif(i)
Et mon problème de valeur provenant du fait que j'avais une ligne de plus dans mon algo mais que j'avais supprimé en le mettant sur le site. Il s'agissait d'une ligne du style :
cells(i, 1) = Table_Antecedant(i)
Donc, j'en conclu qu'une fonction ne peut pas écrire de valeur dans une autre cellule.
CB
6 juil. 2022 à 18:30
L'origine du "compliqué", c'est parce qu'à l'origine je souhaite aller plus loin dans ma fonction pour lui permettre d'être réutilisée plus facilement dans d'autre situation :
1/ La variabilisation de "plus" avait pour objectif de ne pas avoir à le recalculer en cas de changement des seuils ou des prix unitaires.
2/ La variabilisation des CASE avait pour objectif de pouvoir ajouter de nouveaux seuils sans avoir à toucher au code, mis à part le tableau.
Comme je ne suis pas parvenu à mettre une boucle FOR/NEXT à l'intérrieur d'un SELECT CASE, j'ai fait l'inverse en mettant un SELECT CASE à l'intérieur d'un FOR/NEXT. Même si je pense qu'un WHILE aurait été plus performant, mais dans l'absolue pour l'instant je cherche simplement à ce que cela fonctionne. Puis je corrige petit à petit à tâtons.
Par contre, je n'ai pas compris d'où venait mon erreur... J’aimerai bien comprendre si possible.
Question bonus : comment peut-on initialiser un tableau d'une dimension i avec uniquement des valeurs à 0 ?
C'est pour éviter le et d'avoir à compter le nombre de 0.
Merci et bonne journée