Microsoft 365 Supprimer les lignes à 0 dans 2 colonnes

Choup7231

XLDnaute Nouveau
Bonjour,

Dans mon fichier Excel, j'aimerais supprimer les lignes à 0 dans mes colonnes D et E. Mais dans ces 2 colonnes D peut être à 0 mais pas E et inversement.
Je n'arrive pas à trouver le VBA correspondant. Je n'ai trouvé que pour la colonne D mais ça efface E même si la c'est supérieur à 0.

Merci pour vos retour :)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Choup, et bienvenu sur XLD,
Faites un ET sur les tests, si Dxx=0 AND Exx=0 THEN supprimer ligne :
VB:
If Cells(N, "D") = 0 And Cells(N, "E") = 0 Then Cells(N, 1).EntireRow.Delete
Pour plus de précision, fournissez nous un petit fichier test anonyme et représentatif.
 

Choup7231

XLDnaute Nouveau
Bonjour,

Voici le fichier test. Les dates en 00/01/1900 sont normales c'est que dans mon autre fichier je n'ai pas de date. Donc je souhaite les supprimer aussi. Dans le fichier j'ai presque 700 lignes et je veux importer dans mon logiciel que les lignes donc les valeurs sont supérieurs à 0.

Sa me donne ça en VBA :

Option Explicit

Sub Test()
Dim Lig%
Application.ScreenUpdating = 0

For Lig = [D65536].End(xlUp).Row To 1 Step -1
If Cells(N, "D") = 0 And Cells(N, "E") = 0 Then Cells(N, 1).EntireRow.Delete
Next
End Sub


Mais sa beug à Sub Test() maintenant.
 

Pièces jointes

  • Test LPN.xlsx
    45.7 KB · Affichages: 10

sylvanu

XLDnaute Barbatruc
Supporter XLD
Ben évidemment, si votre variable s'appelle Lig et que vous accéder à la cellule de la ligne N, ça bogue.
Essayez ça, c'est mieux :) :
VB:
Sub Test()
    Dim Lig#
    Application.ScreenUpdating = 0
    For Lig = [D65535].End(xlUp).Row To 1 Step -1
        If Cells(Lig, "D") = 0 And Cells(Lig, "E") = 0 Then Cells(Lig, 1).EntireRow.Delete
    Next
End Sub
De plus Lig% veut dire Integer donc limité à 32767. A remplacer par double si vous allez au delà de ce nombre. Ou alors vous faites For Lig = [D32767].End(xlUp).Row To 1 Step -1 avec Lig%
 

Choup7231

XLDnaute Nouveau
Ben évidemment, si votre variable s'appelle Lig et que vous accéder à la cellule de la ligne N, ça bogue.
Essayez ça, c'est mieux :) :
VB:
Sub Test()
    Dim Lig#
    Application.ScreenUpdating = 0
    For Lig = [D65535].End(xlUp).Row To 1 Step -1
        If Cells(Lig, "D") = 0 And Cells(Lig, "E") = 0 Then Cells(Lig, 1).EntireRow.Delete
    Next
End Sub
De plus Lig% veut dire Integer donc limité à 32767. A remplacer par double si vous allez au delà de ce nombre. Ou alors vous faites For Lig = [D32767].End(xlUp).Row To 1 Step -1 avec Lig%
Super ça fonctionne :) Je vous remercie beaucoup
 

Discussions similaires

Réponses
22
Affichages
689
Réponses
2
Affichages
98

Statistiques des forums

Discussions
311 720
Messages
2 081 907
Membres
101 836
dernier inscrit
karmon