supprimer des lignes en fonction d'une valeure située sur la 5 eme col

supprimer des lignes en fonction d'une valeure située sur la 5 eme col - VB/VBA/VBS - Programmation

Marsh Posté le 19-05-2011 à 12:06:19    

--------------------------------------------------------------------------------
 
Bonjour voici le problème,  
 
J'aimerai supprimer des lignes en fonction d'une valeure située sur la 5 eme colonne derniere ligne.
J'ai crée une boucle mais cela ne supprime qu'une ligne (la derniere)
Pouvez vous m'aidez?
merci d'avance.
 
mon code:  
 
h = Cells(1, 5).End(xlDown).Row
 
For i = Cells(1, 5).CurrentRegion.Rows.Count To 1 Step -1
If Cells(i, 5).Value = Cells(h, 5).Value Then Cells(i, 5).EntireRow.Delete
Next

Reply

Marsh Posté le 19-05-2011 à 12:06:19   

Reply

Marsh Posté le 19-05-2011 à 13:16:32    

A mon sens ca vient du fait que quand tu supprimes la ieme ligne il retombe dessus.
si je comprends bien tu as une zone en haut et tu veux supprimer les lignes de cette zone qui ont le meme valeur que la derniere.  
 
Essaie de faire ca
 
h= cells(Cells(1,5).end(xlup).row,5).value 'on stocke la valeur plutot que la position, qui change
g = cells(1,5).currentregion.rows.count
 
i=1
Do  
if cells(i,5).value = h then
 rows(i).delete
 g=g-1 'la fin est moins loin d'une valeur du coup
 i=i-1 'sinon je raterai une case
Endif
I=i+1 ' incrementation classique
Loop while (i<g) 'tant qu'on est pas arrive a la fin.  
 
Tu en penses quoi ? (depuis mon iPhone je peux pas tester)


---------------
Sleep is overrated...
Reply

Marsh Posté le 19-05-2011 à 14:00:07    

C501 a écrit :

A mon sens ca vient du fait que quand tu supprimes la ieme ligne il retombe dessus.
si je comprends bien tu as une zone en haut et tu veux supprimer les lignes de cette zone qui ont le meme valeur que la derniere.  
 
Essaie de faire ca
 
h= cells(Cells(1,5).end(xlup).row,5).value 'on stocke la valeur plutot que la position, qui change
g = cells(1,5).currentregion.rows.count
 
i=1
Do  
if cells(i,5).value = h then
 rows(i).delete
 g=g-1 'la fin est moins loin d'une valeur du coup
 i=i-1 'sinon je raterai une case
Endif
I=i+1 ' incrementation classique
Loop while (i<g) 'tant qu'on est pas arrive a la fin.  
 
Tu en penses quoi ? (depuis mon iPhone je peux pas tester)


 
J'ai changé end(xlup) par end(xldown) et ca marche nikel!!! merci beaucoup !!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed