Indice d'une cellule par rapport à la valeur d'une autre cellule

Bonjour à tous et à toutes,

Je suis nouvelle ici et ne pratique -sérieusement- Excell et VBA que depuis quelques semaines, j'aurais donc besoin de votre aide. Je vous explique mon problème.

J'aimerais tout d'abord réussir à réaliser un graphique "manuellement", puis ensuite en enregistrant une macro pouvoir le créer via VBA. Le problème, c'est que même "manuellement" je n'arrive pas à réaliser mon graphique pour le moment.

Mon classeur excell (que je vous mets en pièce-jointe), est composé de trois feuilles :

- résultats : qui contient deux colonnes : une pour le temps et une pour les valeurs du test , le graphique devra donc exprimer les valeurs du test en fonction du temps

- série : qui pour chaque série recense la première ligne et la dernière ligne de la série de résultats. ( Par exemple, la série 1 = les valeurs du test allant du temps 0 au temps 3 - voir le fichier Excell pour plus de clarté).

-graphique : sur laquelle j'aimerais créer mon graphique. Le graphique aura une courbe pour chaque série (toutes représentées sur le même graphique).

J'ai donc créer un graphique (via un nuage de points reliés entre eux) et mon problème intervient au moment de rentrer les plages de données.

Il faudrait que pour l'axe des abscisses (X), correspondant à la colonne A feuille résultats, seules les valeurs de la colonne de la première ligne de la série 1 à la dernière ligne de la série 1 (enregistrées dans la feuille série) soit prise en compte et idem pour l'axe des ordonnés (Y).

Voilà ce que j'avais écrit dans la sélection de plage des données :

Nom Série : = série!$A$2

Valeur X = =resultats!$A$+série!$B$2:resultats!$A$+série!$C$2

Valeur Y = resultats!$B$+série!$B$2:resultats!$B$+série!$C$2

Evidemment, ça ne fonctionne pas...

J'espère que mes explications sont claires et que vous pourrez m'apporter votre aide.

Dans tous les cas, merci d'avoir pris le temps de lire ma question.

Le fichier que j'ai mis n'est qu'un exemple. Le véritable fichier à traiter est composé de 25 séries et plus de 10 000 lignes. C'est pour cela que je ne peux pas juste sélectionner mes plages "à la main". De plus, les valeurs de première ligne et dernière ligne de chaque série varient en fonction du fichier à traiter, je ne peux donc pas non plus garder ces valeurs-là fixes.

Personne n'a une petite idée ? ^^'

Bonjour

Respecter les normes t'aidera à ne pas compliquer

Pourquoi utiliser VBA ?

La série devrait être indiquée dans le tableau initial.

Raisonner en numéro de lignes n'est pas une bonne approche

Là on ne comprend pas ce que tu veux représenter

Une tentative

Bonjour missma,
Salut chris

C'est tellement clair (mais seulement dans la tête de missma ! ) que chris et moi avons compris des choses très différentes.
J'ai modifié (avec ce que j'ai cru comprendre) les valeurs de la feuille "série" en colonnes B et C. La macro crée donc trois graphiques.

Voilà donc une seconde petite idée !

Bonjour Chris et U.Milité,

Merci pour vos réponses à tous les deux et désolée de ne pas avoir été assez claire

Ce que je veux est plus comme U.Milité mais en réunissant les trois courbes sur un seul graphique.

Le problème c'est que je ne peux pas juste pré-sélectionner mes séries "manuellement" pour faire le graphique, parce que la première ligne et dernière ligne de chaque série va varier.

Pour reprendre mon exemple, on analyse le Fichier1 :

La série 1 ce sont les valeurs du tableau de résultat allant de la ligne 2 à la ligne 4 donc :

lignetempsvaleurs
20294
31789
4254

La série 2 ce sont les valeurs du tableau de résultat allant de la ligne 5 à la ligne 7 donc :

5363
6421
7547

La série 3 ce sont les valeurs du tableau de résultat allant de la ligne 8 à la ligne 12 donc :

868
975
10878
1193
12106

Or, ces lignes (2 à 4 ; 5 à 7 ; 8 à 12 ) sont des variables, en fonction du fichier à analyser se ne seront pas les mêmes.

Les plages de données à sélectionner dans le tableau de résultat va donc varier en fonction de ces lignes.

Par exemple, si j'étudie un autre fichier, Fichier2 par exemple, je pourrais obtenir que :

La série 1 aura pour première ligne 2 et dernière ligne 7, donc le tableau de valeur pour tracer la courbe 1 correspondante sera celui-ci (en ne prenant que la colonne temps et la colonne val pour la plage de données) :

lignetmpsval
20294
31789
4254
5363
6421
7547

La série 2 aura pour première ligne 8 et dernière ligne 9, la courbe 2 devra donc utiliser la plage de données suivantes :

868
975

Et la série 3 aura pour première ligne 10 et dernière ligne 12, la courbe 3 devra donc utiliser la plage de données suivantes :

10878
1193
12106

Voilà, j'espère que maintenant l'explication de ce que je veux est un peu plus claire ? (Sinon n'hésitez pas à me redemander...)

Et pourquoi utiliser VBA, et bien c'est vrai que maintenant que j'y pense ce n'est pas forcément nécessaire

Bonjour,

En ce qui me concerne, j'ai beaucoup de mal à me représenter ce que donnerait un graphique avec 3 séries et les valeurs que tu donnes
Tu peux nous montrer un exemple (d'autant que si VBA n'est plus utile je comprends moins encore)

RE

Comme déjà dit se baser sur les numéros de lignes n'est pas la bonne approche : il faut un élément déterminant la série, une logique que tu ne donnes pas...

Mon tableau de valeurs d'exemple n'était peut-être pas terrible pour bien comprendre, je vous en remets un nouveau.

Une série est déterminée à partir des valeurs de la feuille résultat.

Pour trouver le début de ma série, je regarde dans la colonne temps si ma cellule active est inférieure à la cellule précédente, si c'est le cas, alors je suis au début d'une nouvelle série et la ligne précédente est la fin de la série précédente. ( Autrement dit, dès que le temps repart à 0 ou 1 on commence une nouvelle série). Exemple :

lignetmpsvals
210
3
24,92
4
34,98
5
45
6
55
7
10
8
2350
9
3350
10
00
11
15,1
12
24,6
13
34,97
14
44,98
15
54,74
16
0350
17
1350
18
2350
19
3350
20
00
21
10
22
24,8
23
34,89
24
44,93
25
54,91

Donc dans ce cas-là, la série 1 serait de la ligne 2 à 6, la série 2 serait de la ligne 7 à 9 et etc... Sauf qu'il y a une condition supplémentaire pour déterminer une série:

Condition supplémentaire : pour dire qu'une plage où le temps évolue est une série, il faut EN PLUS qu'au moins une de mes valeurs de la série soit égale à 5 (+- 1)

Donc, pour reprendre mon exemple, mes VRAIES séries sont :

sériepremiere lignederniere ligne
série 126
série 21015
série 32025

La plage comprise entres les lignes 7 et 9 n'est pas prise en compte puise que les valeurs de la plage ne sont pas égales à 5 +- 1 .

Après quand je dis que VBA n'est pas forcément nécessaire, c'est que s'il y a un moyen de créer le graphique sans faire tourner de macro, ça me convient aussi. Il faut juste que dès que mes valeurs sont rentrées dans la feuille résultats, le graphique se trace "tout seul" et que l'on n'ait pas besoin de ressaisir les plages manuelles à chaque fois (comme je l'ai fais dans le fichier d'exemple que je vous mets en pièce-jointe).

RE

Si j'ai bien compris une solution PowerQuery (intégré à Excel)

Actualiser par Données, Actualiser tout

RE

J'ai reposté le fichier ci-dessus car il y avait une erreur dans le changement de série et une autre dans la source du graphique

Salut chris !

Je ne savais pas trop comment utiliser PowerQuery, mais ton idée m'a permis de trouver une solution.

J'ai tout simplement créer une macro qui, à l'aide de mes numéros des lignes, récupère mes données et les trie par série sur une nouvelle feuille du classeur. Une fois mes données réparties par série, il est plus simple de sélectionner les plages pour créer le graphique.

Ca demande probablement plus d'opérations que nécessaire, mais au moins, cela fonctionne : j'ai enfin pu tracer mes graphiques !

Merci beaucoup à tous les deux, Chris et U.Milité, pour le temps que vous avez passé à m'aider !

Rechercher des sujets similaires à "indice rapport valeur"