effacer une ligne sur deux

E

echane

Guest
salut

je sais qu'on peut tres facilement effacer une ligne sur deux avec une simple boucle, mais existe-t-il un moyen plus rapide ?

mon fichier a plus de 19000 lignes (c'est des genes) et ca prend plusieurs minutes pour le faire avec une boucle (meme en desactivant le rafraichissement de l'affichage)

merci de m'aider, je suis en stage au canada et c'est la premiere fois que j'utilise serieusement excel :)

+
 
V

Vériland

Guest
Bonsoir Echane

Ben en fait ça dépend de deux choses...

D'une part de ta boucle et ensuite de ton matériel...

si tu avais un exemple de boucle p'têt qu'on aura une idée plus précise ?...car des boucles on peut en avoir de toutes les sortes...

Et pourquoi pas un renseignement sur ta "bécane"...type de processeur/ mémoire / version système / Excel...

Avec ces renseignements, on aura la possibilité de te répondre au plus juste

Voilà pour moi...

et...
Bienvenue_XLD.gif

A+Veriland.gif
 
E

echane

Guest
'lut

j'utilise ce type de boucle (qu'on trouve un peu partout sur internet) :
DerniereLigne = ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
For R = DerniereLigne To 2 Step -2
Rows(R).Delete
Next R
ActiveWindow.WindowState = xlNormal

je travaille sur un P4 1.8 ghz avec 500 MO de Ram (ca peut aller, non ?)

voila, merci de ta reponse rapide

la journee de travail est finie pour moi :)

+
 
V

Vériland

Guest
Ah ben j'm'incline...à côté de toi j'ai un "petite bécane"...lol...Pentium III 900, 350 Mo
smiley_234.gif


Alors j'ai testé plusieurs type de boucles...mais il c'est avéré que la tienne fonctionnait bien...bon après avoir déclaré R et DerniereLigne as Integer j'ai mis 59 secondes pour boucler la boucle...lool
smiley_617.gif


Donc là je ne vois pas c'qui pourrait être mieux...
smiley_115.gif


mais p'têt qu'avec sa baguette magique not' magicien VBA fera une boucle plus rapide...loool
smiley_249.gif


Bon vé
smiley_827.gif


Bonne nuit

A+Veriland.gif
 
T

Ti

Guest
Après de longues séries d'essais de suppression de lignes une par une, puis par paquets (30, 80, 100, 1000, 5000 - au delà ça rame trop) je n'ai pas constaté d'améliorations notables. Sur un fichier de 21750 lignes, ça tournait chez moi autour de 1 min 30 (sauf les paquets de 10000 qui tournent en plus de 4 min).
Donc j'ai pris le problème à l'envers, et je n'ai plus supprimé, mais copié les lignes sur une feuille temporaire, puis retransféré sur la feuille d'origine.

Résultat pour un fichier de 25000 lignes :

La boucle basique (suppression de lignes) : 1 min 45
Ma boucle (copier-coller) : 30 secondes

Je suis donc 3,5 x plus rapide

L'inconvénient de cette méthode (il y en a peut-être d'autres que j'oublie, il faudrait tester) : s'il y a des cellules liées verticalement, elles ne seront pas restituées correctement. On peut tout de même dire que sur un fichier de données classique, sans mise en forme particulière, on peut utiliser cette méthode en confiance.
 

Pièces jointes

  • Supprimme1Sur2Ti.zip
    17.2 KB · Affichages: 35
E

echane

Guest
merci pour ces reponses !!!

avec le code copier/coller c'est passe de 2 min a 19 s !!
c'est trop fort :)
Ce que je fais doit servir a comparer des genes de singes et d'humain (etude sur le VIH)
c'est loin d'etre fini, mais ca avance, c bien

encore merci !!

+
 
S

STéphane

Guest
bonjour

si tes données sont dans les colonnes A B et C et les étiquettes dans la première ligne, rajoute en D2 1 et 2 en D3, et recopie ces deux cellules juusqu'à la fin.

puis pose un filtre sur le tableau, filtre la 4iè_me colonne avec la valeur 2

sélectionne toutes les lignes visibles et supprime les entièrement

manuellement c'est long
mais en macro c'est peut-être rapide ????,
 

Discussions similaires

Statistiques des forums

Discussions
314 663
Messages
2 111 665
Membres
111 251
dernier inscrit
jpfantin