Sub suppr()
Dim Ltitre, col%
Ltitre = 2 'ligne des titres
With Feuil1.UsedRange 'CodeName de la feuille à adapter
For col = 1 To .Columns.Count
If UCase(.Cells(Ltitre, col)) <> "PERTE" Then .Cells(Ltitre + 1, col).Resize(.Rows.Count - Ltitre).ClearContents
Next
End With
End Sub
Une solution sans boucle donc bien plus rapide s'il y a beaucoup de colonnes :
VB:
Sub suppr()
Dim Ltitre
Ltitre = 2 'ligne des titres
Application.ScreenUpdating = False
With Feuil1.UsedRange 'CodeName de la feuille à adapter
.Rows(Ltitre).Replace "PERTE", "", xlWhole
Intersect(.Offset(Ltitre), .Rows(Ltitre).SpecialCells(xlCellTypeConstants).EntireColumn).ClearContents
.Rows(Ltitre).Replace "", "PERTE"
End With
End Sub
Testé sur un tableau (vide) de 14 400 colonnes :
- macro du post #5 => 1,6 seconde et 0,81 seconde avec Application.ScreenUpdating = False
Sub suppr()
Dim Ltitre, col%
Ltitre = 2 'ligne des titres
With Feuil1.UsedRange 'CodeName de la feuille à adapter
For col = 1 To .Columns.Count
If UCase(.Cells(Ltitre, col)) <> "PERTE" Then .Cells(Ltitre + 1, col).Resize(.Rows.Count - Ltitre).ClearContents
Next
End With
End Sub
Une solution sans boucle donc bien plus rapide s'il y a beaucoup de colonnes :
VB:
Sub suppr()
Dim Ltitre
Ltitre = 2 'ligne des titres
Application.ScreenUpdating = False
With Feuil1.UsedRange 'CodeName de la feuille à adapter
.Rows(Ltitre).Replace "PERTE", "", xlWhole
Intersect(.Offset(Ltitre), .Rows(Ltitre).SpecialCells(xlCellTypeConstants).EntireColumn).ClearContents
.Rows(Ltitre).Replace "", "PERTE"
End With
End Sub
Testé sur un tableau (vide) de 14 400 colonnes :
- macro du post #5 => 1,6 seconde et 0,81 seconde avec Application.ScreenUpdating = False
Une solution sans boucle donc bien plus rapide s'il y a beaucoup de colonnes :
VB:
Sub suppr()
Dim Ltitre
Ltitre = 2 'ligne des titres
Application.ScreenUpdating = False
With Feuil1.UsedRange 'CodeName de la feuille à adapter
.Rows(Ltitre).Replace "PERTE", "", xlWhole
Intersect(.Offset(Ltitre), .Rows(Ltitre).SpecialCells(xlCellTypeConstants).EntireColumn).ClearContents
.Rows(Ltitre).Replace "", "PERTE"
End With
End Sub
Testé sur un tableau (vide) de 14 400 colonnes :
- macro du post #5 => 1,6 seconde et 0,81 seconde avec Application.ScreenUpdating = False