Suppression de lignes vides

orphelion

XLDnaute Occasionnel
Bonjour,
ma question parait vraiment basique (elle l'est sans aucun doute) mais je n'arrive pas a supprimer deux lignes dans mon classeur et je ne comprends bien evidemment pas pourquoi.
supprimer duplicas ne fonctionne pas pour ces deux lignes...
j'ai essaye le code suivant mais il ne les supprime pas non plus..


Code:
Sub DeleteBlankRows1()

'Deletes the entire row within the selection if the ENTIRE row contains no data.



Dim i As Long
    
    With Application

        .Calculation = xlCalculationManual

        .ScreenUpdating = False

    'We work backwards because we are deleting rows.

    For i = Selection.Rows.Count To 1 Step -1
        If WorksheetFunction.CountA(Selection.Rows(i)) = 0 Then
            Selection.Rows(i).EntireRow.Delete
        End If
    Next i
        .Calculation = xlCalculationAutomatic

        .ScreenUpdating = True

    End With

End Sub

Est ce que quelqu'un aurait une solution? :)

merci d'avance!
 

Pièces jointes

  • Files Example for internal results.zip
    41.9 KB · Affichages: 56

Modeste

XLDnaute Barbatruc
Re : Suppression de lignes vides

Bonjour orphelion,

Si tu écris
Selection.Rows.Count
... et que tu n'as rien sélectionné au préalable, la sélection ne doit pas inclure beaucoup de lignes ... Mais est-ce là le problème?
Il faudrait préciser ce que tu veux faire (notamment avec les lignes de 136 à 502: ce sont celles-là que tu voudrais supprimer?) Tu parles de 2 lignes à supprimer ... Lesquelles??
 

mécano41

XLDnaute Accro
Re : Suppression de lignes vides

Bonjour,

... je ne vois pas bien ton problème...

- je prends ton fichier tel quel
- j'ajoute des lignes vierges à divers endroits
- je sélectionne une plage qui m'intéresse, contenant des lignes vierges
- je lance le code du module 9 par F5
- toutes les lignes vierges contenues dans la plage sélectionnée sont supprimées

c'est bien ce que tu veux?

Pour info, je suis en EXCEL 2002

Cordialement
 

mécano41

XLDnaute Accro
Re : Suppression de lignes vides

J'ai regardé à nouveau ... a priori, le problème est tout bête ! je n'ai par cherché où, mais il doit y avoir une ou plusieurs infos dans les lignes dites vierges de 136 à 502 car, si l'on sélectionne ces lignes et que l'on fait Supp pour supprimer un éventuel contenu, ces lignes sont ensuite bien supprimées par ton code... Tu dois avoir fait une manip. qui a inscrit quelque chose dans une colonne quelconque...

EDIT : bizarre quand même car j'ai fait un bout de code qui recherche ce qui pourrait être dans les cellules "vierges" et il ne trouve rien....

Cordialement
 
Dernière édition:

orphelion

XLDnaute Occasionnel
Re : Suppression de lignes vides

Bonjour merci pour vos reponses .

en fait j'ai laisse la feuille tel quel pour que vous voyez le pb dans son injtegralite.
je fais la commande remove duplicate. basiquement un enregistrement de la commande supprimer duplicas.
cette commande doit etre enchainer par changement de date (3. Format Date)
cette commande fait une erreur car malgre la macro "2. remove blanks & duplicate" il me reste deux lignes blanches numeros 132 133. je ne comprends pas pourquoi ces deux lignes sont conservees...
c'est la le veritable point de ma question.
desole de ne pas avoir ete plus clair au depart.
merci encore pour votre aide
 

Si...

XLDnaute Barbatruc
Re : Suppression de lignes vides

Salut

Problème des cellules vides ou pas !
En A365, =NBVAL(A366:M366) retourne 11 bien que les cellules correspondantes semblent "vierges" !
Teste
Code:
...
For i = Selection.Rows.Count To 1 Step -1
    If .CountBlank(Rows(i)) = 256 Then Rows(i).EntireRow.Delete
Next i
...
 

orphelion

XLDnaute Occasionnel
Re : Suppression de lignes vides

Tout a fait d'accord. je n'avais pas fait ce test mais cela explique pourquoi lkes lignes ne sont pas supprimer..
Par contre je ne sais ou sont les valeurs je n'ai rien dans les cellules....
j'aimerai mettre toutes ces macros les unes a la suite des autres. Comprendre ou sont ces chiffres serait plus qu'utile.
Merci
 

Efgé

XLDnaute Barbatruc
Re : Suppression de lignes vides

Bonjour a tous, au fil, au forum
Je n'ai pas pu aouvrir l'exemple pour cause de 2003.(le nom de la feuille sera à modifier)
Une proposition :
VB:
Sub AA()
Dim TabData(), TabReport(), i&, j&, k&, Cpt&
TabData = Sheets("Feuil1").UsedRange.Value
ReDim TabReport(1 To UBound(TabData, 1), 1 To UBound(TabData, 2))
k = 1
For i = 1 To UBound(TabData, 1)
    For j = 1 To UBound(TabData, 2)
        TabReport(k, j) = TabData(i, j)
        'If Not IsError(TabData(i, j)) Then ' A mettre si des formules sont en erreurs
            If TabData(i, j) <> "" Then Cpt = Cpt + 1
        'End If ' A mettre si des formules sont en erreurs
    Next j
    If Cpt <> 0 Then k = k + 1
    Cpt = 0
Next i
With Sheets("Feuil1")
    .UsedRange.ClearContents
    .Cells(1, 1).Resize(UBound(TabReport, 1), UBound(TabReport, 2)) = TabReport
End With
End Sub
Cordialement
 

orphelion

XLDnaute Occasionnel
Re : Suppression de lignes vides

Efge ta macro est interessante mais malheureusement ne fait pas excactement ce que souhaite..
elles supprime plus de ligne que je ne le souhaite ie les lignes 132 et 133 seulement dans mon exemple.
et elle change le format de ma premiere colonne egalement.
Je ne comprends psa tout a fait comment elle fonctionne...
 

orphelion

XLDnaute Occasionnel
Re : Suppression de lignes vides

Bonjour a tous,

une solution possible, mais que je n'arrive pas a ecreire pourrait etre de faire compter le nombre de cellules entre A et M sur chaque lignes et si ce nombre ne correspond pas a 11 supprimer cette ligne. Puisque'a priori les lignes 132-133 n'affiche pas 11 lorsqu'on les selectionne ca decrait fonctionner et pouvoir se repeter dans les prochains fichiers utilisant les precedentes macro

J'ai commence avec le code suivant mais ca ne fonctionne pas ... :s
Code:
Sub Nettoie()
Dim mycount As Long
Dim I As Long
For I = Selection.Rows.Count To 2 Step -1
mycount = Application.WorksheetFunction.CountA(Range("A(I):M(I)"))
If mycount = 11 Then Rows(I).Delete = False Else Rows(I).Delete = True

Next I
End Sub

merci d'avance
 

orphelion

XLDnaute Occasionnel
Re : Suppression de lignes vides

Bonjour Stample1600,
ca faisait longtemps :)

merci pour la rectification, j'ai fait du Matlab (un peu) et je ne savais pas comment ecrire cette ligne.
enfin je ne sais pas comment ecrire la suivante non plus pour etre honnete ^^
Code:
Sub Nettoie()
Dim mycount As Long
Dim I As Long
For I = Selection.Rows.Count To 2 Step -1
mycount = Application.WorksheetFunction.CountA(Range("A" & I & ":M" & I))
If mycount = 11 Then Rows ("") & I.Delete = False Else Rows ("") & I.Delete = True

Next I
End Sub


J'ai attache mon fichier pour etre plus clair si necessaire.

Merci!
 

Pièces jointes

  • Commande Nettoie.xlsm
    43.8 KB · Affichages: 82

Si...

XLDnaute Barbatruc
Re : Suppression de lignes vides

Re

Tu aurais pu pousser le test plus loin en comparant, dans le fichier joint,
=NB.VIDE(A136:A136) et =NBVAL(A136:A136) !

Pourquoi ne veux-tu pas passer par CountBlank ?
As-tu essayé de compléter ta macro ainsi ?
Code:
Sub RemoveBlanks_And_Duplicates()
   ActiveSheet.Range("$A$1:$M$14930").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, _
        6, 7, 8, 9, 10, 11, 12, 13), Header:=xlNo
   Dim I As Long
   For I = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
    If Application.CountBlank(Range("A" & I & ":M" & I)) = 13 Then Rows(I).Delete
   Next I
End Sub

On peut remplacer Range("A" & I & ":M" & I) par Rows(I), mais il faut remplacer 13 (nombre de colonnes de A à M) par le nombre de colonnes défini dans la version (j'avais mis 256 pour la mienne, pour 2010 ce serait 16384).

Remarque : le code de Efgé ;) ne supprime pas des lignes mais copie des valeurs donc les anciens formats sont conservés.

Tout a fait d'accord. je n'avais pas fait ce test mais cela explique pourquoi lkes lignes ne sont pas supprimer..
Par contre je ne sais ou sont les valeurs je n'ai rien dans les cellules....
... Comprendre ou sont ces chiffres serait plus qu'utile.
Merci
Maintenant, Si... tu tiens vraiment à savoir pourquoi tes cellules qui semblent vides ne le sont pas, ce sera sans moi car, chercher comment EXCEL traite les cellules en mémoire, c'est un autre problème !
 

Discussions similaires

Réponses
6
Affichages
343

Statistiques des forums

Discussions
312 493
Messages
2 088 955
Membres
103 989
dernier inscrit
jralonso