Tri par comparaison

Bonjour,

Je sollicite de nouveau votre aide,

Je cherche à comparer des cases deux à deux et de passer la ligne contenant la case à la valeur supérieur en dessous de celle qui à la valeur inférieur.

Mon code :
Sub tri()
Dim n As Integer
Dim o As Integer


With Worksheets("Enregistrements interventions")
For n = 5 To 150
    For o = 1 To 150
    If .Range("F" & n).Value > .Range("F" & n + o) Then
    .Rows(n).Cut
    .Rows(n + o).Insert Shift:=xlDown

    End If
    Next
    
    Next
    End With
    
    

End Sub


C'est la ligne "
 .Rows(n + o).Insert Shift:=xlDown
" qui pose problème.

Merci pour votre aide,
DGVDR

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. Au cas où personne ne répond à ton appel, c'est préférable de clôturer ce message et d'en créer un nouveau. Peut-être que "michel_m" le verra et pourra certainement t'aider
    1. Bonjour,

      Merci malgré tout pour ton aide Heliotte,

      Quelqu'un pourrait-il éclairer notre lanterne ?

      DGVDR
      1. Bonjour DGVDR,
        Je ne pourrais pas mieux t'aider, je n'ai que la version 2003 .. désolé
        Tu peux essayer avec l'enregistreur de macro en Excel .. après tu modifies le code à ta façon.
        1. Bonjour DGVDR,
          .Rows(n).Cut coupe la ligne(n)
          .Rows(n + o).Insert Shift:=xlUp insère une ligne à la ligne (n+o), puis colle ce que tu viens de couper
          Quelle est la version d'Excel .. j'ai Excel 2003
          1. C'est vraiment le code de coupe/colle qui me manque, avec le fait de coller en dessous .
            1. Bonjour Heliotte,

              Merci pour cette réponse,

              Ceci dit, ca ne marche pas chez moi...

              Mon code actuel :
              Option Explicit
              Sub tri()
              Dim n As Integer
              Dim o As Integer
              
              
              With Worksheets("Enregistrements interventions")
              For n = 5 To 150
                  For o = 1 To 150
                  If .Range("F" & n).Value > .Range("F" & n + o) Then
                  .Rows(n).Cut
                  .Rows(n + o).Insert Shift:=xlUp
              
                  End If
                  Next o
                  
                  Next n
                  End With
                  
                  
              
              End Sub
              


              C'est toujours la ligne " .Rows(n + o).Insert Shift:=xlUp" qui pose problème
              Cette ligne ayant pour but de m'insérer la ligne couper par
              .Rows(n).Cut 
              en dessous de la ligne à l'indice (n+o)...

              Je ne trouve pas l'erreur... ( erreur 1004 )

              Merci,
              DGVDR
              1. Ça fonctionne.
                En début de feuille = Option Explicit
                Pour plus d'assurance : If .Range("F" & n).Value > .Range("F" & n + o).Value Then
                Ceci .Rows(n + o).Insert Shift:=xlDown
                ou cela .Rows(NoLigne + o & ":" & NoLigne + o).Select
                Selection.Insert Shift:=xlDown
                fonctionne