Déplacer des lignes dans une feuille [Fermé]

Signaler
Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019
-
Messages postés
8212
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
22 octobre 2020
-
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

Messages postés
8212
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
22 octobre 2020
1 498
Bonjour,

Ne serait-ce pas plus simple avec un tri (short) ?
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019
4
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) ?
Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019
4
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...
Messages postés
8212
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
22 octobre 2020
1 498
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 ...