Menu

Filtrer sur un terme tout en gardant les N lignes du dessus

- - Dernière réponse : cs_Le Pivert
Messages postés
6021
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
- 16 mai 2019 à 18:22
Bonjour,

Sur une feuille de calcul je cherche à trier de la façon suivante :

Filtrer sur les lignes contenant le terme rechercher tout en gardant les n lignes (3 en l’occurrence) du dessus à chaque fois.

Exemple :
Je cherche le terme "arbre" qui se trouve en A4, j'ai besoin dans le même temps de conserver les lignes 3, 2 et 1.

Comment est-ce possible ?

Merci
Afficher la suite 

Votre réponse

2 réponses

Messages postés
48867
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
17 mai 2019
16141
0
Merci
Sélectionne les lignes à partir de la quatrième et lance ton filtre ...
Merci Raymond mais je donnais un exemple spécifique pour faire comprendre le cas général...

J'ai 14000 lignes à traiter...
Raymond PENTIER
Messages postés
48867
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
17 mai 2019
16141 -
alors tu sélectionnes les lignes 4 à 14000 ... cela ne présente aucune difficulté

tu peux aussi essayer d'insérer une ligne vide après la ligne 3, pour obtenir 2 tableaux distincts.
Commenter la réponse de Raymond PENTIER
Messages postés
6021
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
421
0
Merci
Bonjour,

en vba on fait une boucle pour rechercher "arbre"et on copie les cellules dans la colonne B:

Sub For_X_to_Next_Ligne()
Dim FL1 As Worksheet, NoCol As Integer
Dim NoLig As Long, Var As Variant
Dim DerniereLigne As Long
    Set FL1 = Worksheets("Feuil1") 'a adpater nom de la Feuille
    NoCol = 1 'lecture de la colonne A
    For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4)
        Var = FL1.Cells(NoLig, NoCol)
  If Var = "arbre" Then 'a adapter le nom recherché
   Range("A" & NoLig - 3 & ":A" & NoLig).Copy
    Range("B" & NoLig - 3).Select
    ActiveSheet.Paste
  End If
    Next
    DerniereLigne = Range("B" & Rows.Count).End(xlUp).Row
    Range("B1:B" & DerniereLigne).SpecialCells(xlCellTypeBlanks).EntireRow.Delete 'supprime les lignes vides
  End Sub



Ensuite il te suffit de supprimer la colonne A

Commenter la réponse de cs_Le Pivert