XL 2021 Feuille filtrée, ne trier que les lignes visibles

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
Je vous souhaite un bon WE :)

La petite que samedi lol

Ma feuille est filtrée et je n'arrive pas à "placer .SpecialCells (xlCellTypeVisible)"
pour ne trier que les lignes visibles :mad:

Voici le code
VB:
    With ActiveSheet 'Appels 'CodeName
        If .FilterMode Then .ShowAllData 'si la feuille est filtrée
            With .Rows("7:" & .Range("a65536").End(xlUp).Row)
            If .Row < 7 Then Exit Sub 'sécurité
            .Sort .Columns(10), xlAscending, Header:=xlNo
            End With
    End With

Pourriez-vous me dire où placer le ".SpecialCells (xlCellTypeVisible)" ?
Si besoin, je ferai un p'tit fichier test.

Merci à toutes et à tous :)
Je continue mes tâtonnements...
:)
 

dysorthographie

XLDnaute Accro
Bonjour,
Désolé mais je n'es jamais compris pourquoi vous écrivez toujours Range("a65536").End(xlUp)! Nous ne sommes plus en xls mais en xlsx,xlsm

Code:
Cells(Cells.rows.count,"A").End(xlUp) ' cela permet le ça échéant d'aler plus loin que 65536 lignes!
With ActiveSheet
   .Range(.Range("A3"),.cells(.Cells.Rows.Count,"ZZ").End(xlUp))
End With
 
Dernière édition:

laurent950

XLDnaute Accro
Bonjour @Usine à gaz

Il y a deux Possibilités : Filtre
A ) Sur un tableau Filtrés (Avec Champs en Colonne 2)
- Effectué le tri uniquement sur le filtre des lignes visibles uniquement
- Selon ton poste #8 avec le fichier joint y ajouter des champs pour les En-Têtes de Colonnes
- Puis le filtre appliqué sur le critère de la colonne et effectuer le tri sur le Champs de colonne aux choix

B) Sur un tableau Filtrés (Sans champs en ligne 2)
- Effectué le tri uniquement sur le filtre des lignes visibles uniquement
- Puis le filtre appliqué sur le critère d'une colonne et effectuer le tri sur la colonne aux choix

Autres sujet : Tableau avec Lignes Masquées et tris sur lignes visibles ?
En poste #8 toujours il y a ces lignes de code qui laissent penser à des Lignes masquées
Rows("12:29").RowHeight = 0
 
Dernière édition:

dysorthographie

XLDnaute Accro
vola ce que j'obtiens avec l'enregistreur de macros et un petit réaménagement !
VB:
Sub test()
'FiltreTrie ObjetAutoFilter, Colonne,Desc:=True/False
FiltreTrie ActiveWorkbook.Worksheets("Feuil1").AutoFilter, "B"
FiltreTrie ActiveWorkbook.Worksheets("Feuil1").AutoFilter, "B", True

End Sub
Sub FiltreTrie(Filter As AutoFilter, Col As String, Optional Desc As Boolean)
 With Filter.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range(Col & ":" & Col) _
        , SortOn:=xlSortOnValues, Order:=IIf(Desc, xlDescending, xlAscending), DataOption:= _
        xlSortNormal
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
 

laurent950

XLDnaute Accro
@Usine à gaz

Fait un exemple de ce que tu souhaites :
reprends le fichier de ton Poste #8
Fait l'exemple suivant :
1 ) ton tableau avec ligne visible de la ligne 3 a 29 Visibles
2) Fait en sorte que le tableau soit dans le désordre (c'est à dire pas trié)
3) Montre comment tu veux que les lignes visibles soient affichées (comme ça ont pourra voir comment les lignes non visibles seront traitées par ta méthode (soit en filtre soit masqué)
4) Montre le résultat à obtenir comme tu l'as dit à trier les lignes visibles
5) défiltres

Fait le sans VBA juste à la main et fait des copies d'écran pour 1) et 2) et 3) jusqu'au 5)
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
@Usine à gaz

Fait un exemple de ce que tu souhaites :
reprends le fichier de ton Poste #8
Fait l'exemple suivant :
1 ) ton tableau avec ligne visible de la ligne 3 a 29 Visibles
2) Fait en sorte que le tableau soit dans le désordre (c'est à dire pas trié)
3) Montre comment tu veux que les lignes visibles soient affichées (comme ça ont pourra voir comment les lignes non visibles seront traitées par ta méthode (soit en filtre soit masqué)
4) Montre le résultat à obtenir comme tu l'as dit à trier les lignes visibles
5) défiltres

Fait le sans VBA juste à la main et fait des copies d'écran pour 1) et 2) et 3) jusqu'au 5)
Re-Laurent :)
Encore merci pour ce retour.
Présentement, je suis sur la préparation du travail de demain.

Si je ne suis pas trop "HS", je vois ça ce soir...
:)
 

laurent950

XLDnaute Accro
Alors pour faire simple et facile
Le tableau que tu as suggéré en poste #8
Les Lignes visibles sont Obtenu comment ?
Soit :
A) à partir d'un tableau Filtrés. ----->>> (Application d'un filtre)
B) Des lignes visibles par rapport aux lignes masquées.
 

dysorthographie

XLDnaute Accro
1691336020066.png


on peut aller jusqu'à A1048576
 

laurent950

XLDnaute Accro
Bonsoir Lionel

Exemple Suivant Fichier du Poste #8 @Usine à gaz

Il faut aussi retravailler ce fichier en Poste #8 pour rendre les lignes visibles non jointives... suite au filtre afin de tester le tri avec la macro sur les lignes visibles non jointives indépendamment des lignes non visibles.
Relire poste #13 Réponse en Poste #14


Ma feuille est filtrée et je n'arrive pas à "placer .SpecialCells (xlCellTypeVisible)"
pour ne trier que les lignes visibles
Ma feuille est filtrée = A Rappeler Colonne 1 du Tableau
ne trier que les lignes visibles
= Toutes les lignes visibles A Rappeler
Non prise en compte des champs (Rappel Première Ligne du tableau) Header:=xlNo
Tri par :
' par ordre croissant
Ou
'Tri par ordre décroissant
en détail
rngTri.Sort key1:=rngTri.Columns(2), Order1:=xlAscending, Header:=xlNo
1 = L'objet Range (La plage) = rngFiltre
2 = Le tri = Sort
3 = La colonne a Trié ici colonne 2 = rngTri.Columns(2) soit A Rappeler
4 = L'odre Croissant = xlAscending ou Décroissant = xlDescending
5 = La prise en comptes des En-Têtes (Champs des colonne) soit :
- Header:=xlNo = Non
- Header:=xlYes = Oui

Au Choix du tri dans l'exemple (Conserve une des deux procédures)

' Trier le tableau filtré sans enlever le filtre
' par ordre croissant (Choix du tri sur la colonne 2)
triCoissant rngFiltre, 2

' Trier le tableau filtré sans enlever le filtre
'Tri par ordre décroissant (Choix du tri sur la colonne 2)
TriDecoissant rngFiltre, 2

VB:
Sub TriSurTableauFiltreSansEntêtes1()
' Filtre ne tiens pas compte des le Champs soit les En-Têtes = Header:=xlNo
    Dim ws As Worksheet
    Dim rngFiltre As Range
    Dim critereFiltre As String
 
    ' Remplacez "Feuil1" par le nom de votre feuille contenant le tableau
    Set ws = ThisWorkbook.Worksheets(ActiveSheet.Name)
 
    ' Remplacez "A2:C" & Range("A1048576").End(xlUp).Row par la plage de votre tableau filtré
    Set rngFiltre = ws.Range("A3:C" & Range("A1048576").End(xlUp).Row)
 
    ' Remplacez "CritereFiltre" par le critère utilisé = Exemple "A Rappeler"
    critereFiltre = "A Rappeler" '"CritereFiltre"
 
    ' Appliquer le filtre sur la colonne du critére dans l'exemple = Colonne 1
    ' Field = Colonne 1
    rngFiltre.AutoFilter Field:=1, Criteria1:=critereFiltre
 
    ' Trier le tableau filtré sans enlever le filtre
    ' par ordre croissant (Choix du tri sur la colonne 2)
        triCoissant rngFiltre, 2
 
    ' Trier le tableau filtré sans enlever le filtre
        'Tri par ordre décroissant (Choix du tri sur la colonne 2)
        TriDécoissant rngFiltre, 2
 
    ' Désactiver le filtre pour afficher toutes les lignes triées
    ws.AutoFilterMode = False
End Sub
Sub triCoissant(ByVal rngTri As Range, ByRef Colonne As Integer)
        ' Trier le tableau filtré sans enlever le filtre
        ' par ordre croissant
    rngTri.Sort key1:=rngTri.Columns(Colonne), Order1:=xlAscending, Header:=xlNo
End Sub
Sub TriDecoissant(ByVal rngTri As Range, ByRef Colonne As Integer)
        ' Trier le tableau filtré sans enlever le filtre
        ' par ordre décroissant
    rngTri.Sort key1:=rngTri.Columns(Colonne), Order1:=xlDescending, Header:=xlNo
End Sub
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bjr Laurent, Bjr le Fil, Bjr le Forum :)

Désolé de n'avoir pas répondu hier.
Pour tout vous dire, pour un fil que je croyais très court... ben dit donc lol
Je n'arrive pas à suivre, je suis perdu et la tête en vrac.
Egalement, j'ai un boulot de dingue et pas le temps de m'y replonger vraiment.
Je vous prie de m'en excuser. je répondrai dès que possible.
Encore merci à tous :)
 

Discussions similaires

Réponses
11
Affichages
352

Statistiques des forums

Discussions
309 795
Messages
2 066 553
Membres
238 058
dernier inscrit
samueldv30