Afficher trie sans modification cellules

Bonjour,

Me voilà bien embêté par un problème, mais dont je ne trouve pas la solution.

J'ai un tableau avec des nom est des couleurs associés dans des colonnes a ces nom.

Les noms ne sont pas dans l'ordre alphabétique donc j'ai une petite macro pour les trier :

Sub sortRange()
    With ActiveSheet.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("A5"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("A5:H10")
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

En cliquant dessus tout fonctionne bien.

Les couleurs on bien bougée et les noms sont dans le bon ordre.

Cependant, si on prend par exemple Richard qui était en "A6", il est maintenant en "A9", c'est là tout mon problème.

Peut-on faire une sorte de trie qui de façon visuelle fonctionne, mais ne bouge pas les cellules ?

Peut-on par exemple afficher la ligne "5" avant la "4" ?

J'espère avoir été clair, je cherche, j'essaie avec différente astuce, mais là je suis à court d'idée.

Merci

5excel-exemple.xlsm (18.92 Ko)

Bonjour

Une proposition : au premier clic tu tries et au second clic tu reviens au tableau d'origine.

Cela te convient-il ?

Bye !

Merci de ta réponse, mais cela n'irait pas par rapport à mon projet global.

En fait j'ai ce tableau sur 12 pages correspondant chacune à un mois de l'année, un utilisateur est donc sur la même cellule sur toutes les feuilles, cela me permet en modifiant 1 utilisateur sur une feuille de le répercuter sur les autres sans devoir faire une recherche de cellules (optimisation).

J'ai vraiment alléger le tableau pour l'exemple, mais normalement celui-ci est beaucoup plus gros et il y a une colonne devant les utilisateurs qui correspondent à leurs groupes, je trie les groupes par rapport à leur niveau puis-je trie par ordres alphabétique les utilisateurs dans leurs groupes.

Le problème c'est qu'un utilisateur peut changer de groupe au cours de l'année et si j'applique le trie j'ai un utilisateur en "B15" pendant 3 mois, puis en "B20" les 9 mois restants. Et après si je modifie par exemple le nom de l'utilisateurs avec ma fonction forcément il y a un problème e tje ne veux pas faire une recherche sur chaque feuille de l'utilisateur.

J'ai vraiment essayé de simplifier mon problème au maximum.

Bonjour,

un tri est un tri. Si tu bouges une ligne ce n'est plus trié.

C'est plutôt du coté de la mise à jour des noms qu'il faut agir.

Tu mémorises l'ancien et tu le recherches sur chaque feuille pour le mettre à jour.

Ex à mettre dans This workboook :

Dim ancien As Variant

Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
    Dim c As Range
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [A2:A20]) Is Nothing Then
        ' modifier les 12 feuilles
        For Each sh In Worksheets
            Set c = sh.Columns(1).Find(ancien, , xlValues, xlWhole)
            Application.EnableEvents = False
            If Not c Is Nothing Then c.Value = Target.Value
            Application.EnableEvents = True
        Next sh
    End If
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal sh As Object, ByVal Target As Range)
    ancien = Target.Value
End Sub

J'ai fait au minimum, il y a sans doutes des contrôles à ajouter (feuilles concernées etc)

eric

C'est déjà une des solutions que j'avais envisagé, mais je sais déjà que je vais avoir des utilisateurs avec le même nom et même groupe c'est pour ça que je me basais sur les coordonnées de la cellule qui est identique a chaque feuille. Sinon il faudrait que je rajoute une colonne de type ID qui serait une sorte de clé primaire pour différencier les utilisateurs, mais cela me forcerais à changer toute l'architecture de mon fichier et sachant que j'ai presque finis après plusieurs semaines de travailles...

Mais bon, là j'ai une idée qui m'a traversé l'esprit, je me lance dans le code et vous tiens au courant !

C'est la seule solution un identifiant unique.

C'est indispensable pour toute bdd correcte.

A moins de tenir à jour une table des positions de tous les noms sur chaque feuille. Ca serait se compliquer la vie

message doublonné que je supprime

voir ci-dessous

bonjour

salut eriiic au passage

ne pas faire 12 feuilles ! c'est une imitation des feuilles de papier. Excel c'est de l'informatique

tout mettre sur une unique feuille

ne pas en changer en fin d'année

durera 10 ou 20 ans !

tout sera plus simple

y compris les traitements dont tu parles ici car ça diminuera la quantité de code VBA et tu trouveras d'autres avantages

note : j'espère que les couleurs sont obtenues par MFC et non par mise en couleur au clavier/souris ????????

message triplonné que je supprime

le Chiroubles de midi était Excel-lent

Rechercher des sujets similaires à "afficher trie modification"