Filtre auto trie Alphabétique + Masquer ligne

Résolu
Higepiyo Messages postés 2 Statut Membre -  
Higepiyo Messages postés 2 Statut Membre -
Bonjour,

Je souhaiterais une macro automatique afin de trier un tableau par ordre Alphabétique et masquer les lignes avec ou ce trouve une cellule vide en colonne A. Les données du tableau sont récupérer sur une autre feuille.

J'ai réussi à trier automatiquement le tableau par ordre alphabétique mais je n'arrive pas à masquer les lignes.

Voici le code pour filtrer par ordre alphabétique :

Private Sub Worksheet_Activate()
Range("A2:B100").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A2").Select
End Sub

Voici un fichier exemple (je n'ai fait la formule que pour 4 quai pour l'exemple, j'ai mis un troisième onglet sans macro pour faire des tests) :
https://drive.google.com/file/d/1GU1H_pO6MCebT2c7EfJkBTKeJhAlVyam/view?usp=sharing

2 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    Dans ton code, tu rajoutes le masquage :
    Private Sub Worksheet_Activate()
    Range("A2:B100").Select
    Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Range("A2").Select
    Dim lig As Long
    For lig = 2 To Cells(Rows.Count, "A").End(xlUp).Row
        If Cells(lig, "A").Value = "" Then Rows(lig).Hidden = True
    Next lig
    End Sub
    
    0
  2. Higepiyo Messages postés 2 Statut Membre
     
    Merci beaucoup cela fonctionne parfaitement. J'ai juste rajouter l'inverse afin que si les cellules ne sont plus vide elle réapparaissent.

    Voici le code final :

    Private Sub Worksheet_Activate()
    Range("A2:B100").Select
    Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Range("A2").Select
    Dim lig As Long
    For lig = 2 To Cells(Rows.Count, "A").End(xlUp).Row
    If Cells(lig, "A").Value = "" Then Rows(lig).Hidden = True Else: Rows(lig).Hidden = False
    Next lig
    End Sub


    Encore merci pour votre aide.
    0