Lister les données par ordre alphabétique

Bonjour,

ce tableau me permet d'afficher une même couleur aux cellules identiques et j'aurais aimé aussi une macro qui liste les données différentes (par ordre alphabétique) en N2 et place à côté, en N3, le nom des colonnes ou cette référence est présente (j'ai mis un exemple dans le classeur) car a expliquer je me rends compte que ce n'est pas facile :D

PS : Les données sont amenées à augmenter donc il ne faut pas restreindre le code à la ligne 11

Merci

15couleur.xlsm (17.09 Ko)

Bonjour,

Ci-contre une requête POWER QUERY basée sur une table structurée nommée BDD avec utilisation de la transformation Text.Combine :

let
    Source = Excel.CurrentWorkbook(){[Name="BDD"]}[Content],
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"R1", Int64.Type}, {"R2", Int64.Type}, {"R3", Int64.Type}, {"R4", Int64.Type}, {"R5", Int64.Type}, {"R6", Int64.Type}, {"R7", Int64.Type}, {"R8", Int64.Type}, {"R9", Int64.Type}, {"R10", Int64.Type}, {"R11", Int64.Type}, {"R12", Int64.Type}}),
    #"En-têtes rétrogradés" = Table.DemoteHeaders(#"Type modifié"),
    #"Type modifié1" = Table.TransformColumnTypes(#"En-têtes rétrogradés",{{"Column1", type any}, {"Column2", type any}, {"Column3", type any}, {"Column4", type any}, {"Column5", type any}, {"Column6", type any}, {"Column7", type any}, {"Column8", type any}, {"Column9", type any}, {"Column10", type any}, {"Column11", type any}, {"Column12", type any}}),
    #"Table transposée" = Table.Transpose(#"Type modifié1"),
    #"Supprimer le tableau croisé dynamique des autres colonnes" = Table.UnpivotOtherColumns(#"Table transposée", {"Column1"}, "Attribut", "Valeur"),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Supprimer le tableau croisé dynamique des autres colonnes",{"Attribut"}),
    #"Lignes groupées" = Table.Group(#"Colonnes supprimées", {"Valeur"}, {{"Résultat", each Text.Combine([Column1],"-"), type text}}),
    #"Colonnes renommées" = Table.RenameColumns(#"Lignes groupées",{{"Valeur", "Data"}})
in
    #"Colonnes renommées"

Cf fichier joint.

Pour actualiser > Cliquez droit sur une des cellules de la table verte > Actualiser

Pour voir les étapes de la requête > Cliquez gauche sur une des cellules de la table verte > Requête > Modifier > Vous arrivez dans l'éditeur POWER QUERY et avez l'ensemble des étapes réalisées sur la droite.

Cdlt,

7couleur.xlsm (23.98 Ko)

Bonjour,

@Ergotamine,

let
    Source = Excel.CurrentWorkbook(){[Name="BDD"]}[Content],
    DemotedHeaders = Table.DemoteHeaders(Source),
    TransposedTable = Table.Transpose(DemotedHeaders),
    UnpivotedColumns = Table.UnpivotOtherColumns(TransposedTable, {"Column1"}, "Attribut", "Data"),
    GroupedRows = Table.Group(UnpivotedColumns, {"Data"}, {{"Résultat", each Text.Combine([Column1],", "), type text}})
in
    GroupedRows

Bonne soirée.

Cdllt.

Bonjour Jean-Eric,

L'idée est là dans mon code ... Mais l'optimisation beaucoup moins .. Tu penses que ça peut jouer beaucoup sur la vitesse d’exécution ? Notamment le typage des données qui est systématiquement réalisé mais que je j'oublie de supprimer à chaque fois ...

Merci pour ton retour.

Cdlt,

Re,

J'ai modifié depuis longtemps le typage auto. 78chris de même si je ne me trompe pas.

On type si besoin.

Cdlt.

capture d ecran 2021 07 13 194354

Bonsoir !

Si les doublons doivent être éliminés :

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    ET_rétrogradés = Table.DemoteHeaders(Source),
    TableTransposée = Table.Transpose(ET_rétrogradés),
    Supp_TCD = Table.UnpivotOtherColumns(TableTransposée, {"Column1"}, "Attribut", "Data"),
    Supp_Doublons = Table.Distinct(Supp_TCD, {"Column1", "Data"}),
    Lig_groupées = Table.Group(Supp_Doublons, {"Data"}, {{"Résultat", each Text.Combine([Column1],"-"), type text}})
in
    Lig_groupées

@Jean-Eric : Bonne note est prise de l'option concernant le typage auto ! Je m'évertuais systématiquement à supprimer l'étape !

Salut Akhlan,
Salut les as,

très humblement en VBA...


A+

9akhlan.xlsm (26.04 Ko)

Bonjour à tous

@Ergotamine .. tu m'as devancé hier alors que je regardais justement la solution depuis le code d'Akhlan. Mais génial via Power Query et d'autant que optimisé par Jean Eric et JFL

Pour Akhlan, si j'ai bien capté je pense que vous vouliez que les références (Rx) s'inscrivent automatiquement dans la colonne O en fonction du click sur un chiffre.
Code à essayer peut être :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer, j As Long, lig As Long, nL As Long
Dim nC As Integer
Dim K As Boolean

nL = UsedRange.Rows(UsedRange.Rows.Count).Row
nC = UsedRange.Columns(UsedRange.Columns.Count).Column

' On retire toutes les couleurs de la plage
If Target.CountLarge > 1 Then Exit Sub

Application.ScreenUpdating = False
For i = 1 To nC
    For j = 2 To nL
        Cells(j, i).Interior.ColorIndex = 0
    Next j
Next i
On Error Resume Next
If Not Intersect(Target, Range(Cells(2, 1), Cells(nL, 14))) Is Nothing Then
    lig = Range("N2:N" & nL).Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole).Row
    If lig = 0 Then MsgBox "la valeur " & Target.Value & " n'existe pas en colonne N !": Exit Sub
    Range("O" & lig).ClearContents
    ' On Colorise les cellules
    For i = 1 To nC
        For j = 2 To nL
            If Cells(j, i).Value <> "" Then
                If Cells(j, i) = Target.Value Then
                    Cells(j, i).Interior.Color = RGB(255, 255, 0)
                    If Cells(1, i) <> "Data" And K = 0 Then Cells(lig, 15) = Cells(lig, 15) & "-" & Cells(1, i): K = 1
                End If
            End If
        Next j
        K = 0
    Next i
End If
Application.ScreenUpdating = True
End Sub

Akhlan, si vous testez cette solution (bie n que Power Query semble idéal !), supprimez d'abord les infos en colonne O puis lancer le code.

Crdlt

Merci à tout le monde ;)

J'ai pris la version JFL qui correspond parfaitement à ce que je voulais mais vous m'épatez tous, bravo ;)

Rechercher des sujets similaires à "lister donnees ordre alphabetique"