identifier une plage où est la cellule de la plus grosse valeur avec VBA

Gaby71

XLDnaute Junior
Bonjour

besoin de votre aide
J'ai un classeur avec plusieurs feuilles
-une page resultat
-3 pages avec 4 colonnes (les colonnes B C et D)chacune

Je voudrais identifier la plage où il y a la cellule avec la plus grande valeur

voir fichier ci-joint

Merci d'avance

@+

Gaby
 

Pièces jointes

  • forum_valeursMax.xlsx
    30.2 KB · Affichages: 50
  • forum_valeursMax.xlsx
    30.2 KB · Affichages: 54
  • forum_valeursMax.xlsx
    30.2 KB · Affichages: 67

CISCO

XLDnaute Barbatruc
Re : identifier une plage où est la cellule de la plus grosse valeur avec VBA

Bonsoir

Une possibilité en pièce jointe. Tu peux tirer les formules de la colonne G vers la droite si tu a plus de feuilles de tests.

@ plus
 

Pièces jointes

  • retour__valeursMax bis.xlsx
    60.4 KB · Affichages: 41

CISCO

XLDnaute Barbatruc
Re : identifier une plage où est la cellule de la plus grosse valeur avec VBA

Bonjour

Une manière de faire complètement différente en pièce jointe.

Dans les fichiers précédents, on cherche la xième plus grande valeur (avec (GRANDE.VALEUR......;x) de la colonne (X, Y ou Z du test 1, ou 2 ou 3) (Z par exemple) (que l'on trouve par exemple sur la ligne 32), et on compare les valeurs de la ligne précédente et de la ligne suivante, sur cette colonne Z, avec cette xième valeur.
Ce qui donne le test SI(ET(Z en ligne 31<Z en ligne 32;Z ligne 32 > Z en ligne 33)...
Si ce test donne VRAI on garde x (on a un sommet), sinon, on essaye avec x+1. Le test est répété jusqu'a avoir un test VRAI pour x =2, puis 3, puis 4, puis 5...
Problème : cela donne une formule à rallonge, puisqu'il faut faire le test avec 2, puis 3, puis... Dans un de mes précédents fichiers, j'avais été par précaution jusqu'à x = 8. Dans le dernier fichier, cela ne suffisait pas et il a fallu que je rallonge la formule jusqu'à x = 11 (La plus grande valeur correspondant au second pic étant la 10ème plus grande valeur de la liste des Z pour le test 1).

Dans la nouvelle mouture en pièce jointe, j'ai défini 3 noms :
colligne2 correspondant à la plage intéressante (dans test 1, test 2 ou test 3) de la ligne 2 à la ligne 100
colligne3 correspondant ............................................................................. de la ligne 3 à la ligne 101
colligne4 correspondant ............................................................................... de la ligne 4 à la ligne 102

On fait, en matriciel, le test SI((colligne2<colligne3)*(colligne3>colligne4);colligne3;0) ce qui permet de comparer toutes les valeurs de la colonne intéressante 3 par 3 ((Z de la ligne 2 < Z de la ligne 3)*(Z de la ligne 3 > Z de la ligne 4), puis (Z de la ligne 3 <Z de la ligne 4) *(Z de la ligne 4 > Z de la ligne 5), et ainsi de suite). Cela renvoie une liste de zéro et les valeurs de tous les sommets. Toutes les valeurs qui ne correspondent pas au sommet d'un pic sont remplacées par un zéro. Après, pour avoir le pic le plus grand, ne reste plus qu'à prendre GRANDE.VALEUR(liste,1), pour le second GRANDE.VALEUR(liste;2) et ainsi de suite.

Cela ne fonctionne pas si la première valeur de la colonne, ou la dernière, correspondent à un pic, mais bon, je pense que ta plage de fréquences est assez grande pour ne pas avoir ces situations.

Tu peux tirer ces formules vers la droite.

Avantages par rapport à l'ancienne méthode :
* la formule est beaucoup plus courte
* on ne risque pas de louper la valeur intéressante en ayant arrêté la formule trop tôt (x = 8 dans un de mes précédents fichiers, alors qu'il fallait aller au moins jusqu'à 10 dans le fichier du post précédent)


@ plus
 

Pièces jointes

  • retour__valeursMax ter.xlsx
    59.3 KB · Affichages: 42
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : identifier une plage où est la cellule de la plus grosse valeur avec VBA

Bonjour

Où est-ce que tu en es, Gaby ? Ca fonctionne, ça fonctionne pas ? Pour bien faire, je pense qu'il faudrait travailler avec des plages dynamiques, puisque tu n'as pas toujours le même nombre de lignes...

@ plus
 

Gaby71

XLDnaute Junior
Re : identifier une plage où est la cellule de la plus grosse valeur avec VBA

Bonjour,

J'ai réussi à bidouiller . Ca fonctionne

Juste une imperfection sur le 3eme point de deux courbes qui a la même valeur que le 2éme.

La semaine prochaine je preparai un fichier

Merci encore

Gaby
 

CISCO

XLDnaute Barbatruc
Re : identifier une plage où est la cellule de la plus grosse valeur avec VBA

Bonjour

Si la saisie est tellement rapide que tu peux avoir deux valeurs successives identiques, il faut peut être que tu transforme le test comme suit :
SI((colligne2<colligne3)*(colligne3<colligne4)*(colligne4 >= colligne5)*(colligne5>colligne6);col ligne4;0)
ou quelque chose comme ça, en définissant les noms colligne5 et colligne6 en conséquence.

@ plus
 

Gaby71

XLDnaute Junior
Re : identifier une plage où est la cellule de la plus grosse valeur avec VBA

Bonjour

J'essaye de te faire ça dès que possible. Cela ne doit pas être très difficile car cela ressemble beaucoup à ce qui est déjà fait... en plus simple :) .

@ plus

Bonjour CISCO,

Voici ce que j'ai fait...
Avec ces nouveaux tests on peut voir que les courbes ne sont pas aussi pures qu'a l'exemple du départ

Alors il faudra plutôt recherche à quelles vitesses il y a les pics les plus importants sur l'ensemble de tous les BumpTests

j'ai du supprimer 3 bumptests pour que le fichier passe

je n'ai pas pu compresser

Merci d'avance

Gaby71
 

Pièces jointes

  • pointssurcourbesR.xlsm
    271.5 KB · Affichages: 30
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : identifier une plage où est la cellule de la plus grosse valeur avec VBA

Bonsoir

J'avais pensé que si tes mesures étaient un peu parasitées, le test proposé ne serait pas efficace, et donc que la formule proposée ne fonctionnerait pas à tous les coups. Dommage.... Faut trouver autre chose.

Ceci dit, je n'arrive pas à télécharger ton dernier fichier. J'ai un message d'erreur me disant que son nom n'est pas correct... Pourrais tu essayer à partir de chez toi, et en fonction du résultat, en remettre un ?

@ plus
 
Dernière édition:

Gaby71

XLDnaute Junior
Re : identifier une plage où est la cellule de la plus grosse valeur avec VBA

Bonjour CISCO,


je repasse le fichier en l'ayant coupé en deux dans l'espoir qu'il passe en taille et depuis mon PC au travail

Bonne journée
Cordialement

Gaby71
 

Pièces jointes

  • pointssurcourbes2.xlsm
    209.7 KB · Affichages: 26
  • pointssurcourbes1.xlsm
    250.2 KB · Affichages: 20

Gaby71

XLDnaute Junior
Re : identifier une plage où est la cellule de la plus grosse valeur avec VBA

Bonjour CISCO

Je viens de voir la reponse du 24/01/15 à l'instant

il n'y a donc pas continuité dans la discussion?

Je suis vraiment désolé . Quand je vois le travail que tu as effectué ...

J'ai essayé sur d'autres tests où il n'y avait pas une aussi belle courbe que Z du BumpTest2

Sur ton fichier attaché du 24/01/2015 , j'ai ajouté les 3 graphs des 3 BumpTests avec les 3 courbes sur chaque. Mais je n'ai pas la main pour l'attacher . Dommage ...
J'essaye de mettre une capture d'écran : retour24012015.jpg

A cause de cette courbe trop belle , qui à elle seule donne des vitesses critiques, les hypotheses sont moins simples.

Il faut identifier les zones de grands pics sur toutes les colonnes.
on voit qu'il y a des valeurs communes en abscisse à differentes courbes
Je vais essayer de trouver les 3 pics les plus hauts sur chaque courbe de mes 6 bumpTest plutôt que celle qui a la + grande valeur .
Bien que les courbes n'aient pas forcement 3 pics bien propres . Je l'ai vu sur d'autre tests où on n'a qu'un seul pic representatif.

Merci encore

@+

Gaby71
 

CISCO

XLDnaute Barbatruc
Re : identifier une plage où est la cellule de la plus grosse valeur avec VBA

Bonjour

Je ne peux, je ne sais pourquoi, télécharger tes deux derniers fichiers... Au besoin, ne met qu'une courbe, et explique moi pourquoi le fichier du 24/01 ne fait pas l'affaire sur cette courbe... Ou met un exemple plus conséquent sur le cloud, Dropbox ou autre...

@ plus
 

Gaby71

XLDnaute Junior
Re : identifier une plage où est la cellule de la plus grosse valeur avec VBA

Bonjour

je ne connais pas toutes ces techniques de transmission
et on ne peux pas donner une adresse E-mail sur le Forum.

Je n'ai pas appliqué la technique de ton fichier du 24/01/15 car je l'ai decouvert ce matin seulement
Je pense maintenant qu'il ne faut pas travailler sur la courbe du point de plus grande valeur:
-par malchance cette trop belle courbede l'exemple ne represente pas la majorité des cas , plûtot une exception . j'ai vu des cas où la courbe qui avait la plus grande valeur n'avaient qu'un seul pic et on passe à coté d'autres courbes qui ont des pics interessant

Quand on mets tous les graphs des BumpTests cote à cote on voit bien les valeurs en abscisse qu'il faut identifier ( on le vois sur la capture d'ecran que j'ai envoyé ce matin

Je vais essayer d'appliquer la technique du 24/01/15 à chaque courbe de chaque BumpTest et ensuite de faire un recoupement pour mettre en evidence des points de plus fortes ordonnées

Tous les bumpTests ont la même longueur reduite entre 600 et 1200 soit 100 lignes.

Vraiment desolé que le sujet n'ait pas été posé correctement du départ

Merci encore

@+

Gaby71


-
 

Gaby71

XLDnaute Junior
Re : identifier une plage où est la cellule de la plus grosse valeur avec VBA

Bonjour CISCO,

Maintenant que j'ai plusieurs tests de vibrations, je peux mieux cibler le besoin.
Il faut travailler sur chaque BumpTest:
-identifier la courbe ayant le haut pic, puis trouver les 3 plus haut pics en limitant la validité si l'ordonnée est inferieure à 5.00E-04 par exemple.
-puis la 2eme courbe ayant le plus haut pic, trouver ses 2 plus haut pics - idem que pour la premiere.
-et trouver les 3 plus haut pics sur la troisieme courbe Et faire la même chose sur tous les bumpTests confondus


je n'ai pas compris ceci :

"Dans la nouvelle mouture en pièce jointe, j'ai défini 3 noms :
colligne2 correspondant à la plage intéressante (dans test 1, test 2 ou test 3) de la ligne 2 à la ligne 100
colligne3 correspondant .................................................. ........................... de la ligne 3 à la ligne 101
colligne4 correspondant .................................................. ............................. de la ligne 4 à la ligne 102 "

... ces decalages de ligne

Merci d'avance

Gaby71
 

Pièces jointes

  • retour__valeursMax04022015.xlsx
    76.8 KB · Affichages: 23
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : identifier une plage où est la cellule de la plus grosse valeur avec VBA

Bonjour Gaby

Bonjour CISCO,

Je n'ai pas compris ceci :

"Dans la nouvelle mouture en pièce jointe, j'ai défini 3 noms :
colligne2 correspondant à la plage intéressante (dans test 1, test 2 ou test 3) de la ligne 2 à la ligne 100
colligne3 correspondant .................................................. ........................... de la ligne 3 à la ligne 101
colligne4 correspondant .................................................. ............................. de la ligne 4 à la ligne 102 "

Merci d'avance

Gaby71

Dans "Formules", avec le gestionnaire de noms, j'ai défini les 3 noms ci-dessus.

En faisant le test SI((colligne2<colligne3)*(colligne3>colligne4) ;… je demande à Excel de tester toutes les inéquations du style :
ET(D2<D3;D3>D4) (Si VRAI, la formule conserve D3)
ET(D3<D4;D4>D5) (Si VRAI, la formule conserve D4)
ET(D4<D5;D5>D6) (Si VRAI, la formule conserve D5)
et ainsi de suite puisque chaque nom est décalé d'une ligne par rapport aux autres.

La formule conserve donc en mémoire tous les sommets (les grands, comme les petits), puis donne la GRANDE.VALEUR demandée, la 1ère, la deuxième ou la troisième, et finalement affiche la valeur dans la colonne A correspondant à cette GRANDE.VALEUR.

Je regarde ce soir ou demain ton dernier fichier.

@ plus
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : identifier une plage où est la cellule de la plus grosse valeur avec VBA

Bonsoir

Cf. le début du travail en pièce jointe : Dans le fichier, les 3 vitesses correspondant aux trois plus grandes valeurs de chaque courbe, avec les points correspondant sur le graphique uniquement pour le BumpTest_1.

Je n'ai pas mis le test par rapport à 5.00E-04 .

@ plus
 

Pièces jointes

  • retour__valeursMax04022015bis.xlsx
    77.7 KB · Affichages: 31

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 425
Membres
103 206
dernier inscrit
diambote