Formule en boucle avec condition

Résolu
cs_dikanete Messages postés 14 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 20 septembre 2009 - 9 juil. 2008 à 00:44
cs_dikanete Messages postés 14 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 20 septembre 2009 - 11 août 2008 à 21:21
Bonjour à tous,




peut-être que mon thème est faux. désolé d'avance...
je vais essayer d'être le plus clair possible, voici mon problème,



j'ai une série de données suivantes à des dates consécutives:



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

 





1 (chiffre de référence)



1.1



1.2



1.3



1.4



1.5....




 





je dois calculer le performance de ces nombres par rapport à mon chiffre de référence. tant que la performance est en dessous de 0.3 je garde mon chiffre de référence. Dès que ma performance => 0.3 mon nouveau chiffre de référence change.



exemple: (1.1-1)/1 = 0.1




               (1.2-1)/1=0.2




               (1.3-1)/1=0.3 donc une performance = 0.3 et donc ma nouvelle référence devient 1.3 et je dois continuer à calculer la perf par rapport à ce nouveau chiffre.



c'est à dire: (1.4-1.3)/1.3




                    (1.5-1.3)/1.3




                    (1.6-1.3)/1.3... jusqu'à ce que je rencontre à nouveau une perf => 0.3..



j'ai aucune idée du code à utiliser. vu que je glisse ma formule avec une condition??? peut être tout simplement avec une formule excel? j'en sais rien, je suis perdu.



j'espère avoir été assez clair. c'est pas évident à expliquer.



merci d'avance de l'aide que vous pourrez m'apporter.


bonne soirée

5 réponses

cs_dikanete Messages postés 14 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 20 septembre 2009
17 juil. 2008 à 23:23
Salut,
merci pour ton message et tes commentaires.
je suis absent pour une semaine.
je vais essayé à mon retour.
je te tiens au courant et je pense que j'aurais certainement besoin de ton aide encore.
merci d'avance
bonne soirée,
3
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
9 juil. 2008 à 08:28
Salut,
Je ne sais pas si tu peux le faire avec une formule, mais en tout cas avec tu code VBA cela ne semble pas du tout insurmontable.

Ou sont stocké tes nombre à tester?

Sinon une simple boucle du style (bien sur à adapter)

Dim i As Long
Dim ValCell As Single
Dim Ref As Single
   
   'initialise la valeur de référence
   Ref = 1
   'Pour chaque cellule de ta plage
   For i = DebutTaPlage To FinTaPlage
       'Tu récupère la valeur de la cellule
       ValCell = CelluleLigne(i)
       'tu fais le test sur ton calcul
       'et au besoin tu modifies al valeur de référence       If (ValCell - Ref) / Ref >0.3 Then Ref ValCell
   Next , ----
[code.aspx?ID=41455 By Renfield]
Restera aussi à savoir QUAND tu souhaites faire cette boucle pour décider de l'endroit où placer ce code (une fois adapté bien sûr)

@+: Ju£i€n
Pensez: Réponse acceptée
0
cs_dikanete Messages postés 14 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 20 septembre 2009
10 juil. 2008 à 00:52
Salut Julien,
merci tout d'abord pour ton message.
cela fait longtemps que je n'ai pas utilisé VBA et je suis un peu rouillé.
voici certaines quesitons sur ton code:   

   Ref = 1 'j'indique la cellule range.("A2").value ou juste le chiffre?
   For i = DebutTaPlage To FinTaPlage 'style B32 to B48?
       ValCell = CelluleLigne(i) 'style B32?       If (ValCell - Ref) / Ref >0.3 Then Ref ValCell
   Next

Dernière question, comment puis-je faire pour que tous mes Ref s'affiche dans une colonne annexe?

Désolé pour toutes ces questions (je suis largué) et merci d'avance pour ton aide précieuse.
a bientôt
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
10 juil. 2008 à 08:15
Salut,
REgarde si tu comprends mieux ce code.
J'espère l'avoir suffisament commenter

Dim CntRef As Long
   'ref prenfra la valeur de A2 pour s'initialiser
   Ref = Range("A2").Value
   'on va stocker les ref dans la colonne  C
   CntRef = 1 'car on commencera a ecrire en ligne 1
   Range("C" & CStr(CntRef)).Value = Ref
   For i = 32 To 48
       ValCell = Range("B" & CStr(i)).Value
       If (ValCell - Ref) / Ref >= 0.3 Then
           Ref = ValCell
           'on augmentae la ligne
           CntRef = CntRef + 1
           Range("C" & CStr(CntRef)).Value = Ref
       End If
   Next , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i€n
Pensez: Réponse acceptée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_dikanete Messages postés 14 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 20 septembre 2009
11 août 2008 à 21:21
Salut Julien,
je n'ai finalement pas réussi à créer ma formule avec VBA.
ton code était correcte mais ma programmation laisse à désirer et faute de temps je n'ai pas achevé mon travail.
ton code était tout à fait clair et tout à fait logique.
merci encore pour ton aide.
a bientôt je pense
0