Macro fonctionnant sur plusieurs onglets

c.clappier

XLDnaute Nouveau
Bonjour,
J'essaye tant bien que mal de faire tourner la macro suivante sur tous les onglets de mon classeur, mais il y a de toute évidence un problème que je n'arrive pas à résoudre. Elle ne fonctionne que sur le classeur actif.
Any idea ?
Par ailleurs, j'ai l'impression que si elle fonctionne sur tous les onglets, le temps de traitement sera long. Y aurait-il un moyen de l'améliorer ? (en sachant que j'essaye de supprimer toutes les lignes dont la colonne A est vide.

Sub Suppression_lignes()
Dim ws As Worksheet
For Each ws In Worksheets
Columns("a:a").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Next ws
End Sub

Merci beaucoup
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro fonctionnant sur plusieurs onglets

Bonjour Clappier, bonjour le forum,

Peut-être comme ça :
Code:
Sub Suppression_lignes()
Dim ws As Worksheet
Dim pl As Range

For Each ws In Worksheets
    With ws
        Set pl = Application.Intersect(.UsedRange, ws.Columns(1))
        On Error Resume Next
        pl.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
        If Err <> 0 then Err = 0
    End With
Next ws
End Sub
 
Dernière édition:

Paf

XLDnaute Barbatruc
Re : Macro fonctionnant sur plusieurs onglets

Bonjour à tous

Elle ne fonctionne que sur le classeur actif.

C'est normal que le code n'agisse que sur la feuille active puisque le code ne précise pas la feuille où les lignes doivent être supprimées !
il faudrait rajouter:
ws.Columns("a:a").SpecialCells(xlCellTypeBlanks).Enti reRow.Delete

Mais, si une feuille ne comporte aucune ligne, le code "plante".

Bonne suite
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 936
Membres
103 987
dernier inscrit
Doctami