Tri par comparaison

DGVDR -  
Heliotte Messages postés 1561 Statut Membre -
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

  1. Heliotte Messages postés 1561 Statut Membre 92
     
    Ç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
    0
  2. DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
     
    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
    0
  3. DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
     
    C'est vraiment le code de coupe/colle qui me manque, avec le fait de coller en dessous .
    0
  4. Heliotte Messages postés 1561 Statut Membre 92
     
    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
     
    Heliotte,

    J'ai 2010.
    0
  7. Heliotte Messages postés 1561 Statut Membre 92
     
    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.
    0
  8. DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour,

    Merci malgré tout pour ton aide Heliotte,

    Quelqu'un pourrait-il éclairer notre lanterne ?

    DGVDR
    0
  9. Heliotte Messages postés 1561 Statut Membre 92
     
    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
    0