Re: filtrer des lignes en fonction d'une condition |
Titre du sujet : Re: filtrer des lignes en fonction d'une condition par Mth le 09/08/2013 23:00:53 re bonjour Mickaël,
J'ai fait une bêtise dans le premier fichier, vraiment désolée, voici en PJ la correction (il s'agit de la formule colonne F qui n'allait pas du tout): Option Explicit Sub Macro1() Dim Dlig As Long With Sheets("Feuil1") 'test pour éviter de traiter plusieurs fois les données If .Cells(1, 6) = "Données traitées" Then Exit Sub 'calcul de la dernière ligne Dlig = .Cells(Rows.Count, 1).End(xlUp).Row 'tri des données With .Sort.SortFields .Clear .Add Key:=Range("A2:A" & Dlig), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .Add Key:=Range("B2:B" & Dlig), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Feuil1").Sort .SetRange Range("A1:E" & Dlig) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End With 'formule de test colonne F(même numéro, appel > 32 secondes) .Range("F2").FormulaR1C1 = _ "=IF(RC[-3]<>R[-1]C[-3],""ok"",IF(RC[-4]-R[-1]C[-4]>0.00037037037037037,""ok"",NA()))" .Range("F2").Copy .Range("F2:F" & Dlig) ' élimination des erreurs .Range("F3:F" & Dlig).SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete 'Efface la colonne F .Columns("F:F").ClearContents 'indicateur données traitées .Cells(1, 6) = "Données traitées" End With End Sub
Si tu n'es pas fan de VBA tu feras aussi bien avec l'interface Excel: En cellule F2 tu écris cette formule puis tu la copie vers le bas jusqu'à la dernière ligne remplie de ton fichier: =SI(C2<>C1;"ok";SI(B2-B1>0.037;"ok";NA())) Tu auras donc colonne F soit le libellé "ok", soit l'erreur #N/A Sélectionne ta colonne F Dans la menu "Accueil" clique sur "Rechercher et Sélectionner "au bout à droite et choisis "Sélectionner les cellules" Là tu coches la case "Formules" et tu ne laisses que la case "Erreurs" cochée Dans ta colonne F seules les cellules #N/A sont maintenant sélectionnées. En faisant un clic droit sur une de ces cellules au hasard (attention de ne pas tout désélectionner) tu choisis "Supprimer" et tu coches "Ligne entière" Une fois que tu as validé, toutes les lignes indésirables ont été supprimées.
C'est plus long à dire qu'à faire, c'est une petite manip qui te servira à bien des occasions.
En espérant que cela puisse t'aider,
Bonne soirée,
mth
|
Forums