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

Fermé
Didier - 16 mai 2019 à 12:16
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 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

2 réponses

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

J'ai 14000 lignes à traiter...
0
Raymond PENTIER Messages postés 58396 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 25 avril 2024 17 094
16 mai 2019 à 18:15
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.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
16 mai 2019 à 18:22
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

0