Grande.Valeur adresse

10 réponses
Avatar
isabelle
bonjour,

je cherche l'adresse des grande.valeur,

par exemple: sur la plage A1:E1

0.0425 0.6600 0.0080 0.0425 4.2146

je cherche le résultat des numéros de colonne ( 5,2,1,4,3)

merci pour toutes vos suggestions, isabelle

10 réponses

Avatar
MichD
Bonjour Isabelle,
Un fichier exemple : http://www.cjoint.com/c/GJdjWZeQusi
MichD
"isabelle" a écrit dans le message de groupe de discussion :
oqv5bp$d6r$
bonjour,
je cherche l'adresse des grande.valeur,
par exemple: sur la plage A1:E1
0.0425 0.6600 0.0080 0.0425 4.2146
je cherche le résultat des numéros de colonne ( 5,2,1,4,3)
merci pour toutes vos suggestions, isabelle
Avatar
isabelle
bonjour Denis,
malheurement ça ne fonctionne pas, car comme dans l'exemple, il y a des doublons
mais je cherche toujours...
isabelle
Le 2017-10-03 à 00:57, isabelle a écrit :
bonjour,
je cherche l'adresse des grande.valeur,
par exemple: sur la plage A1:E1
0.0425    0.6600    0.0080    0.0425    4.2146
je cherche le résultat des numéros de colonne ( 5,2,1,4,3)
merci pour toutes vos suggestions, isabelle
Avatar
MichD
Bonjour Isabelle,
Je vois! Comme j'avais trouvé la donne du problème plutôt "simple" et que tu
es excellente pour l'élaboration de formule, je pensais que j'avais répondu
à une autre Isabelle...Avec des doublons (que je n'ai pas vu) la donne du
problème est beaucoup complexe...je regarde si je peux faire quelque chose
ce soir... mais si tu ne trouves pas, la solution ne doit pas être
facile...Pourrais-je trouver????
;-)
Bye,
MichD
Avatar
isabelle
bonjour Denis, bonjour à tous,
j'ai retrouvé la formule... mais il faut sélectionner la plage de cellules avant
de valider.
=GRANDE.VALEUR($B$4:$B$9;LIGNE(1:6))
avec la formule mise en cellule C4, sélectionner la plage C4:C9 et valider avec
ctrl+maj+enter
http://www.cjoint.com/c/GJexki5k4Qi
maintenant je me demande si il est possible, sans utiliser les cellules, de
reproduire ce type de formule en VBA ?
ou par exemple, à partir de: liste = Range("$B$4:$B$9") ou autre type de
ListeArray
aussi quel sera la formule ( ou le code) pour retrouver l'ordre des résultats
D4:D9 (ou G6:L6) toujours sans utiliser les cellules.
merci par avance pour toutes vos suggestions.
isabelle
Avatar
isabelle
MichD a écrit : ..je regarde si je peux faire quelque chose ce soir... mais

si tu ne trouves pas, la
solution ne doit pas être facile

Denis, merci beaucoup de continuer à chercher, je cherche aussi de mon coté pour
la 2èm formule et transposision vba...
isabelle
Avatar
MichD
Bonjour Isabelle,
Est-ce que ceci fait ton bonheur?
Dans la variable tableau, tu entres les valeurs que tu désires et
tu peux recopier le résultat dans une plage de cellule si désirée
Dans mon exemple, le résultat s'affiche sur une ligne...
'----------------------------------------------
Sub test()
Dim X(), T()
X = Array(0.425, 0.8, 0.66, 4.2146, 0, 0.425)
For a = 0 To UBound(X)
ReDim Preserve T(1 To a + 1)
T(a + 1) = Application.Large(X, a + 1)
Next
ss = Range("A30").Resize(, UBound(T, 1)).Address
Range("A30").Resize(, UBound(T, 1)).Value = T
End Sub
'----------------------------------------------
MichD
"isabelle" a écrit dans le message de groupe de discussion :
or3q34$eik$
bonjour Denis, bonjour à tous,
j'ai retrouvé la formule... mais il faut sélectionner la plage de cellules
avant
de valider.
=GRANDE.VALEUR($B$4:$B$9;LIGNE(1:6))
avec la formule mise en cellule C4, sélectionner la plage C4:C9 et valider
avec
ctrl+maj+enter
http://www.cjoint.com/c/GJexki5k4Qi
maintenant je me demande si il est possible, sans utiliser les cellules, de
reproduire ce type de formule en VBA ?
ou par exemple, à partir de: liste = Range("$B$4:$B$9") ou autre type de
ListeArray
aussi quel sera la formule ( ou le code) pour retrouver l'ordre des
résultats
D4:D9 (ou G6:L6) toujours sans utiliser les cellules.
merci par avance pour toutes vos suggestions.
isabelle
Avatar
MichD
2 manières de procéder selon que tu veux utiliser une plage de cellules
comme tableau.
'-----------------------------------------------------
Sub test()
Dim X(), T()
X = Array(0.425, 0.8, 0.66, 4.2146, 0, 0.425)
For a = 0 To UBound(X)
ReDim Preserve T(1 To a + 1)
T(a + 1) = Application.Large(X, a + 1)
Next
ss = Range("A30").Resize(, UBound(T, 1)).Address
Range("A30").Resize(, UBound(T, 1)).Value = T
End Sub
'-----------------------------------------------------
Sub test1()
Dim X(), T()
X = Range("$B$4:$B$9").Value ' Array(0.425, 0.8, 0.66, 4.2146, 0, 0.425)
For a = 1 To UBound(X)
ReDim Preserve T(1 To a + 1)
T(a) = Application.Large(X, a)
Next
ss = Range("A30").Resize(, UBound(T, 1)).Address
Range("A30").Resize(, UBound(T, 1)).Value = T
End Sub
'-----------------------------------------------------
MichD
Avatar
MichD
Avatar
MichD
Si tu préfères l'utilisation d'une formule en vba à partir des données de la
feuille dans la plage B4:B9
Range("A13").Resize(6).Formula = "=LARGE($B$4:$B$9,ROW(1:6))"
MichD
Avatar
isabelle
super! merci beaucoup Denis,
isabelle
Le 2017-10-05 à 06:01, MichD a écrit :
Si tu préfères l'utilisation d'une formule en vba à partir des données de la
feuille dans la plage B4:B9
Range("A13").Resize(6).Formula = "=LARGE($B$4:$B$9,ROW(1:6))"
MichD