Fonction sur Excel
Résolu
hoquei44
Messages postés
16765
Date d'inscription
Statut
Membre
Dernière intervention
-
hoquei44 Messages postés 16765 Date d'inscription Statut Membre Dernière intervention -
hoquei44 Messages postés 16765 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Fonction sur Excel
- Fonction si et excel - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Comment trier par ordre alphabétique sur excel - Guide
- Comment calculer la moyenne sur excel - Guide
2 réponses
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
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
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
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