Filtre auto trie Alphabétique + Masquer ligne

Résolu
Higepiyo Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Higepiyo Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

2 réponses

gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
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
Higepiyo Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
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