Probleme avec SpecialCells...

Guib's

XLDnaute Nouveau
Bonjour à tous,

J'utilise la ligne de code :
Columns("D").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

Elle me permet de supprimer toutes les lignes où la colonne D est vide. Voila mon problème : lorsque je l'exécute sur mon PC personnel, la macro fonctionne sans aucun problème. Par contre, sur le PC professionnel dont je dispose par la boite où je travaille, Excel plante et je n'arrive pas à faire fonctionner cette macro.

Y-a-t-il une DLL ou une commande spéciale à régler afin de faire fonctionner la macro sur les deux ordinateurs ?

En vous remerciant grandement par avance...
 

Guib's

XLDnaute Nouveau
Re : Probleme avec SpecialCells...

J'ai essayé la ligne
Range("D1:D10000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

Cela fonctionne mais mon fichier texte possède toujours un nombre incalculable de lignes vides. En effet, un style de cellules est appliqué à certaines colonnes jusqu'à l'infini et cela dépasse donc la ligne 10000.

J'ai également essayé la macro séléctionnant les lignes vides mais elle ne fonctionne pas : il n'y a que la première ligne qui est sélectionnée par la macro...

Ce que je ne comprend pas, c'est que l'opération soit aussi longue sur un PC de 4 ans plus récent que le mien...
 

Guib's

XLDnaute Nouveau
Re : Probleme avec SpecialCells...

Afin de contourner le problème, serait-il possible de réaliser une macro ne sélectionnant que les lignes pour lesquelles la colonne D est remplie, plutôt que de supprimer les lignes ou la colonne D est vide ?
 

Spitnolan08

XLDnaute Barbatruc
Re : Probleme avec SpecialCells...

Re
Ce que je ne comprend pas, c'est que l'opération soit aussi longue sur un PC de 4 ans plus récent que le mien...
Pour ça , je n'en sais rien...

Mais si la dernière formulation fonctionne sur ton PC de bureau, pourquoi ne pas l'appliquer en divisant le nombre de lignes d'une feuille Excel en 2, 3 4 ou plus de parties pour que ça fonctionne sur l'ensemble de la feuille (Je ne sais plus combien il y a de lignes sur 2007 mais tu peux par exemple faire, pour 1 000 000 lignes :
Code:
 Range("D1:D50000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Range("D500000:D1000000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Si ça passe le tour est joué et tu auras tout le temps de trouver la raison du dysfonctionnement à tête reposée...

Cordialement
 

Guib's

XLDnaute Nouveau
Re : Probleme avec SpecialCells...

Je suis vraiment desolé mais la methode ne fonctionne malheureusement pas...

Qu'en est-t-il de mon idée d'inverser le problème et de plutot sélectionner les lignes pour lesquelles la colonne D n'est pas vide ?
 

Spitnolan08

XLDnaute Barbatruc
Re : Probleme avec SpecialCells...

Re,
Qu'en est-t-il de mon idée d'inverser le problème et de plutot sélectionner les lignes pour lesquelles la colonne D n'est pas vide ?
Elle me semble mauvaise car ce sont les autres lignes qui t'intéressent... et qu'il te faut faire sauter si D est vide... donc cela reviendrait à boucler : fastidieux...

Cependant je ne comprends pas qu'un découpage ne fonctionne pas ... As tu essayé de t'arrêter avant la dernière ligne ? As tu essayé des portions plus petites ? As tu....

Cordialement
 

Spitnolan08

XLDnaute Barbatruc
Re : Probleme avec SpecialCells...

Re,

J 'ai pensé à une autre approche. Je te propose une solution peu élégante mais qui peut, peut être, résoudre ton pb en désespoir de cause, pour des données situées en colonnes A à E : :
Code:
Sub MacroDelVide()
    Dim DerLig As Long
    DerLig = Range("A" & Rows.Count).End(xlUp).Row
    Range("A1:E" & DerLig).Select
    Selection.AutoFilter Field:=4, Criteria1:="<>"
    Selection.Copy Destination:=Range("A" & DerLig + 1)
    ActiveSheet.ShowAllData
    Range("A1:E" & DerLig).EntireRow.Delete
End Sub
Cordialement
 

Guib's

XLDnaute Nouveau
Re : Probleme avec SpecialCells...

Merci de ta réponse. Je vais tout de suite essayer ta macro.

Pour éclaircissement, j'ai réalisé une macro supprimant les lignes ou la colonne D est vide car la colonne D est justement toujours remplie quelque soit la ligne. Je l'ai donc utilisé comme point de repère pour faire sauter toutes les lignes ou D est vide puisqu'elle correspondent à la fin du tableau.

De ce fait, j'avais pensé sélectionner l'ensemble des lignes ou D est remplie puisqu'elles correspondent bien aux données que je souhaite exporter.


Est-ce plus clair ? :)
 
T

THE CAT 2007

Guest
Re : Probleme avec SpecialCells...

Re bj à tous,

code D non vide :

Selection.AutoFilter
Selection.AutoFilter Field:=4, Criteria1:="<>"

figurant déjà dans la macro de Spitnolan08 de 21h50 ...

Pas mieux .... :-(
 

Discussions similaires

Statistiques des forums

Discussions
313 769
Messages
2 102 234
Membres
108 181
dernier inscrit
Chr1sD