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
-
Patrice33740
Messages postés
7909
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
19 janvier 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
7909
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
19 janvier 2020
1266
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 80980 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
3
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) ?
roideseaux
Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019
3
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...
Patrice33740
Messages postés
7909
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
19 janvier 2020
1266
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 ...