Formule en boucle avec condition [Résolu]

Signaler
Messages postés
14
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
20 septembre 2009
-
Messages postés
14
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
20 septembre 2009
-
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

Messages postés
14
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
20 septembre 2009

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,
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
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
Messages postés
14
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
20 septembre 2009

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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
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
Messages postés
14
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
20 septembre 2009

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