Trier par données dans une cellule spécifique

Bonsoir,

J'ai un tableau de plus de 200 lignes et qui ne cesse de s'agrandir, je réfléchis donc à des possibilités de trier tout ça en fonction de mes besoins. J'ai donc fait une case à Liste déroulante, j'aimerai que la valeur de cette case, P11 en l'occurrence, soit triée tout en haut de mon tableau et qu'après celle-ci les autres se rangent par ordre alphabétique, mais voilà, je butte dessus... J'ai tenté plusieurs possibilités de codes, actuellement j'en suis là, mais s'il ne fonctionne pas, je prépare un document sans valeurs importantes pour vous le partager

Sub Choix_Genre()
Dim F As Worksheet: Set F = Sheets("Collection")
With Sheets("Collection").Sort
     .SortFields.Clear
     .SortFields.Add Key:=Range("F3"), Order:=1, CustomOrder:=(Collection!11P)
     .SortFields.Add Key:=Range("G3"), Order:=1
     .SortFields.Add Key:=Range("H3"), Order:=1
     .SetRange F.Range(F.Cells(29, "b"), F.Cells(Rows.Count, "N").End(xlUp))
     .Header = xlYes
     .Apply
End With
End Sub

bonsoir Syra,

comme ceci ?

Sub Choix_Genre()
     Dim i
     With Sheets("Collection")
          .Columns("AA").ClearContents       'vider colonne auxiliaire
          derligne = .Range("F" & Rows.Count).End(xlUp).Row     'dernière ligne
          .Range("F29:F" & derligne).AdvancedFilter xlFilterCopy, , .Range("AA29"), True     'liste unique "Genre"
          i = .Range("AA" & Rows.Count).End(xlUp).Row - 28     'nombre de cellules en AA
          With .Range("AA29").Resize(i)
               .Sort .Range("A1"), xlAscending, Header:=xlYes     'trier "Genre" ascending
          End With
          .Range("AA29").Value = .Range("P11").Value     'remplacer l'entête par genre priviligé
          .Range("AA29").Resize(i).RemoveDuplicates 1, Header:=xlNo     'supprimer doublons
          i = .Range("AA" & Rows.Count).End(xlUp).Row - 28     'nombre de cellules en AA
          Application.AddCustomList .Range("AA29").Resize(i)     'créer un customlist

          With .Range("B29:N" & derligne)    'trier cette plage
               .Sort Header:=xlYes, key1:=.Range("E1"), order1:=xlAscending, Ordercustom:=Application.CustomListCount + 1, key2:=.Range("F1"), key3:=.Range("G1")
          End With
          .Sort.SortFields.Clear             'avoid shut down
          Application.DeleteCustomList Application.CustomListCount     'supprimer dernier customlist
     End With
End Sub

C'est parfait! C'est exactement ça! Merci beaucoup je vais me pencher dessus pour le comprendre et l'appliquer aux deux autres lignes de tris par sélection ! :)

Je me heurte à un nouveau problème, tout se passe plutôt bien jusqu'ici, à part une fois arrivé au tri par santonnier, je sélectionne la donnée par laquelle je veux tirer, quand j'appui sur trier après sélectionner Santonnier5 ou Santonnier6, cela ne fonctionne pas, sur tous les autres choix possibles cela fonctionne... Je sèche un peu là

Je n'arrive pas non plus à faire en sorte que la colonne H soit triée alphabétiquement, une fois le tri par santonnier effectuer, j'ai l'impression qu'il y a un conflit, car pour trier les santonnier j'ai dû également mettre la colonne H en données plutôt que la I, qui est leur emplacement réel

J'en profite pour demander, mais c'est bien possible d'envoyer les colonnes AA, AB et AC sur la page ressources ?

La ligne de code indiquée comme en erreur

          Application.AddCustomList .Range("AC29").Resize(i)     'créer un customlist

Le code complet

Sub Choix_Santonnier()
     Dim i
     With Sheets("Collection")
          .Columns("AC").ClearContents       'vider colonne auxiliaire
          derligne = .Range("I" & Rows.Count).End(xlUp).Row     'dernière ligne
          .Range("I29:I" & derligne).AdvancedFilter xlFilterCopy, , .Range("AC29"), True     'liste unique "Genre"
          i = .Range("AC" & Rows.Count).End(xlUp).Row - 28     'nombre de cellules en AC
          With .Range("AC29").Resize(i)
               .Sort .Range("A1"), xlAscending, Header:=xlYes     'trier "Genre" ascending
          End With
          .Range("AC29").Value = .Range("P13").Value     'remplacer l'entête par genre priviligé
          .Range("AC29").Resize(i).RemoveDuplicates 1, Header:=xlNo     'supprimer doublons
          i = .Range("AB" & Rows.Count).End(xlUp).Row - 28     'nombre de cellules en AC
          Application.AddCustomList .Range("AC29").Resize(i)     'créer un customlist

          With .Range("B29:N" & derligne)    'trier cette plage
               .Sort Header:=xlYes, key1:=.Range("H1"), order1:=xlAscending, Ordercustom:=Application.CustomListCount + 1, key2:=.Range("F1"), key3:=.Range("H1")
          End With
          .Sort.SortFields.Clear             'avoid shut down
          Application.DeleteCustomList Application.CustomListCount     'supprimer dernier customlist
          Sheets("Collection").Range("P13") = "Choisir un satonnier"
     End With
End Sub

Et le fichier où j'en suis actuellement

re, 3 choses que j'ai modifié dans "Choix_Genre" et je vois que vous avez assez d'experience pour faire la même chose dans les 2 autres.

1. Je supposais que P11:Q11 était là pour choisir 2 genres priviligés, donc maintenant vous avez 2 options.

2. Quand le "customlist" existe déjà (peut-être il n'était pas bien supprimé la dernière fois), la macro se plantait, maintenant, elle vérifie l'existance avant d'ajouter et au bout de la macro, ne le supprime pas, s'il existait déjà.

3. De temps en temps, vous devez vérifier ces "customlists" et vous les supprimez si nésessaire parce qu'ils sont présent dans Excel et ne pas seulement dans ce fichier, donc vous les verrez aussi dans un autre fichier. Comment faire, vous êtes quelque part dans la feuille et vous commencez un tri comme vous le faites souvent et pour la séquence, au lieu de choisir A-Z ou Z-A, vous choississez la 3ième option ( ??? tri personnalisé ???). Maintenant vous voyez plusieurs listes : mois, jours de semaine, ... et au bout de cette liste vous voyez les plus récents. Supprimez-les si nécessaire. La macro créera un nouveau si nécessaire.

4. si vous utilisez des customlists pour trier, c'est mieux de faire une sorte de reset du triage sur votre feuille avec "Votre_Feuille.Sort.SortFields.Clear" et cela prévient aussi un arrêt d'excel (sorte de bug).

 Votre_Feuille.Sort.SortFields.Clear             'avoid shut down
 If Not b Then Application.DeleteCustomList Application.CustomListCount     'supprimer dernier customlist s'il est nouveau

Merci pour toutes ses lumières,

Cela fonctionne de nouveau en effet, par contre je pense supprimer le tri par double choix, tel quel je n'en vois pas une grande utilité.. Cependant, s'il était possible de faire la même chose en le combinant avec un second tri dans une autre colonne, par exemple Trier par Santonnier et par univers, ce serait nettement plus utile à mon sens!
Mais dans tous les cas, merci de m'avoir montré que c'était possible tel quel!

Par contre, j'insiste sur un autre point, il n'est pas possible de déplacer les colonnes AA, AB et AC dans la Sheet Ressource ?

Merci encore pour toute votre aide !

re,

2 choses en même temps, Les colonnes AA, AB & AC sont déplacées vers O, P & Q de ressources

trier avec 2 customlists, je ne pense pas que c'est possible, donc un contournement avec un clef "custom" dans la colonne A (de A29 à A250), plus tard, vous pouvez modifiez le couleur du fond, pourque ce clef ne soit pas visible. Dans la macro "Choix_Genre_et_Univers_et_Santonnier" on prépare les 3 listes (dans ces colonnes O:Q) et puis on construit une formule en combinant les 3 strings dans l'ordre voulu. Puis on utilise la colonne A pour faire le "custom" triage.

Merci beaucoup pour votre aide !

J'ai fait le choix de revenir en arrière finalement, ça commençait à devenir trop complexe pour moi, je préfère rester sur quelque chose que je maîtrise et que je peux modifier quand bon me semble en fonction de l'évolution du tableau et de nos besoins!

En tout cas merci pour tout vraiment ! :)

re,

le blocage se trouve où ? Le déplacement des colonnes ou ce triage combiné ?

Pas tant un blocage, juste que je me suis demandé si le rapport complexité/besoin valait la peine

J'en ai profité pour tenter d'ajouter une recherche par donnée précise, mais j'avoue ne pas avoir trouver comment faire, pouvez-vous m'aider à nouveau ?

Le but de la recherche est juste de savoir si, en tapant le nom ou la référence d'un produit, il est dans la liste (et donc déjà possédé) ou non. Si c'était possible de faire remonter la ligne en question en haut de tableau de la même façon que vous avez déjà fait pour le tri par sélection ce serait fabuleux

Bonsoir,

A défaut d'avoir réussi à faire ce que je souhaitais, remonter la ligne en plus de faire apparaître dans une case si le santon ou la référence recherchée était possédée ou non

J'ai réussi à faire quelque chose qui me convient, finalement j'ai fais la même chose que jusqu'à maintenant, je fais remonter la ligne en haut de tableau, cependant, est-il possible en plus de cela de faire en sorte que les couleurs de cellules soient changées lorsque les lignes sont remontées ?

Je suppose qu'il faudra faire la même chose en réinitialisant la couleur pour pouvoir ranger la ligne à sa place lorsqu'on déclenchera la macro qui réinitialiser la recherche

Voici le excel d'où j'en suis actuellement

je ne vois pas des couleurs sauf ces 2 MFCs, donc vous utilisez quelle macro et vous voulez faire quoi ?

Rechercher des sujets similaires à "trier donnees specifique"