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...
 

Spitnolan08

XLDnaute Barbatruc
Re : Probleme avec SpecialCells...

Bonjour le fil,

Pour ma part je n'ai aucun problème (Mais je suis sur 2003): ça fonctionne avec ou sans activesheet.
Pour TheCat 2007 tu as du recopier le code tel quel, or il y a un espace entre Entire et row qui n'existe pas : retire le et ça devrait fonctionner.

Cordialement
 

Guib's

XLDnaute Nouveau
Re : Probleme avec SpecialCells...

Malheureusement, le rajoute de ActiveSheet devant la ligne de code n'empeche pas le plantage... Ce que je ne comprend pas, c'est que cela marche parfaitement sur mon PC perso mais cela plante sur le PC du bureau...

L'espace s'est mis lors du copier coller mais il n'est bien sur pas présent dans la macro.

Pas d'idée ?...

Merci d'avance !
 

Guib's

XLDnaute Nouveau
Re : Probleme avec SpecialCells...

Je vous joins la macro complète au cas ou cela pourrait aider.

Sub Val_Ref()
x = Array("Val1", "Val2", "Val3", "Val4", "Val5", "Val6")

ActiveSheet.Range("$A$1:$AK$1224").AutoFilter Field:=23
ActiveSheet.Range("$A$1:$AK$1224").AutoFilter Field:=23, Criteria1:="Val"

For i = 0 To 5
ActiveSheet.Range("$A$1:$AK$1224").AutoFilter Field:=24, Criteria1:=x(i)
Range("D:G,K:K,L:L,O:p,U:U,V:V,X:X,AA:AB,AD:AD,AE:AE,N:N").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFilter
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("K2:K2400") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A2:A2400") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("D2:D2400") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A1:N240")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Cells.Replace What:=Chr(10), Replacement:=" - ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
DeleteRowsThatLookEmptyinColD
Range("B1").Select
ActiveCell.FormulaR1C1 = "Fin"
Range("P1").Select
ActiveCell.FormulaR1C1 = "CA"
ActiveWorkbook.SaveAs Filename:= _
"E:\" & x(i) & ".txt" _
, FileFormat:=xlText, CreateBackup:=False
ActiveWorkbook.Close (True)
ActiveSheet.Range("$A$1:$AL$1221").AutoFilter Field:=24
ActiveSheet.Range("$A$1:$AK$1224").AutoFilter Field:=23
Next
End Sub


Je travaille avec Office 2007 sur les deux ordinateurs. Cependant, lorsque je regarde le numéro de version, celui de mon ordinateur personnel semble plus récent que celui du professionnel. Cela aurait-il un impact quelconque ?
 

Spitnolan08

XLDnaute Barbatruc
Re : Probleme avec SpecialCells...

Re,

En fait je pensais, à tout hasard, à un problème de capacité (Sur 2007 il y a beaucoup plus de lignes que sur 2003...) Mais sauf si tes 2 machines disposent de configuration très différente ce ne doit pas être ça.

Cordialement
 

Guib's

XLDnaute Nouveau
Re : Probleme avec SpecialCells...

En effet, j'ai aussi pensé à ça mais mon PC personnel a 4 ans (Intel Centrino, 1Go Ram) et le PC de bureau est un Dell tout récent (Core2 duo 2Go de ram)... donc je ne pense pas que ça puisse venir de la.

Casse tête de folie !

Serais-t-il possible que cela soit lié à la présence d'un antivirus ou un logiciel de protection résident ?
 
T

THE CAT 2007

Guest
Re : Probleme avec SpecialCells...

Re bj,

te proposes de mettre un stop juste avant de partir sur :
DeleteRowsThatLookEmptyinColD

puis suivre le déroulement en mode debug F8

et si on peut voir le code de 'DeleteRowsThatLookEmptyinColD'
 

Guib's

XLDnaute Nouveau
Re : Probleme avec SpecialCells...

Desolé pour DeleteRowsThatLookEmptyinColD, c'était un essai dont le code était :
Sub DeleteRowsThatLookEmptyinColD()
derniereLigne = ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
For r = derniereLigne To 1 Step -1
If IsEmpty(Range("D" & r)) Then Rows(r).Delete
Next r
End Sub

Mais cela ne marche pas non plus.

Tout fonctionne bien jusqu'au stop, mais la suppression des lignes quand la colonne D est vide ne fonctionne pas... J'ai pourtant absolument besoin d'effectuer cette suppression car j'exporte ensuite le classeur en format texte. Sans la suppression des lignes vides, je me retrouve avec des fichiers texte de 2000 lignes dont 1900 sont vides...
 
T

THE CAT 2007

Guest
Re : Probleme avec SpecialCells...

Re bj,

pour la dernière ligne, j'ai une sub où je choisis la colonne à "mesurer" et elle retourne la dernière ligne utilisée de cette colonne ( la sub fonctionne ) :

Sub DerniereLigneDeLaFeuille(colonne, derniereLigneUtilisee)
NbLignes = ActiveSheet.Rows.Count
Select Case TypeName(colonne)
Case "String" 'une lettre A65536
derniereLigneUtilisee = Range(colonne & LTrim(Str(NbLignes))).End(xlUp).Row
Case Else 'un chiffre
derniereLigneUtilisee = Cells(NbLignes, colonne).End(xlUp).Row
End Select
End Sub
 
T

THE CAT 2007

Guest
Re : Probleme avec SpecialCells...

re bj,

une macro qui filtre les vides sur D

Sub Macro1()
Rows("1:1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=4, Criteria1:="=*""""*", Operator:=xlAnd
End Sub

puis effacer cette sélection si le résultat du filtre est correct ...
 

Spitnolan08

XLDnaute Barbatruc
Re : Probleme avec SpecialCells...

Re,
Sans la suppression des lignes vides, je me retrouve avec des fichiers texte de 2000 lignes dont 1900 sont vides...
As tu essayé en utilisant :
Code:
Range("D1:D10000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
qui réduit la plage de recherche.

Sinon tu peux aussi passer par une boucle même si c'est infiniment plus long....

Cordialement
 

Discussions similaires

Réponses
8
Affichages
467
Réponses
2
Affichages
372

Statistiques des forums

Discussions
312 896
Messages
2 093 387
Membres
105 716
dernier inscrit
jrmdprt