Ecrire une boucle en VBA

oribaze -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je souhetairai ecrire un programme qui lit la premiere cellule d'une ligne d'un tableau , et qui supprime l'entiereté de la ligne si la cellule est differente d'une certaine valeur (ici si la cellule A est different de 1 , supprimer la ligne , et repeter pour toute les lignes )

J ' ai trouvé deux solutions qui ne marchent pas entierement

la premiere s'applique à un petit tableau et je souhetairai traiter un tableau de 10 000 lignes ,

la deuxieme me donne une boucle infinie

voici les deux codes :

sub macro 1()
Dim i as integer
dim j as integer

for i=1 to 10000
for j= i to 10000

if cells(i, 1) <> "1" Then
Rows(i).Select
Application:CutCopyMode =False
Selection.Delete

End if

next i
next j

end sub




deuxieme macro


for i = 1 to 10 000
Do while cells (i, 1) <> "1"
Rows(i).Select
Application:CutCopyMode =False
Selection.Delete

loop

next i

end sub


Merci pour votre aide
A voir également:

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
il est préférable de commencer par le bas et de remonter quand on supprime des lignes.

pourquoi écris-tu que la premiere s'applique à un petit tableau?

dans les deux cas, je ne comprends pas pourquoi tu fais deux boucles imbriquées.
0
Oribaze
 
Jai teste ma première solution sur un tableau de 10 000 lignes et il le temps d'exécution est incroyablement long

Si je fais une simple boucle l'algorithme ne me lira pas toutes les lignes , il ira à la ligne d'en dessous à cause du next i
Sans lire la ligne sur laquelle le curseur est
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oribaze
 
c'est précisément pour cela qu'il est préférable, quand on supprime des lignes, de commencer par le bas et de remonter.
0