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

  • Initiateur de la discussion Initiateur de la discussion Fredox
  • 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 !

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
 
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.
 
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:
- 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

Discussions similaires

Réponses
3
Affichages
583
Réponses
5
Affichages
815
Retour