Tri croissant de valeurs

Bonjour à tous,

après d'infructueuses heures de recherches sur le net, je n'arrive toujours pas à me dépatouiller de mon problème.

Le problème étant le suivant :

Je cherche une valeur minimale sur une ligne de 4 colonnes n fois.

Lorsque je l'ai trouvée, je demande avec la fonction find de me donner les coordonnées.

Pour voir si mon code marchait, j'ai mis une MsgBox.

Jusque là, pas de soucis, maintenant le problème est que je souhaite récupérer les coordonnées de la cellule contenant la valeur minimale pour pouvoir effacer cette valeur et enfin passer à la suivante.

Sub triHC()
Dim lig, col, Loc, Pos
Range(Cells(5, 8), Cells(8, 11)).ClearContents
For lig = 5 To 8
    For col = 8 To 11
        Cells(lig, col).value = Application.Min(Range(Cells(lig, 18), Cells(lig, 21)))

            Set Plage = Range(Cells(lig, 18), Cells(lig, 21))
            Set Loc = Plage.Find(Application.WorksheetFunction.Min(Plage), LookIn:=xlValues, lookat:=xlWhole)

        Next col
Next lig
End Sub

J'espère avoir été clair, et que vous pourriez m'aider, ce serait tip top !

Merci d'avance.

[EDIT] : j'ai fais un peu plus bourrin mais ça fonctionne

J'ai tout simplement mis des if à la place, c'est moins glorieux mais ça passe...

Sub triHC()
Dim lig, col, Loc 
'Variables
Range(Cells(5, 8), Cells(8, 11)).ClearContents 
'Suppressions des valeurs du précédent tri
For lig = 5 To 8
 'Déclaration boucle ligne
    For col = 8 To 11 
'Déclaration boucle colonne
    Cells(lig, col).value = Application.Min(Range(Cells(lig, 18), Cells(lig, 21)))
'Attribution des valeurs à cahque cellule
            If Cells(lig, 18) = Application.Min(Range(Cells(lig, 18), Cells(lig, 21))) Then 
'SI val min sur ligne,"R" effacer valeur sur cellule
            Cells(lig, 18).ClearContents
                ElseIf Cells(lig, 19) = Application.Min(Range(Cells(lig, 18), Cells(lig, 21))) Then 
'Sinon si val min sur ligne, "S", effacer valeur sur cellule
                Cells(lig, 19).ClearContents
                    ElseIf Cells(lig, 20) = Application.Min(Range(Cells(lig, 18), Cells(lig, 21))) Then 
'Sinon si val min sur ligne, "T", effacer valeur sur cellule
                    Cells(lig, 20).ClearContents
            Else: Cells(lig, 21).ClearContents 
'Sinon effacer Valeur min sur lig, "U"
End If 
'Fin du if
Next col
'Col = Col+1
Next lig 
'Lig = Lig+1
End Sub
7tp-n-2.xlsm (39.49 Ko)

Bonsoir et bienvenu(e)

Je ne comprends pas trop ce que tu cherches

Tu n'as aucune page dans ton classeur avec des données en R5:U8

Mais pour revenir à ton problème Loc contient les coordonnées

Pour effacer tu peux faire Loc.ClearContents

Ou Cells(Loc.Row, Loc.Column).ClearContents

Banzai64 a écrit :

Bonsoir et bienvenu(e)

Je ne comprends pas trop ce que tu cherches

Tu n'as aucune page dans ton classeur avec des données en R5:U8

Mais pour revenir à ton problème Loc contient les coordonnées

Pour effacer tu peux faire Loc.ClearContents

Ou Cells(Loc.Row, Loc.Column).ClearContents

Salut Banzai64, je te remercie, et bien le bonsoir, en cette heure tardive.

En fait si tu veux, je récupérais des coordonnées pour pouvoir m'en resservir juste après afin de supprimer les données contenues dans la cellule où je récupérais des coordonnées.

En fait je n'ai pas donné suffisamment de détails et je m'en excuse, étant nouveau je patoge dans la semoule !

Il fallait regarder sur feuill 4 ainsi que sur module 3 pour voir ce pour quoi j'écrivais.

J'ai réussi ce que je voulais faire d'une autre manière, mais merci pour ton aide apportée.

J'y ai apporté ma solution en éditant mon premier message.

Très bonne soirée à toi et bonne semaine.

Rechercher des sujets similaires à "tri croissant valeurs"