Microsoft 365 Classement par ordre d'arrivée

Etienne G

XLDnaute Nouveau
Bonjour à vous,
Cela fait bien longtemps que je ne m'étais pas tourné vers ce forum et j'espère qu'une personne arrivera à me dépatouiller de ce sujet qui me semblait si simple...

Je vais avoir un ensemble de colonnes avec à l'intérieur des catégories. Je veux créer une liste déroulante pour choisir la désignation qui m'intéresse. Et je souhaite que mes désignations se range dans une phrase ; mais, je veux que cette phrase se construisent dans l'ordre dans laquelle j'aurais fait mes choix, et non au kilomètre de la gauche vers la droite.

Je souhaite pouvoir garder cette lecture en colonne avec tous les paramètres devant les yeux et car à la fin, ils seront très nombreux et j'aurais besoin de pouvoir tous les voir.

Je ne suis pas du tout un utilisateur EXPERT d'Excel et j'aimerais éviter le VBA, sauf en cas de copier coller simple 😅

Mon épouse qui n'est pas mauvaise en Excel s'est gratté la tête, j'espère que ce ne sera pas votre cas 😉
 

Pièces jointes

  • classement par ordre d'arrivée.xlsx
    678.4 KB · Affichages: 1

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Si le problème est que le nombre de colonnes est conséquent, alors peut être une fonction perso.
Le nombre de colonne est sans importance.
VB:
Function Phrase(x)
Application.Volatile
Dim DC%, i%, j%, Buffer, T
DC = Cells(8, Columns.Count).End(xlToLeft).Column                               ' Dernère colonne utilisée en lig 7
T = Range(Cells(6, 2), Cells(7, DC))                                            ' Lignes 6 et 7 dans tableau T
For i = 1 To UBound(T, 2)                                                       ' Tri croissant sur ligne 6
    For j = i To UBound(T, 2)
        If T(1, i) > T(1, j) Then
            Buffer = T(1, i): T(1, i) = T(1, j): T(1, j) = Buffer
            Buffer = T(2, i): T(2, i) = T(2, j): T(2, j) = Buffer
        End If
    Next j
Next i
For i = 1 To UBound(T, 2)                                                       ' Concaténation des paramètres
    If T(1, i) <> "" Then Phrase = Phrase & T(2, i) & ", "
Next i
If Phrase <> "" Then Phrase = Mid(Phrase, 1, Len(Phrase) - 2) Else Phrase = ""  ' Suppression du "," final
End Function
La syntaxe de la focntion est : "phrase(0) ( implémentée dans la PJ en B3 )
 

Pièces jointes

  • classement par ordre d'arrivée (1).xlsm
    684.4 KB · Affichages: 1

Etienne G

XLDnaute Nouveau
Re, je viens de balayer vos deux solutions qui ne sont hélas, pas celle attendue - mais je vous remercie déjà vivement d'avoir pris du temps. Les deux impliques que je déclare l'ordre chiffré manuellement.
Je n'ai peut-être pas été assé explicatif dans ma recherche de solution. Je vous joins le fichier avec quelques explications supplémentaires, si vous avez encore envie 😉
 

DJunqueira

XLDnaute Occasionnel
Merci, merci Etienne, 👍 je suis très heureux de t'aider dans ton projet, j'espère que tu le mèneras jusqu'au bout. Bonne chance.

LET est très simple, c'est une fonction qui permet de créer des variables qui permettent de simplifier la formule afin que vous n'ayez pas besoin de refaire le calcul pour arriver au même résultat. 't' n'est qu'une variable, il peut s'agir de n'importe quel groupe de lettres.
 

Discussions similaires

Réponses
52
Affichages
5 K
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 210
Messages
2 086 281
Membres
103 170
dernier inscrit
HASSEN@45