Trouver les points d'inflexion d'une série de données

Bonjour !

Je suis en présence d'un cas que je n'arrive pas à résoudre par moi-même...

Je cherche à tracer une courbe de "résultat" par rapport à une "donnée d'entrée".

Jusque là, rien de sorcier.

Ce qui complique la chose, c'est que la "donnée d'entrée", en colonne A, par d'une certaine valeur. Elle reste stable jusqu'à un point où elle entame un rampe négative, jusqu'à atteindre une valeur mini à partir de laquelle elle entame une rampe positive pour revenir à la valeur stable initiale.

A ce stade il est certainement très utile de se pencher sur le fichier lui-même : https://www.excel-pratique.com/~files/doc2/mise_en_forme_contro.xls

Des difficultés sont à noter :

1) les points A, B et C représentés sur mon graphe peuvent apparaître à des moments différents suivant l'essai.

2) la partie stable de la donnée d'entrée, comme les deux rampes, sont soumises à des fluctuations ne permettant pas de marquer une tendance claire sans conditions.

Le but final de la moulinette est de mettre en forme deux colonnes de "résultat" : une suivant la rampe négative, et l'autre suivant la rampe positive.

Ainsi, je pourrais calculer l'aire de l'aller-retours de la valeur mini à la valeur maxi.

J'avoue que là, on en est plus au défi qu'au petit coup de main !

Merci de votre aide !

Bonjour manuverbe, forum,

Qu'entends-tu par " 2 colonnes de résultat suivant rampe négative et positive "? Tu peux donner un petit exemple chiffré?

Bonjour VBA-new !

Merci de te pencher sur mon problème !

Ce que j'entends par là, c'est qu' on peut observer 4 phases sur les données d'entrée :

une première "stable" (ou presque !) aux alentours de 0.75,

une deuxième, que j'appelle "rample négative", où les valeurs décroissent de 0.75 à environs 0.26,

puis une troisième, que j'appelle "rampe positive", où les valeurs remontent jusqu'à 0.75,

et enfin une quatrième, "stable", ou les valeurs restent autours de 0.75.

Ce que j'aimerai faire, c'est donc éliminer les phases 1 et 4, puis classer en deux colonnes les valeurs de "réponse" de 0.26 à 0.75 des phases 2 et 3.

graphiquement, cela revient à replier les phases 2 et 3, comme représenté dans le fichier joint.

Ensuite, en soustrayant les valeurs des phases 2 à 3, j'obtiendrai une courbe correspondant à la surface de l'élipse que forment les résultats des phases 2 et 3.

désolé pour la compexité de l'explication !

https://www.excel-pratique.com/~files/doc2/aVyPKmise_en_forme_contro.xls

Oulalalala !

Je me mélange moi-même les pinceaux...

Reprenons :

Phase 2 = rampe négative (de la donnée d'entrée)

Phase 3 = rampe positive (de la donnée d'entrée)

Mon schéma avec l'élipse est donc faux, les noms sont bons, mais les phases ne sont bien sûr pas 1 & 2...!

Mais l'idée est là !

Le principe est inchangé.

Merci !

RE,

C'est plus clair (tout en restant complexe ).

Admettons que la rampe négative (phase 2) soit la suivante :

0.75 ; 0.74 ; 0.72 ; 0.70

- et que la rampe positive (phase 3) soit la suivante :

0.70 ; 0.71 ; 0.73 ; 0.75

Quels sont les deux colonnes que tu veux afficher avec ces valeurs?

Re-re,

Et bien les valeurs seraient les valeurs "résultat" correspondantes aux deux phases :

Nous n'aurions plus alors qu'un colonne donnée d'entrée de 0.26 à 0.75, et deux colonnes phase 2 & phase 3 avec leurs résultats respectifs.

Evidemment, étant donnée la fluctuation du signal d'entrée, les valeurs de 0.26 à 0.75 de la colonne "donnée d'entrée" seront extrapolées... la symétrie n'est pas vraie.

Il faudra donc compter en nombre de lignes, puis adapter la colonne "donnée d'entrée" en fonction de ce nombre de lignes (0.26+((0.75-0.26)/nbre de lignes)).

16dediou-v6.xlsm (281.91 Ko)

RE,

En fait j'étais en train de voir ça en passant par du VBA, mais je rencontre un problème en fait.

Comment faire pour qu'Excel "voit" à quel moment commence la rampe négative!! C'est en effet une des difficultés que tu as relevées!

Ca m'aurait arrangé que le début de la rampe négative soit la valeur maximale de la phase 1!

Aurais-tu une solution? Car avant de mettre en application sur Excel, il faudrait d'abord que l'on trouve une solution (un raisonnement) à la difficulté n°2 que tu as pointée.

C'est-à-dire comment (on laisse donc Excel de côté pour l'instant) "dire" à Excel qu'on arrive en début de phase 2?

Edit : OK pour ta réponse du message précédent.

Et bien pas vraiment de solution...

Des idées plutôt, mais je n'arrive pas à les appliquer...

j'avais pensé, pour faire ce repérage, passer par de la comparaison de cellules, ou de groupes de cellules (en passant par des moyennes, etc.)... bref, très complexe.

Une autre idée, qui semble plus réaliste, c'est de passer par un arrondi à 2 décimales de la valeur d'entrée. On peut alors estimer qu'à partir du moment où une valeur est inférieure à la précédente, on est à la phase 2.

De la même manière, lorsqu'une valeur est supérieure à la précédante, on arrive à la phase 3.

Après, il s'agit de faire le repérage, et de provoquer les découpes en conséquence...

Bon, cette solution ne fonctionne pas non plus,

l'arrondi aussi fluctue... évidemment.

Même en passant par de l'arrondi supérieur ou inférieur.

RE,

Je suis en train de voir là manuverbe. Je pense que je tiens une bonne piste.

Une petite question :

La rampe négative va jusqu'à 0.26 compris?

Ou bien on l'exclut de la rampe négative et on la met dans la rampe positive?

Non, effectivement, on peut la laisser dans la rampe négative.

il faudra juste copier la même réponse dans les deux colonnes de réponse, comme ça, phase 3 - phase 2 = 0.

RE,

Bon, je me suis grillé quelques milliers de neurones et j'en suis arrivé au résultat suivant : Fichier

Je suis resté sur les arrondis pour lisser les données.

Donc, pour extraire les valeurs des rampes négative et positive, clique sur le bouton qui est sur la feuille 1.

Il manque encore quelques étapes pour satisfaire ta demande mais je pense que le plus gros du travail a été fait (j'espère que ça répond à peu près à tes attentes )

Teste le fichier manuverbe et redis-moi ce qu'il faut ajouter (ou enlever).

J'ai mis 2-3 msgbox pour que ma façon de procéder soit un peu plus clair.

A+

Re

Well-done !

Je vais à mon tour griller quelques neuronnes à comprendre ta macro.

Quoi qu'il en soit, ça à l'air de bien fonctionner !

Reste plus maintenant qu'à sélectionner les valeurs "résultat" de la colonne E correspondant aux cellules non vides de la phase 2 (colonne B) pour les coller dans une colonne "phase 2" (d'une autre feuille ?), et faire la même chose pour la phase 3 avec une colonne "Phase 3".

Je me plonge fissa dans ta macro pour bien saisir le truc !

Ahah !

La subtilité, c'est que dans la colonne "Phase 3" que l'on va créer, il va falloir inverser les valeurs... de sorte à les faire correspondre à une donnée d'entrée égale à la phase 2 !

Tu saisis ? Ca me paraît pas très clair mon explication...

1ndf.xlsx (36.52 Ko)

RE,

Oui en fait j'avais à peu près compris qu'il fallait reprendre les valeurs "résultats" correspondant aux valeurs des rampes.

Par contre pour l'inversion des valeurs, es-tu sûr que c'est pour la phase 3? A moins que cela ne revienne au même?

J'attendais juste que tu valides la première étape !

Je me penche la-dessus et je te redis!

C'est encore moi,

de sorte à les faire correspondre à une donnée d'entrée égale à la phase 2 !

Comment faire? Il n'y a pas le même nombre de valeurs entre la phase 2 et la phase 3!

et bien, encore moi aussi !

et oui, les rampes sont censées être linéaires, c'est le moyen d'essais physique qui n'est pas stable. C'est pour ça que je parlais d'extrapoler les données d'entrées en fonction du nombre de valeurs relevées.

On ne copiera donc pas les données d'entrée, mais on va les re-créer, de manière linéraire cette fois.

On connais le nombre de valeurs relevées entre 0.26 et 0.75. On divise donc 0.49 par notre nombre de lignes, et on a une évolution linéaire de la donnée d'entrée en additionnant 0.26 + (0.46/nbre de lignes), puis ainsi de suite jusque 0.75.

Le défaut qui crée la fluctuation n'est pas pénalisant pour le résultat, uniquement pour le traitement des données, c'est déjà très gênant ! Je l'admet...

Alors sur la validation de ta première ébauche...

J'ai du mal à voyager en pas à pas détaillé à cause des msg box, c'est pas grave.

J'ai voulu tester une autre série de données, plus longue cette fois (pas énorme non plus, environ 300 lignes de plus).

problèmes :

La macro plante. Bon, c'est un peu simpliste...

En fait, le premier point de la phase 2 n'est plus à 228, je ne sais pas si c'est ça le problème...

Il peut y avoir autre chose...

Le nombre de lignes est plus important, j'avais donc prolongé la formule d'arrondi, mais ça ne fonctionne pas non plus... d'autant que lorsque l'on revient à une série plus petite, les cellules contenant la formule sont à zéro, et le mini de la macro se retrouve en carafe...

Il faudrait peut être dans la macro passer par une étape de comptage du nombre de lignes contenant des données pour mettre en forme la collone d'arrondi.

pfiou ! Je me disais bien que c'était compliqué !

En attendant, merci de ta patience !!!

Bon, désolé, faut que je décolle en réunion, je sais pas si j'aurais le temps de me repencher ce soir sur le sujet, mais pour sûr, demain je m'y recolle !

Merci de ton aide !

Oula!

C'est ce dont j'avais peur! La macro que je t'ai créée ne marche que pour cette série de donnée là!

Et vu que je débute en macro, j'ai un peu de mal à trouver une solution qui pourrait s'appliquer à n'importe quelles données!

Si les msgbox te gênent, tu peux soit les enlever, soit mettre un guillemet simple devant pour que ça devienne un commentaire.

Excel ne les prendra donc pas en compte lors de l'exécution de la macro.

Bon, le problème de l'interpolation ne semble pas trop difficile à résoudre.

Le vrai problème est de pouvoir appliquer une macro à tous les cas possibles! C'est pas gagné!

Quand t'auras le temps et si c'est possible, peux-tu me passer l'autre série de données pour que je teste également?

En attendant, je vais réfléchir à l'interpolation pour les données actuelles, au cas où.

A la prochaine!

salut vba-new !

de retour, je m'y re-colle...

en attendant, je te laisse un autre set de données : https://www.excel-pratique.com/~files/doc2/mise_en_forme_contro_fichier2.xls

Le précédant, je l'avais tronqué pour qu'il puisse entrer dans la limite admissible des 100ko du serveur...

J'espère que je t'ai pas empêché de dormir !!!

Rechercher des sujets similaires à "trouver points inflexion serie donnees"