Amélioration suppression ligne

Snoop

XLDnaute Occasionnel
Bonjour le forum et tout le monde,

J'ai un code pour supprimer les lignes vides et non numérique, qui est pratique sur quelque ligne mais pour travailler sur 40000lignes il est trés lent...

Je ne sais pas comment faire pour passer par les tables si quelqu'un peu m'aider !!! Merci d'avance :)

ci dessous le code !!

Range("g64000").Select
Range(Selection, Selection.End(xlUp)).Select
y = ActiveCell.Row 'Pour avoir la dernière ligne

For x = y To 1 Step -1
If Not IsNumeric(Range("b" & x)) Then Rows(x).Delete
If IsEmpty(Range("b" & x)) Then Rows(x).Delete
Next
 

jeanpierre

Nous a quitté
Repose en paix
Re : Amélioration suppression ligne

Bonjour Snoop,

Je viens de regarder ton code, il est peut-être possible de faire mieux (peu), mais pour une image, il est plus rapide de faire 100 mètres que 40 kilomètres....

Ce n'est pas le code qui est lent, mais le boulot à faire qui est long....

De plus si l'ordi est quelque peu faible....

C'est tout de même plus rapide qu'à la main...

Bonne patience, et week-end.

Jean-Pierre
 

Snoop

XLDnaute Occasionnel
Re : Amélioration suppression ligne

Re,

Oui je sais que cela est deja pas mal, mais je voudrais quand même l'améliorer, plus pour apprendre que gagner du temps

J'ai vu sur le forum des codes de suppression en passant par des tables, j'ai essayer mais pas du tout reussi.

Donc si quelqu'un pouvais me donner une solus, cela serait bien , merci
 

patte d'ours

XLDnaute Occasionnel
Re : Amélioration suppression ligne

Bonsoir Snoop, Bonsoir JeanPierre

AS-tu pensé à bloquer le calcul automatique qui sur ce genre d'opération ralentit considérablement le système?

Autre possibilité : tu tries préalablement tes données, ce qui te permets de ne pas balayer l'ensemble des lignes, notamment pour les cellules vides.

3ème essai à faire: tu ne supprimes pas la ligne, tu la vides (clearcontents). Ensuite tu sélectionnes toutes tes lignes, de la 1ère à la dernière utile et tu les tries.

Dis-nous ce que tout cela donne.
 

Excel_lent

XLDnaute Impliqué
Re : Amélioration suppression ligne

Bonsoir Snoop, JeanPierre, Patte d'ours,
re à tous et aux autres,

Le fichier est limité (poids oblige) mais la macro peut être très efficace*.
Teste la sur une copie de ton fichier et dis nous.

*Si ta plage contient des formules, bloque le calcul automatique comme te le conseille patte d'ours.

complément : Le tableau original est en feuille2, avec une colonne de 1 pour neutraliser le tri. La plage est nommée.
 

Pièces jointes

  • TabloPlein E.zip
    12.5 KB · Affichages: 31
Dernière édition:

Bebere

XLDnaute Barbatruc
Re : Amélioration suppression ligne

bonsoir le fil
une procédure à adapter

Sub RowsDelete()
Dim Sh As Worksheet
Dim rng2 As Range

With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.DisplayAlerts = False
End With
Set Sh = Sheets("Base")

If Not Sh.AutoFilterMode Then
Sh.Range("A1").AutoFilter
End If

Sh.Range("A1").AutoFilter Field:=7, Criteria1:="=" 'supprime si vide

On Error Resume Next
Set rng2 = Sh.Range("F1").Offset(1, 0).Resize(Sh.Rows.Count - 1, 1) _
.SpecialCells(xlCellTypeVisible)
On Error GoTo 0

rng2.EntireRow.Delete

Sh.Range("A1").AutoFilter Field:=7, Criteria1:="=0"'supprime si 0

On Error Resume Next
Set rng2 = Sh.Range("F1").Offset(1, 0).Resize(Sh.Rows.Count - 1, 1) _
.SpecialCells(xlCellTypeVisible)
On Error GoTo 0

rng2.EntireRow.Delete

Sh.AutoFilterMode = False

With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
' .DisplayAlerts = True
End With

End Sub

à bientôt
 

Snoop

XLDnaute Occasionnel
Re : Amélioration suppression ligne

Bonjour a tous et bonne Année.

Désolé de ne pas avoir repondu plus tôt mais vacance (et donc pas de net !)

Merci pour vos reponses :

Patte d'ours : la feuille ne contient aucune forme de calcul se n'est que de la donné, de plus il m'est impossible de trié car sinon je mélange mes lignes et impossible de remettre dans l'ordre
Pour le clearcontent (cela prend moins de tps qu'un delete ?)


Sinon je suis en train de tester chacune de vos solutions et je vous dis...

merci encore et tous mes voeux pour cette année !
 

Snoop

XLDnaute Occasionnel
Re : Amélioration suppression ligne

Je viens de tester le code de Berbere et j'ai une erreur :

91 - variable objet ou variable de bloc with non definie

sur la ligne

rng2.entirerow.delete

je pense peut etre qu'il y a trop de donnée (48000 lignes)



je continue de tester l'autre code !
 

Snoop

XLDnaute Occasionnel
Re : Amélioration suppression ligne

Re,

Je suis sur le code de Excel_lent, mais j'ai un peu de mal à comprendre le code en complet, car il par du range a1 en tps que tableau et je ne vois pas comment agrandir le nombre de ligne.
 

Snoop

XLDnaute Occasionnel
Re : Amélioration suppression ligne

merci, mais j'ai toujours le soucis, en faite il me faut tester juste une colonne et non toutes car j'ai des colonnes semi vide ....
Je teste par exemple la 1er colonne et non toutes les colonnes sinon je ne ramene aucune valeur.
 

Bebere

XLDnaute Barbatruc
Re : Amélioration suppression ligne

bonjour Snoop,Excel_lent
ajout input box pour choix colonne
à bientôt
 

Pièces jointes

  • TabloPleinE.xls
    40.5 KB · Affichages: 37
  • TabloPleinE.xls
    40.5 KB · Affichages: 46
  • TabloPleinE.xls
    40.5 KB · Affichages: 38

Snoop

XLDnaute Occasionnel
Re : Amélioration suppression ligne

Re,

Je cherche un gain de tps mais mon temps de reponse est vraiment à revoir....

Je viens de tester sur mes 46000 lignes et en lui indiquant la colonne, en faite du fait que l'on supprime ligne par ligne, les temps sont identique à ma première methode.

Merci en tout cas d'avoir changer le code.

si une autre idée je suis toujours preneur :eek:) :eek:
 

Snoop

XLDnaute Occasionnel
Re : Amélioration suppression ligne

Bonjour,

Super, c'est tout à fait cela, on passe de 252 secondes à 5 secondes...sur mes 47000 lignes, .:eek:, merci Excalibur.... :D

et en plus je pense avoir presque compris le code, a part, la fin :

Range("a1").Resize(UBound(tablo2, 2), UBound(tablo2, 1)) = Application.Transpose(tablo2)

Merci à tout le monde (et le forum) pour votre aide !
 

Discussions similaires

Réponses
5
Affichages
274
Réponses
2
Affichages
172

Statistiques des forums

Discussions
312 416
Messages
2 088 245
Membres
103 784
dernier inscrit
Métro-logue