Trier une plage

Bonsoir

ma question concerne le tri d'une plage de donnée formant une 2 colonnes sur une feuille de calcul , par macro enregistrée pas de soucis , ca se passe bien ! par contre si la plage comprend des ligne vides !! le tri s'effectue en compactant les lignes de sorte que la plage triée remonte systematiquement , le soucis et que meme les titres des deux colonnes sont ecrasés , existe il une facon de trier

en respectant les espaces vides quand il y en a ?

Merci pour vos conseils

Bonjour rocket4 ,

Si j'ai bien compris ton problème.

Un petit fichier exemple n'aurait pas été de trop.

En masquant les lignes que l'on veut laisser en place avant le tri.

Amicalement

82pour-rocket4.xlsm (16.48 Ko)

Bonsoir à tous,

la même en évitant la boucle

sur le fichier de haonv

Sub tri()
Dim Lg&
    Application.ScreenUpdating = False
    Lg = Range("b" & Rows.Count).End(xlUp).Row
    '--- filtre ---
    Range("k2") = "=a2<>"""""       'critère
    Range("a1:b" & Lg).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
    Range("k1:k2"), Unique:=False
    Range("k2").ClearContents
    '--- tri ---
    Range("a1:b" & Lg).Sort _
        Key1:=Range("a2"), Order1:=xlAscending, _
    Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    '---
    On Error Resume Next
    ActiveSheet.ShowAllData         'libère le filtre
End Sub

Amicalement

Claude

112rocket4-tri.zip (12.11 Ko)

Je vous remercie infiniment pour vos réponses efficaces !!!! Dubois , j'ai lu ton code quel est le role de k1 et k2 ?

merci

Salut le forum

Rocket, la plage K1:K2 correspond au critère du filtre (différent du vide)

Mytå

Merci à vous tous pour vos réponses aussi exccelentes les unes que les autres , je salut vos compétences , vous remerciant de l'aide

que vous apporter sur ce site qui indiscutablement une référence en matière de vba

bonne soirée à tous

Bonjour , il me vient une question supplementaire relative à ce post , ( cela peut interesser des personnes qui rencontre ce cas )

une fois le tri effectué , comment peut on faire pour rassembler les éléments d'une colonne triée de sorte que les données soient rassemblés et qu'il n'y ait comporte plus d'espace entre les noms ou numéros ?

Merci à vous

j'ai essayé de faire ceci :

Sub Macro1()
Dim cel As Range 'déclare la variable cel
'boucle sur toutes les cellules des colonnes A et B
For Each cel In Range("E8:F20")
'& Range("D65536").End(xlUp).Row)
    'si la cellule est vide, elle prend la valeur de la cellule du dessus
    If cel.Value = "" Then cel.Value.Cut cel.Offset(1, 0).Select
    ActiveSheet.Paste
Next cel 'prochaine cellule des colonnes A et B
End Sub

mais j'ai un anomalie que je n'arrive pas à corriger sur le couper coller de la ligne

 If cel.Value = "" Then cel.Value.Cut cel.Offset(1, 0).Select
    ActiveSheet.Paste

Bonjour,

As-tu essayer ma solution postée + haut ?

Claude

Bonsoir oui merci , j'ai oublié de cloturer le fil , ca marche parfaitement en te remerciant infiniment !

Rechercher des sujets similaires à "trier plage"