Minimum de valeurs

  • Initiateur de la discussion nicolas
  • Date de début
N

nicolas

Guest
Bonjour à tous

Voilà: j'ai besoin d'un petit coup de main.

Sur ma worksheet("Calculation"), j'ai un certain nombre de valeurs dont je me sers pour faire un graphique à partir du code VBA.

Les case A1 à AY1 sont les absisses.
les cases A2 à AY2 sont les ordonnées.

Grâce à cette ligne de code, j'affiche dans le textbox "valueMini", le minimum des ordonnées:
ValueMini.Text = WorksheetFunction.Min(Worksheets ("CALCULATION").Range("A2:BY2"))

Mon problème est que j'aimerais afficher dans un textbox "absisse" la valeur de l'absisse correpondant à l'ordonnée minimale trouvée...

Merci pour suggestions!
 
J

Jean-Marie

Guest
Re...

Excuse cela ne pouvait pas fonctionner, l'instruction n'était pas complète

Worksheets("CALCULATION").Select 'Pour diminuer les longeurs des deux lignes
ValueMini.Text = WorksheetFunction.Min(Range("A2:BY2"))
Absisse.text = WorksheetFunction.Index(Range("A1:BY1"), 1, WorksheetFunction.Match(ValueMini.Text, Range("A2:BY2"), 0))

@+Jean-Marie
 
Y

Yeahou

Guest
Bonjour Nicolas, Jean Marie, le forum

tu pourras le faire si tu mets tes ordonnées en A1:AY1 et tes abscisses en A2:AY2, c'est le seul moyen pour utiliser rechercheH. Sinon il faut programmer un code.

Cordialement, A+

ValueMini.Text = WorksheetFunction.Min(Worksheets("CALCULATION").Range("A1:AY1"))
ValueAbscisse.Text WorksheetFunction.HLookup(WorksheetFunction.Min(Worksheets("CALCULATION").Range("A1:AY1")), Worksheets("CALCULATION").Range("A1:AY2"), 2, False)
 
Z

Zon

Guest
Salut,

J'ai testé la soluce de Jean Marie, elle fonctionne bien. Par contre la plage est A1:AY2 ? sont - ce des textbox ou des shpaes ou autre chose ?

=>Nicolas mets un fichier exemple.
Une approche avec Evaluate, testes ceci Nicolas.
Cela revient à faire un index equiv du minimum des ordonnées, que l'on peut traduire en VBA: lancer le code depuis la feuille active.
Sub Princ()
Dim PLage As Range
Set PLage = [A1:AY2] 'à adpater
With PLage
Msgbox IndexEquiv(.Rows(1), .Rows(2), Mini(.Rows(2)))
End With
End Sub

Function IndexEquiv(PLage1 As Range, PLage2 As Range, Valeur)
IndexEquiv2 = Evaluate("INDEX(" & PLage1.Address & ",MATCH(" & Valeur & "," & PLage2.Address & ",0))")
End Function

Function Mini(PLage As Range)
Mini = Evaluate("Min(" & PLage.Address & ")")
End Function

Il n'y a pas de gestion d'erreur pour me dire quelle erreur tu aurais Nicolas ...


A+++
 

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 536
dernier inscrit
komivi