Rapport de message :*
 

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