Calcul prévisionnel
Bonjour à tous,
Je débute avec excel et je cherche à créer un tableau prévisionnel.
Ma formule serais de ce genre : x= (x+1%) +20
Si je part part exemple de 0 le 1er jour,
le 2eme jour je trouverai 20 car (0+1%)+20=20
Le 3eme jour 42 car (20+1%)+20=42
Le 4eme jour 62.42 car (42+1%)+20= 62.42
et le 187ème jour ?
J'ai tenté la formule PREVISION mais les résultats ne collent pas, excel se contente de faire une adition..
Bref, pouvez m'aider a trouver la bonne formule ?
Un grand merci :)
Bonjour,
En attendant que quelqu'un trouve une formule, voici une proposition qui utilise deux méthodes différentes.
Après avoir saisi en D2 le nombre de jours
- en E2, résultat obtenu avec l'aide d'une fonction personnalisée (en vba); la formule en E2 est: =Prev($D$2) le code est dans le module 1
-ou en E4, résultat obtenu par itération( là aussi, passage par du vba), réagit au changement du nombre de jour en D2, la formule est: =((E4*0,01)+E4)+20, le code est dans le module de la feuille 1
En colonne A, une liste de résultats pour comparer avec les résultats précédents.
Le code de la fonction personnalisée:
Function Prev(valeur As Double) As Double
For i = 1 To valeur
Prev = (Prev * 0.01 + Prev) + 20
Next i
End Functionle code dans le module de la feuille 1
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$2" Then
Application.MaxIterations = Target.Value
Range("E4").FormulaR1C1 = "=((RC*0.01)+RC)+20"
End If
End SubPour accéder au code VBA, faire ALT + F11
le fichier
Cdlt
Bonjour et bienvenue,
Bonjour à toutes et tous,
Une proposition à méditer.
Cdlt.
Génial
Un grand merci à vous deux j'ai pu insérer mes propres données et la formule d'Arturo fonctionne !
Pour la votre Jean-Eric, le +1% est calculé comme +0,01, du coup cela ne fonctionne pas.
Maintenant pour avoir des résultats parfait, il faudrai que je rajoute une petite difficulté.
L'augmentation de 1% il faudrait qu'elle fonctionne 1 jour/2
Des idées ?
Pour avoir le résultat 1 jour sur 2 il suffit de modifier légèrement le code
pour la fonction personnalisée:
Function Prev(valeur As Double) As Double
For i = 1 To valeur Step 2
Prev = (Prev * 0.01 + Prev) + 20
Next i
End FunctionPour la macro évènementielle:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$2" Then
Application.MaxIterations = Target.Value / 2
Range("E4").FormulaR1C1 = "=((RC*0.01)+RC)+20"
End If
End Suble fichier
Ok c'est bon je suis paumé la..
C'est pas faute d'essayer de comprendre mais lorsque j'ouvre votre dernier fichier, je vérifie quelques données et le 1% 1j/2 n'est pas pris en compte.
Pourtant quand je fais alt f11 je vois bien que le code marque For i = 1 To valeur Step 2
De plus, je ne fais pas encore la différence entre la fonction personalisée et par itération.. Encore moins la macro événementielle
Navré , je m'aventure dans des trucs alors que je n'ai même pas les bases..
Merci pour votre patience !
Bon, peut-être que là, j'ai mal compris.
De plus, je ne fais pas encore la différence entre la fonction personnalisée et par itération.. Encore moins la macro événementielle
La fonction personnalisée: les fonctions excel telles que SOMMES, INDEX, ARRONDI etc sont des fonctions natives, ce sont des fonctions couramment utilisées donc déjà crées intégrées dans Excel, mais parfois il arrive qu'on ait besoin d'une fonction qui n'existe pas dans excel car trop spécifique ou trop complexe, alors on la crée de toute pièce avec le code VBA, elle s'utilise comme une fonction native d'excel.
Une macro évènementielle est une macro qui réagit à un évènement qui à lieu soit sur le classeur, la feuille ou une cellule. Dans votre cas, j'ai opté pour une macro évènementielle qui réagit au changement de valeur dans une cellule (ici la D2). Dès qu'une valeur est entrée dans cette cellule, la macro démarre dans la foulée.
Une cellule ne peut pas à la fois afficher un résultat et refaire un calcul avec le résultat obtenu, c'est le cas avec votre formule X=(X+1%X)+20, pour contourner ce problème, on active l'itération (dans les options Excel, Formules, Activer le calcul itératif) En affectant une valeur à ce calcul itératif, la formule se recalculera autant de fois que la valeur donnée à l'itération.Cette valeur est intégrée dans le code et est égale à la valeur saisie en D2.
Pour en revenir à la première question, pouvez-vous m'indiquer quelques résultats attendus.
Cdlt