XL 2016 [Résolu] Suppression de ligne --> obliger de répéter plusieurs fois

Fredox

XLDnaute Occasionnel
Bonjour, j'ai un problème avec cette macro afin de supprimer les ligne ou le contenu n'est pas présent dans ma base.
Mon problème est que lors de l'exécution de la macro toutes les lignes ne sont pas supprimées.

En la ré-exécutant 5 fois cela fini par être bon, mais plus mon fichier va grossir, plus ca va être problématique
J'ai même essayer de mettre 1 seconde de pause avant chaque Next, cela n'a rien changé.

Auriez vous une idée ? ☹️


Sub Supp()

Dim Feuille As Worksheet
Set Feuille = Worksheets("Rapports")
Feuille.columns("A:N").AutoFit

Dim DL As Long
Dim i As Long

DL= Feuille.Range("B" & Rows.Count).End(xlUp).Offset(1).Row
If DL < 2 Then DL = 2
Range("o1") = DL


VB:
For i = 2 To DL_visites
Range("O" & i) = i [COLOR=rgb(97, 189, 109)]' ici juste pour vérifié que toutes les lignes sont bien traitées, c'est le cas[/COLOR]
Range("M" & i).NumberFormat = "@" ' [COLOR=rgb(97, 189, 109)]Je pensais à un probleme de format texte[/COLOR]
If Application.CountIf([index_Base], Worksheets("Rapports").Range("B" & i)) = 0 Then Rows(i).Delete Shift:=xlUp
'DoEvents ' [COLOR=rgb(97, 189, 109)]j'ai essayé[/COLOR]
Next

End Sub
 

cp4

XLDnaute Barbatruc
Bonjour,

Pour supprimer des lignes, il faut commencer par la dernière ligne et remonter.
En effet, si tu supprimes par exemple la ligne 4, toutes les lignes vont remonter d'une ligne et du coup perdront leur numéro initial.
VB:
For i=dl to 2 step -1
'condition de suppression
'suppression
next i'

Bonne chance.
 

dysorthographie

XLDnaute Accro
Bonjour,
C'est le théorème des places de cinémas, si une personne du premier rang quitte sa place il est remplacer par une personne du deuxième rang!

Il faut commencer par la fin.
Code:
For i =  DL_visites to 2 step -1
Maintenant je n'es pas vérifié ce que ça implique dans la généralité du code mais tu comprendra aisément que si tu supprimes la ligne 2 la ligne 3 devient 2 et comme tu traites la linge qui vient après le next tu gère en réalité la ligne 4 et pas 3!

Si ça implique trop de changement tu peux décrémenter i de 1 à chaque suppression .
En d'autres termes si je supprime la ligne 2, je décrémente i de 1 i devient i=1 et après le next i devient i=2
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
328

Statistiques des forums

Discussions
312 113
Messages
2 085 430
Membres
102 889
dernier inscrit
monsef JABBOUR