Microsoft 365 Liste de cellules avec condition

  • Initiateur de la discussion Initiateur de la discussion Ananke
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Ananke

XLDnaute Nouveau
Bonjour à tous,

Je cherche à générer des listes comme suit :

Résultat souhaité.png



A partir de ce tableau...


Tableau des valeurs.png



J'ai besoin que ces listes soient dynamiques (et ordonnées en faisant apparaître en priorité les résultats de chaque ligne) et je ne sais pas bien comment m'y prendre...

Si quelqu'un a une idée... Je joins mon fichier.

Merci et bonne journée 🙂
 

Pièces jointes

Dernière édition:
Solution
Voici une nouvelle version, sans tableau intermédiaire (voir en bas de la feuille).
La fonction personnalisée est assez courte :
VB:
Public Function Gen_Liste(rngTab As Range, clé As Variant)
    Dim lig As Long, col As Long
    Dim i As Long                 'Indice dans le tableau result
    Dim result() As Variant
    ReDim result(1 To (rngTab.Rows.Count - 1) * (rngTab.Columns.Count - 1))
    For i = 1 To UBound(result): result(i) = "": Next i
    i = 0
    For lig = 2 To rngTab.Rows.Count
        For col = 2 To rngTab.Columns.Count
            If rngTab.Cells(lig, col).Value = clé Then
                i = i + 1
                result(i) = rngTab(1, col) & rngTab(lig, 1)
            End If
        Next col
    Next lig
    Gen_Liste =...
Voici une nouvelle version, sans tableau intermédiaire (voir en bas de la feuille).
La fonction personnalisée est assez courte :
VB:
Public Function Gen_Liste(rngTab As Range, clé As Variant)
    Dim lig As Long, col As Long
    Dim i As Long                 'Indice dans le tableau result
    Dim result() As Variant
    ReDim result(1 To (rngTab.Rows.Count - 1) * (rngTab.Columns.Count - 1))
    For i = 1 To UBound(result): result(i) = "": Next i
    i = 0
    For lig = 2 To rngTab.Rows.Count
        For col = 2 To rngTab.Columns.Count
            If rngTab.Cells(lig, col).Value = clé Then
                i = i + 1
                result(i) = rngTab(1, col) & rngTab(lig, 1)
            End If
        Next col
    Next lig
    Gen_Liste = Application.Transpose(result)
End Function
 

Pièces jointes

Merci Laurent, tes 2 solutions fonctionnent parfaitement.

Je laisse la conversation ouverte le temps de finir de les adapter à mon tableau entier.

As-tu une idée de comment j'aurais pu m'y prendre sans VBA ?

Bonne journée,

Edit : Ca marche nickel tel quel, merci encore
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
680
Retour