Filtre auto trie Alphabétique + Masquer ligne [Résolu/Fermé]

Signaler
Messages postés
2
Date d'inscription
vendredi 22 juin 2018
Statut
Membre
Dernière intervention
23 juin 2018
-
Messages postés
2
Date d'inscription
vendredi 22 juin 2018
Statut
Membre
Dernière intervention
23 juin 2018
-
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

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 245
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
Messages postés
2
Date d'inscription
vendredi 22 juin 2018
Statut
Membre
Dernière intervention
23 juin 2018

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.