XL 2013 vba ordre grandeur variable

oceanex

XLDnaute Nouveau
Bonjour à tous

j'aurais besoin d'un petit coup de main pour démarrer un code.

j'ai un utilisateurs qui a des données dans différente colonne. au départ elle me dit, peux tu me donnée la valeur la plus petite et me dire le fournisseur et me dire la valeur

j'ai fait ceci et sa marche super bien.

Code:
 four1 = Round(Range("h" & x).Value, 2)
 four2 = Round(Range("l" & x).Value, 2)
 four3 = Round(Range("p" & x).Value, 2)
 four4 = Round(Range("x" & x).Value, 2)
 four5 = Round(Range("ab" & x).Value, 2)

min = Application.WorksheetFunction.min(four1, four2, four3, four4, four5)

Select Case min
   
        Case four1
               Range("AC" & x) = Range("f7")
       Case four2
             Range("AC" & x) = Range("i7")
       Case four3
            Range("AC" & x).Value = Range("n7")
       Case four4
            Range("AC" & x).Value = Range("u7").Value
        Case four5
            Range("AC" & x).Value = Range("y7").Value
End Select

 Range("AD" & x).Value = min

elle me revient et me dit, pourrais tu me donne la deuxième valeur la plus basse dans la colonne suivante, la troisième et ainsi de suite.

avec la fonction min est ce qu'il y a moyen de pouvoir dire la deuxième valeur la plus petite ?
J'ai pensé a copier, faire un tri, mais se sera pas efficace au niveau du code...

avez vous une suggestion ?
un gros merci
 

laurent950

XLDnaute Accro
Bonsoir

VB:
Sub test()

 Dim Tabfour() As Variant
 ReDim Tabfour(1 To 1, 1 To 5)

 'four1 = Round(Range("h" & x).Value, 2)
 Tabfour(1, 1) = Round(Range("h" & x).Value, 2).Value
 'four2 = Round(Range("l" & x).Value, 2)
 Tabfour(1, 2) = Round(Range("l" & x).Value, 2).Value
 'four3 = Round(Range("p" & x).Value, 2)
 Tabfour(1, 3) = Round(Range("p" & x).Value, 2).Value
 'four4 = Round(Range("x" & x).Value, 2)
 Tabfour(1, 4) = Round(Range("x" & x).Value, 2).Value
 'four5 = Round(Range("ab" & x).Value, 2)
 Tabfour(1, 5) = Round(Range("ab" & x).Value, 2).Value

'Min = Application.WorksheetFunction.Min(four1, four2, four3, four4, four5)

' tri
Call tri(Tabfour, 1, n)

'Select Case Min
'
'        Case four1
'               Range("AC" & x) = Range("f7")
'       Case four2
'             Range("AC" & x) = Range("i7")
'       Case four3
'            Range("AC" & x).Value = Range("n7")
'       Case four4
'            Range("AC" & x).Value = Range("u7").Value
'        Case four5
'            Range("AC" & x).Value = Range("y7").Value
'End Select
'
' Range("AD" & x).Value = Min

' Remplissage
Range("AC" & x) = Tabfour(1, 1)
Range("AC" & x) = Tabfour(1, 2)
Range("AC" & x) = Tabfour(1, 3)
Range("AC" & x) = Tabfour(1, 4)
Range("AC" & x) = Tabfour(1, 5)

End Sub

Sub tri(a() As Integer, gauc, droi) ' Quick sort
 ref = a((gauc + droi) \ 2)
  g = gauc: d = droi
  Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      g = g + 1: d = d - 1
    End If
  Loop While g <= d
  If g < droi Then Call tri(a, g, droi)
  If gauc < d Then Call tri(a, gauc, d)
End Sub
 

Discussions similaires

Réponses
0
Affichages
155
Réponses
7
Affichages
547

Statistiques des forums

Discussions
312 302
Messages
2 087 039
Membres
103 439
dernier inscrit
julienpipiou