Filtre auto trie Alphabétique + Masquer ligne

Résolu/Fermé
Higepiyo Messages postés 2 Date d'inscription vendredi 22 juin 2018 Statut Membre Dernière intervention 23 juin 2018 - 22 juin 2018 à 21:32
Higepiyo Messages postés 2 Date d'inscription vendredi 22 juin 2018 Statut Membre Dernière intervention 23 juin 2018 - 23 juin 2018 à 01:58
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
22 juin 2018 à 23:20
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 vendredi 22 juin 2018 Statut Membre Dernière intervention 23 juin 2018
Modifié le 23 juin 2018 à 01:58
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