Macro - suppression lignes à 0 condition valeur unique

Bonjour à tous,

Merci pour votre aide sur ce sujet:

Pour un fichier excel qui fera au maximum 500000 lignes. J'ai joint un exemple simplifié. Je souhaite automatiser la suppression des lignes à 0 en colonne L, mais seulement dans les cas ci-dessous :
- Si C2&C3 est une valeur unique, garder la ligne à 0 (exemples des lignes 4 5 6 21 & 22 sur le fichier)
- Si C2&C3 n'est pas une valeur unique, supprimer la/les valeurs à 0 (exemples des lignes 8, 10, 12 & 13, 15, 17, 19 sur le fichier)
- Si C2&C3 n'est pas une valeur unique et que chaque valeur est différente de 0, les conserver.

11test-macro.xlsm (18.92 Ko)

Bonne soirée,
Benjamin

Bonjour,

Un test qui me semble fonctionner :

Sub NET()
Dim L%, LR%
With ActiveSheet
    LR = .Cells(.Rows.Count, 3).End(xlUp).Row 'Défini la dernière ligne sur la base de la colonne C
    For L = LR To 2 Step -1 'Sur les lignes LR à 2 en remontant
        If .Cells(L, 12) = 0 And Application.WorksheetFunction.CountIfs(.Columns(3), .Cells(L, 3), .Columns(4), .Cells(L, 4)) > 1 Then .Rows(L).Delete 'Si cellule ligne L et colonne L = 0 et NB.SI.ENS(Colonne C, cellule L colonne C, colonne D, cellule L colonne D) est plus grand que 1 alors supprime ligne
    Next L 'Passe à la ligne suivante
End With
End Sub

A voir comment ça se comporte sur 500 000 lignes.

Cdlt,

Bonsoir, Ergotamine

Merci pour ta réponse aussi rapide.

Voici le message que j'obtiens (le fichier fait actuellement 110000 lignes):

image

LR = .Cells(.Rows.Count, 3).End(xlUp).Row 'Défini la dernière ligne sur la base de la colonne C


As-tu des astuces pour contourner ce problème? Ou une autre solution?

Merci en tout cas pour la solution, je suis novice en vba et je pense avoir bien compris ton texte / la logique:


Cdt,
Benjamin

Bonjour,

En première ligne remplacez par

Dim L as Long, Dim LR as Long

En effet % ne va que jusqu'à 32 767, d'où le message de dépassement de capacité

C'est de ma faute désolé.

Cdlt,

Bonjour Ergotamine,

La macro fait planter mon PC mais j'imagine qu'elle fonctionne car je n'ai pas de "bug".

Merci pour ton aide,
Benjamin
Rechercher des sujets similaires à "macro suppression lignes condition valeur unique"