Déplacer des lignes dans une feuille

Fermé
roideseaux Messages postés 261 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 16 février 2023 - Modifié le 4 juil. 2018 à 19:19
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 4 juil. 2018 à 22:33
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.

A voir également:

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
4 juil. 2018 à 21:15
Bonjour,

Ne serait-ce pas plus simple avec un tri (short) ?
1
roideseaux Messages postés 261 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 16 février 2023 5
4 juil. 2018 à 21:25
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 261 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 16 février 2023 5
4 juil. 2018 à 21:42
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
4 juil. 2018 à 22:33
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