Ranger dans catégories

Bonjour,

J'ai crée un excel avec userform qui me permet de remplir un tableau automatiquement, mais je n'arrive pas a ranger ces valeurs dans les catégories choisit.

Pourriez-vous m'orienter sur la façon de le faire.

Cordialement

10classeur1.xlsm (21.89 Ko)

Bonjour

Ce n'est pas une bonne méthode de prédéfinir un tableau, qui plus est avec des cellules fusionnées.

La meilleure approche est de travailler en mode liste de données : indiquer la catégorie sur chaque ligne, (quitte à masquer la répétition via une MFC) ajouter toute nouvelle saisie à la fin et trier si nécessaire.

Sinon tu feras comment quand tu n'auras plus de lignes dans une catégorie initialement dimensionnée à 9 lignes ?

En plus avec des cellules fusionnées on ne peut trier, filtrer, exploiter correctement... les données.

En plus je te conseille de travailler en mode tableau (mettre sous forme de tableau) et non en plage...

Bonjour,

Merci pour ta réponse.

Existe t-il un code en vba pour trier automatiquement en fonction de la categorie ?

Cordialement

10classeur1.xlsm (21.92 Ko)

Re

Si on laisse en plage

    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
    With ActiveWorkbook.Worksheets("Feuil1").Sort
        .SortFields.Add Key:=Range("A:A"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("B:B"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("A1:D30")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .Apply
    End With

Si on met sous forme de tableau (ce qui simplifie notamment l'ajout de ligne et la duplication automatique des formats, validations et formules)

    With ActiveWorkbook.Worksheets("Feuil1").ListObjects("Tableau1").Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("Tableau1[Catégorie]"), SortOn:=xlSortOnValues, _
        Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("Tableau1[objet]"), SortOn:=xlSortOnValues, _
        Order:=xlAscending, DataOption:=xlSortNormal
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .Apply
    End With

En adaptant le nom du tableau qu'il est préférable de nommer clairement

Bonjour,

Après plusieurs essayes, je n'arrive pas a regroupé en fonction des catégories avec le code tu as donné.

Bonjour

Trier et regrouper sont 2 notions différentes...

"je n'arrive pas a regroupé en fonction des catégories avec le code tu as donné" ne dit pas si tu as une message d'erreur ou le problème que tu rencontres.

On veut bien t'aider mais il faut un minimum d'effort de ta part pour expliciter ton PB...

Si tu as laissé tes données sous forme de plage tu peux remplacer

        .SetRange Range("A1:D30")

qui limitait à 30 lignes, par

        .SetRange Range("A:D")

Le code pour tableau que j'ai donné fonctionne quel que soit le nombre de ligne sous réserve d'avoir mis les données sous forme de tableau et adapté le nom du tableau...

Rechercher des sujets similaires à "ranger categories"