Un tri un peu particulier

Bonjour à tous,

Dans l’impossibilité de résoudre mon problème, je me permets de vous le soumettre.

Dans ma feuille "Oiseaux Elevage", j’ai des données de plusieurs lignes variables sur 7 colonnes.

Les cellules qui vont nous permettre de faire ce tri spécial se trouvent dans les colonnes "G" et "A".

La 1ere chose à faire, est de trier notre tableau sur la colonne "G" dans un ordre croissant, pour cela, j’ai trouvé une ligne de code qui fonctionne bien et qui me donne le tri souhaité.

Pour plus de visibilité, j’ai coloré avec la même couleur les lignes qui ont la même valeur en colonne "G", ce qui a pour conséquence lorsque le tri est fait, de placer les lignes qui ont la même valeur en colonne "G" les unes en dessous des autres.

C’est à partir de maintenant et lorsque ce premier tri est fait que je demande votre aide, à savoir, retrier toutes les lignes comme suit :

Juste pour votre information, comme le premier tri est déjà fait, on se retrouve avec les données du Range ("A2:G" & dernière ligne) triées sur la colonne "G" avec des valeurs on ordre croissant de 1 à 21, la valeur 21 est la valeur maximale en colonne "G".

  • Ce que je souhaite faire à ce stade et c’est là où je demande votre in Résultat Final souhaité tervention, c’est de refaire un nouveau tri qui va se faire au niveau de la colonne "A", je m’explique :

Lorsque nous avons deux cellules de la colonne "G" qui sont identiques, alors, on va refaire un autre tri sur les cellules de la colonne "A" de manière à mettre la ligne de la cellule de la colonne "A" qui se termine par "M" à la première position et mettre en dessous la ligne de la cellule de la colonne "A" qui se terminent par "F" en 2e position.

  • Lorsqu’on se retrouve devant un cas où nous n’avons pas deux lignes avec la même valeur en colonne "G", dans ce cas, on passe aux lignes suivantes, ce cas se présente aux lignes de la colonne "G" qui ont les valeurs suivantes : 6, 18, 19, 20 et 21.

Sauf erreur de ma part, vous trouverez le résultat souhaité dans la feuille "Résultat Final souhaité".

Je reste à votre disposition pour d’autres informations au besoin.

Je vous remercie d’avance de vos contributions.

Salutations à tous.

Bonsoir à tous !

VBA est un horizon indépassable ?

Si tel n'est pas le cas, Power Query peut aisément s'acquitter de cette mission avec un code succinct et robuste :

= Table.Sort(Source,{{"Cage",0},{each Text.AfterDelimiter ([Jeune]," "),1}})

Source étant ici le tableau structuré chargé dans Power Query.

Bonjour

De façon générale il existe dans Excel le tri multicritères, donc il suffit de l'utiliser...

image

Bonsoir à tous de nouveau !

@78chris : Hello !

De façon générale il existe dans Excel le tri multicritères, donc il suffit de l'utiliser...

Sauf erreur de ma part, ce type d'approche ne peut faire, directement, le tri sur le sexe de l'oiseau.

RE

@78chris : Hello !

De façon générale il existe dans Excel le tri multicritères, donc il suffit de l'utiliser...

Sauf erreur de ma part, ce type d'approche ne peut faire, directement, le tri sur le sexe de l'oiseau.

Effectivement j'avais loupé ce détail.

Il n'est jamais conseillé d'inclure n informations dans une même colonne... mais dans ce cas ta solution PQ est effectivement la plus adaptée

Bonjour JFL et 78chris,

Merci pour vos retours respectifs.

Je réponds en premier lieu à JFL en lui disant que je suis content de le retrouver, vu qu’il m’a déjà aidé par le passé.

J’ajouterais que vue mon niveau, je ne sais malheureusement pas utiliser le code en Power Query car je n’ai aucune connaissance en ce langage, d’ailleurs, je vous avoue que je ne sais pas comment m’y prendre.

Pouvez-vous SVP me proposer une solution en vba.

Je réponds maintenant à 78chris en lui disant que je connais le tri selon l’image indiqué, seulement, le tri que je demande est particulier, puisque je dois faire le tri selon le dernier caractère des cellules de la colonne "A" lorsque les deux cellules en colonne "G" sont identiques.

Pouvez-vous SVP mettre en application le tri multicritères selon ma demande sur le dernier caractère des cellules de la colonne "A".

Merci encore pour vous retours et à vous lire.

Salutations.

Bonjour JFL,

En effet, le "M" à la fin de chaque cellule des colonnes "A" et "B" veux dire qu’il s’agit d’un mâle.

De même le "F" à la fin de chaque cellule des colonnes "A" et "C" veux dire qu’il s’agit d’une femelle.

Merci pour la bonne remarque que j’ai oublié de préciser.

Bien à vous.

bonjour Harzer, salut 78Chris, JFL,

un essai

Sub Triage()
     Dim dl    As Long, c As Range
     dl = Cells(Rows.Count, 1).End(xlUp).Row
     Set c = Sheets("Oiseaux Elevage").Range("A2:G" & dl)
     c.Cells(1).EntireColumn.Insert
     c.Columns(1).Offset(, -1).FormulaR1C1 = "=--(right(RC[1],1)=""F"")& RC[1]"
     c.Offset(, -1).Resize(, c.Columns.Count + 1).Sort c.Cells(1, "G"), xlAscending, c.Cells(1, 0), , xlAscending, Header:=xlNo
     c.Cells(1).EntireColumn.Offset(, -1).Delete
End Sub

RE à tous

A ta place je ne m'enquiquinerais pas à du VBA que tu ne maîtrises pas

J'ajouterais une colonne pour avoir un critère unique de tri d'un clic

image

Utiliser un tableau structuré (existe depuis 23 ans dans Excel, pas par hasard...)

Bonjour 78Chris, JFL et BsAlv,

Merci à 78Chris pour son retour et sa nouvelle proposition.

En effet votre proposition fonctionne bien et me donne le bon résultat, merci encore.

Merci aussi à BsAlv (que je suis très content de retrouver) pour ta proposition, cette dernière fonctionne très bien et me donne le bon résultat, en plus, l’idée d’insérer une ligne en colonne "A" pour faire le tri et la supprimer lorsque le tri est fait me plaît très bien..

Merci à tous les deux pour vos bonnes propositions.

Salutations à vous trois.

Rechercher des sujets similaires à "tri peu particulier"