Retrait de données/lignes par macro

Bonjour,

Je cherche à retirer en automatique des lignes d'une extraction d'un logiciel.

Malgré les bons conseils sur les forums, je ne suis pas parvenu à réaliser une macro.

Dans le fichier joint, je souhaite :

1. Supprimer les lignes quand la valeur est "S" dans la colonne C

2. Supprimer les lignes quand la valeur commence par "Total" dans la colonne A

3. Supprimer les lignes quand la valeur de la deuxième chaine de caractères est "00",""11" ou "22" dans la colonne A. Dans la colonne A, les nombres sont tous de la forme xxx.yy.zzz.aa et ce sont les caractères yy que je souhaite cibler quand j'énonce la deuxième de caractères à "00","11" ou "22"..

Merci d'avance pour vos retours et bon noël à tous!

Jérôme

12test.zip (38.88 Ko)

Bonjour

Sans doute une macro permettrait-elle de gagner encore un peu de temps, mais juste pour ouvrir une possibilité supplémentaire, on peut faire quelque chose que tu n'auras pas de mal à appliquer ou adapter, si un jour, cela s'avère nécessaire ...

Dans une colonne de ton choix, en ligne 6 de ton exemple, coller cette formule:

=OU(C6="S";GAUCHE(A6;5)="Total";SI(ESTNUM(CHERCHE(".";A6));SOMMEPROD(({"00";"11";"22"}=STXT(A6;TROUVE(".";A6)+1;2))*1)))

... recopier sur toute la hauteur, trier le tableau sur cette colonne en ordre croissant, puis supprimer les lignes, du premier VRAI à la dernière ligne.

Bonjour

Ce que je vous suggère en VBA :

Une boucle pour une suppression de ligne il faut toujours remonter et non pas descendre.

Ex 256 lignes

Ne pas faire for i=1 to 256 step 1

mais for i = 256 to 1 step -1

Voici une suggestion :

For i = 256 to 1 step -1

ICI placer tes critères de suppression

if ....... then row(i).delete end if

if ....... then row(i).delete end if

Next

Essayez ceci.

Si vous bloquez on vous aidera.

Cdt,

Salut elCondor, U.Milité, Ti'Chou,

voilà ton fichier! Plus qu'à bosser!

A+

7cleanextract.xlsm (52.90 Ko)

Bonjour à tous,

Une variante... :

Sub Nettoyage()
    Dim n%, i%
    With ActiveSheet
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        Application.ScreenUpdating = False
        For i = 6 To n
            If .Cells(i, 3) = "S" Then
                .Cells(i, 1).ClearContents
            ElseIf .Cells(i, 1) Like "*Total*" Then
                .Cells(i, 1).ClearContents
            Else
                Select Case Split(.Cells(i, 1), ".")(1)
                    Case "00", "11", "22"
                        .Cells(i, 1).ClearContents
                End Select
            End If
        Next i
        .Range("A6:A" & n).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    End With
End Sub

Cordialement.

@MFerrand,

quel code magnifique!

Je note!

A+

Bonjour,

Juste pour le fun (parce que el Condor ... passa ... et ne revint pas! )

C'est un filtre avancé qui fait le turbin (avec, comme critère, la formule que je proposais au départ); le tout extrayant le résultat dans la seconde feuille, à chaque activation de cette dernière. N'y subsistent donc que les lignes à garder.

Rechercher des sujets similaires à "retrait donnees lignes macro"