Bonjour,
Tulipe5 ayant formulé sa réponse, une autre proposition en formule serait inutile !
Après m'"être cassé la tête"... je proposerai donc une fonction personnalisée :
Function CLASSERPTTENUES(pt As Range, nv As Range)
Dim temp(), tft(1 To 2), i%, j%
Application.Volatile
ReDim temp(1 To pt.Cells.Count, 1 To 2)
For i = 1 To pt.Cells.Count
temp(i, 1) = pt(i)
temp(i, 2) = nv(i)
Next i
For i = 1 To UBound(temp, 1) - 1
For j = i + 1 To UBound(temp, 1)
If temp(j, 2) < temp(i, 2) Then
tft(1) = temp(j, 1): tft(2) = temp(j, 2)
temp(j, 1) = temp(i, 1): temp(j, 2) = temp(i, 2)
temp(i, 1) = tft(1): temp(i, 2) = tft(2)
End If
Next j
Next i
CLASSERPTTENUES = temp
End Function
Fonction matricielle (à valider par Ctrl+Maj+Entrée)
Comment l'utiliser : on copie la fonction, on ouvre l'éditeur VBA (Alt+F11), on insère un module standard (Insertion > Module) et on y colle la fonction. On ferme l'éditeur.
On sélectionne une plage de cellules de 28 lignes sur 2 colonnes ; on tape la formule, soit =, le nom de la fonction, parenthèse ouvrante, la plage de positions de travail en 1er argument, un point-virgule, la plage de nombres de vacations en 2e argument, parenthèse fermante, soit sur le modèle :
=CLASSERPTTENUES(A1:AB1;A3:AB3)
On valide par la combinaison de touches : Ctrl+Maj+Entrée, et la liste des PT avec en regard le nombre de vacations s'affiche, triée en ordre croissant.
La fonction se recalcule en cas de modification des valeurs sources.
J'ai cru comprendre que tu voulais l'avoir en vertical (tirer du haut vers le bas), mais si tu la veux dans l'autre sens, on peut l'y mettre, et on devrait pouvoir aussi la faire fonctionner dans les 2 sens, selon sélection faite au départ. (Dans l'état actuel, elle n'affiche qu'en vertical).
Cordialement.