bonjour Aphrodite, salut Arturo83, Doux Reveur,
Sub Aphrodite()
Dim c, dMax, s, Arr, i
Dim Inputfilename: Inputfilename = "trial.xlsm"
Dim Outputsheetname: Outputsheetname = "feuil1"
With Workbooks(Inputfilename).Sheets(Outputsheetname) 'cette feuille dans ce fichier
Set c = .Range("B1:B" & .Range("B" & Rows.Count).End(xlUp).Row) 'plage "VSO"
dMax = Application.Max(c) 'la valeur max de cette plage
Arr = c.Offset(, -1).Resize(, 2).Value2 'matrice avec les valeurs des colonnes UAI et VSO
End With
For i = 2 To UBound(Arr) 'boucler les données
If Arr(i, 2) = dMax Then s = s & vbLf & Arr(i, 1) 'VSO est valeur max,alors ajouter UAI às avec vblf comme séparateur
Next
If Len(s) > 0 Then 'on a trouvé des valeurs max
sp = Split(Mid(s, 2), vbLf) 'séprarer le résultat dans une matrice sp
MsgBox Mid(s, 2) 'msgbox avec le résultat
Else
MsgBox "vide"
End If
End Sub
ou avec un dictionaire au lieu d'un string comme Arturo83 l'a fait
Sub Aphrodite()
Dim c, dMax, s, Arr, i
Dim Inputfilename: Inputfilename = "trial.xlsm"
Dim Outputsheetname: Outputsheetname = "feuil1"
Dim Dict: Set Dict = CreateObject("scripting.dictionary"): Dict.comparemode = vbTextCompare
With Workbooks(Inputfilename).Sheets(Outputsheetname) 'cette feuille dans ce fichier
Set c = .Range("B1:B" & .Range("B" & Rows.Count).End(xlUp).Row) 'plage "VSO"
dMax = Application.Max(c) 'la valeur max de cette plage
Arr = c.Offset(, -1).Resize(, 2).Value2 'matrice avec les valeurs des colonnes UAI et VSO
End With
For i = 2 To UBound(Arr) 'boucler les données
If Arr(i, 2) = dMax Then Dict(Arr(i, 1)) = vbEmpty 'VSO est valeur max,alors ajouter au dictionaire
Next
If Dict.Count > 0 Then 'on a trouvé des valeurs max
MsgBox Join(Dict.keys, vbLf) 'msgbox avec le résultat
Else
MsgBox "vide"
End If
End Sub