Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Suppression Ligne VBA

  • Initiateur de la discussion Initiateur de la discussion florenllf
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

florenllf

Guest
Bonjour,
J'ai besoin de supprimer des lignes dans Excel suivant deux conditions soit la cellule = N soit il y a #NA dedans.

Mon code fonctionne parfaitement (ici je ne montre que pour un cas) mais lorsque je m'attaque à de gros fichier (environ 45000 lignes) il met un temps ....... j'ai le temps d'aller au WC...regarder un match de tennis et je suis sur le lendemain il ne serait pas terminé...😡

Ya t'il un moyen de l'optimiser?

Code:
For d = 2 To i
If IsError(Cells(d, 9)) Then
Row = Cells(d, 9).Row
ActiveSheet.Rows(Row).Delete ' Shift:=xlUp
End If
Next d


Merci 😛
 
Re : Suppression Ligne VBA

Bonjour Florenllf, bonjour le forum,

Essaie la boucle inversée :
Code:
For d = i To 2 Step -1
     If IsError(Cells(d, 9)) Then
          ActiveSheet.Rows(d).Delete ' Shift:=xlUp
     End If
Next d
 
Dernière édition:
Re : Suppression Ligne VBA

Bonjour,

regarde peut être ceci :
Code:
Dim d As Long, i As Long
For d = i To 2 Step -1
    If IsError(Cells(d, 9)) Then Rows(d).Delete
Next d
A noter quand tu supprime des ligne il y a lieu de commencer par la fin, au cas ou 2 cellules consécutives répondent au test...

bon après midi
@+

Edition : bonjour Robert🙂
 
Re : Suppression Ligne VBA

Merci pour vos réponses.

Je vais les tester à savoir que je viens de comprendre une partie de la lenteur:
Mes lignes comprennent ca comme formule et je pense que c'est recalculé à chaque passage. (Je triche en faisant un copié/collé des valeurs sur elles-mêmes).

Code:
Range("I2:I" & i - 1).Formula = "=LOOKUP(D2,'2.liste IC'!A$2:A$102,'2.liste IC'!B$2:B$102)"
Range("J2:J" & i - 1).Formula = "=LOOKUP(C2,'3.entités pôles'!A$2:A$1558,'3.entités pôles'!B$2:B$1558)"

Mon code actuelle

Code:
For d = 2 To i
If IsError(Cells(d, 9)) Then
Row = Cells(d, 9).Row
ActiveSheet.Rows(Row).Delete ' Shift:=xlUp
d = d - 1
End If

Next d

For d = 2 To i
If Cells(d, 9).Value = "N" Then
Row = Cells(d, 9).Row
ActiveSheet.Rows(Row).Delete ' Shift:=xlUp
d = d - 1
End If
Next d
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
917
K
Réponses
5
Affichages
900
L
Réponses
9
Affichages
1 K
L
Réponses
4
Affichages
971
Lascar22
L
D
Réponses
4
Affichages
1 K
S
Réponses
2
Affichages
1 K
SimpsonHomer
S
Réponses
8
Affichages
1 K
N
Réponses
5
Affichages
3 K
Nicocotte125
N
G
Réponses
9
Affichages
1 K
G
S
Réponses
4
Affichages
1 K
SELKAIM
S
C
Réponses
4
Affichages
2 K
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…