Déplacer des lignes dans une feuille

roideseaux Messages postés 260 Date d'inscription   Statut Membre Dernière intervention   -  
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Je cherche à déplacer des lignes d'une feuille afin de les classer en fonction du nombre inscrit dans la seconde colonne.
J'ai d’abord essayé de couper la ligne à déplacer pour la coller au bon endroit dans la hiérarchie, mais j'obtiens un message d’erreur (La méthode Range de l'objet à échoué)...
Ensuite (et j'en suis rendu là, mais j'ai toujours le même message), j'ai tenté d'utiliser une mémoire tampon, en inversant les deux lignes (la ligne à déplacer, et du coup, la ligne qu'on ne teste pas).

J'en suis là, voilà le code que j'ai pour le moment (et je fais le test avec des chiffres de 1 à 9) :
Sub Triage()
    Dim Max, Min, NbVisites As Integer
    Max = 120
    Min = 110
    NbVisites = 9
    
    For A = NbVisites To 0 Step -1
        For i = Min To Max
            If Range("B" & i).Value = A Then
                Call DéplaceLigne(i, Min)
                Min = Min + 1
            End If
        Next i
    Next A
End Sub

Sub DéplaceLigne(A, B)
    Range(Cells(A, 1), Cells(A, 2)).Cut
    Range("X6").PasteSpecial _
        Operation:=xlPasteSpecialOperationAdd
    Range(Cells(B, 1), Cells(B, 2)).Cut
    Range(A & "1").PasteSpecial _
        Operation:=xlPasteSpecialOperationAdd
    Range(Cells(6, 24), Cells(6, 25)).Cut
    Range(B & "1").PasteSpecial _
        Operation:=xlPasteSpecialOperationAdd
End Sub


Merci d'avoir pris le temps de me lire et merci à ceux qui prendront le temps de me répondre.

2 réponses

Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour,

Ne serait-ce pas plus simple avec un tri (short) ?
1
roideseaux Messages postés 260 Date d'inscription   Statut Membre Dernière intervention   5
 
Un Range.sort, je ne connaissais pas cette fonction...
Tu sais comment elle fonctionne pour que la case de la colonne A suive celle de la colonne B (qui est celle qui comporte les nombres) ?
0
roideseaux Messages postés 260 Date d'inscription   Statut Membre Dernière intervention   5
 
Ok, je m'auto répond, j'ai trouvé :
Range(Cells(110, 1), Cells(120, 2)).Sort key1:=Range("B120"), Order1:=xlDescending
Pas trop compris à quoi sert le Key1 mais ca fonctionne...
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
key1 désigne le champ qui contient les valeurs à trier en premier, Key2 celui qui contient les valeurs à trier en second, i.e. pour une même valeur de key1, Key3 celui ...
0