Macro tri alpha sans blancs

Bonjour

Dans une feuille j'ai une liste de 200 noms en colonne B et les colonnes C D E F lui sont associées.

je reporte toutes ces colonnes dans une autre feuille par un collage avec liaison, et dans celle-ci je fais un tri alphanumérique de la colonne B et les colonnes associées suivent.

Pour ce faire j'utilise une macro que j'ai trouvé sur ce site et qui fonctionne bien tant que toutes le lignes sont remplies.

Mais si je n'ai que 50 ligne de remplies quand je fais le tri celui-ci se fait mais decale tous les noms vers le bas en mettent les blancs en haut, et c'est ce que je voudrais éviter.

Est-il possible de modifier la macro pour faire cela ?

je joins un exemple de fichier pour une meilleur comprehension.

https://www.excel-pratique.com/~files/doc/macro_tri_alpha.xls

D'avance merci

Bonjour,

2 possibilités :

1) Avant le tri, toutes les données sont à la suite sans ligne vide :

on ne trie que les données remplies :

Sub trialpha()
    Dim I As Long
    I = Range("A4").End(xlDown).Row

    Range("A4:G" & Range("A" & I).End(3).Row).Sort _
    Key1:=Range("A4"), Order1:=xlAscending, _
    Key2:=Range("B4"), Order2:=xlAscending, _
    Key3:=Range("C4"), Order3:=xlAscending, _
    Header:=xlGuess, OrderCustom:=1, MatchCase:=True, _
    Orientation:=xlTopToBottom

End Sub

2) Il y a des lignes vides avant le tri, on supprime les lignes après le tri

Sub trialpha()
    Dim I As Long

    Range("A4:G" & Range("A65535").End(3).Row).Sort _
    Key1:=Range("A4"), Order1:=xlAscending, _
    Key2:=Range("B4"), Order2:=xlAscending, _
    Key3:=Range("C4"), Order3:=xlAscending, _
    Header:=xlGuess, OrderCustom:=1, MatchCase:=True, _
    Orientation:=xlTopToBottom

    'suprression des lignes vides

    For I = 4 To 65535
        If Range("A" & I).Text <> "" Then Exit For
    Next I

    Rows("4:" & I - 1).Delete Shift:=xlUp

End Sub

Bonjour

merci de votre réponse rapide.

Dans mon cas toutes les donnees sont a la suite sans ligne vide

donc la solution 1 me conviendrait, mais après test elle ne marche pas, en fait

rien ne se passe.

J'ai essayé la 2eme solution,qui marche sauf qu'il ne faut effectuer le tri qu'une

seule fois sinon je perd des données et cela m'empêche de faire des modifs dans ma

liste puisque les liaisons sont effacées.

merci

non resolu

Oui, j'ai corrigé le code sans tester ... et un peu vite, voici le bon :

Sub trialpha()
    Dim I As Long
    I = Range("A4").End(xlDown).Row

    Range("A4:G" & I).Sort _
    Key1:=Range("A4"), Order1:=xlAscending, _
    Key2:=Range("B4"), Order2:=xlAscending, _
    Key3:=Range("C4"), Order3:=xlAscending, _
    Header:=xlGuess, OrderCustom:=1, MatchCase:=True, _
    Orientation:=xlTopToBottom

End Sub

re

Désolé mais avec la dernière macro je suis revenu au point de départ

Oui je vois, dans "Range("A4").End(xlDown).Row", on cherche la dernière ligne remplie, mais les suivantes contiennent une formule et ne sont donc pas consédérées comme vides...

Voilà le bon code :

Sub trialpha()
    Dim I As Long
    For I = 4 To 65535
        If Range("a" & I).Text = "" Then Exit For
    Next I

    Range("A4:G" & I - 1).Sort _
    Key1:=Range("A4"), Order1:=xlAscending, _
    Key2:=Range("B4"), Order2:=xlAscending, _
    Key3:=Range("C4"), Order3:=xlAscending, _
    Header:=xlGuess, OrderCustom:=1, MatchCase:=True, _
    Orientation:=xlTopToBottom

End Sub

Solution nickel

avec tous mes remerciements

Rechercher des sujets similaires à "macro tri alpha blancs"