Supprimer les valeurs zéro [EXCEL]

Résolu
iliesss Messages postés 120 Statut Membre -  
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour
J'ai une plage (A1:BA3000) qui contienne que des nombres.
J'ai essayé de supprimer les valeurs zéro avec le code suivant:

Range("A1:ba3000").AutoFilter Field:=3, Criteria1:="0,00"
Range("c2:c3000").SpecialCells(xlCellTypeVisible).ClearContents
Range("A1:ba3000").AutoFilter Field:=3

Mon problème ce que je doit répéter ce code 53 fois et je change que le N° de Field (de 3 au 53) et la range ("c2:c3000") au range ("ba2:ba3000")

Question
SVP comment faire pour réduire ces 53 codes pour supprimer les valeurs zéro.
A voir également:

1 réponse

eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 279
 
Bonjour,

à mettre dans la feuille concernée :
Sub suppZero()     
    Dim c As Range     
    Application.ScreenUpdating = False     
    For Each c In [C2:BA3000]     
        If c = 0 Then c.ClearContents     
    Next c     
    Application.ScreenUpdating = true  
End Sub

On pourrait faire plus rapide mais est-ce que ça vaut le coup...
eric

edit :
en sûrement plus rapide mais je te laisse tester ayant la flemme de construire un classeur.
Sub suppZero()
    Dim f As Long
    Application.ScreenUpdating = False
    For f = 3 To 53
        Range("A1:ba3000").AutoFilter Field:=f, Criteria1:=0
        On Error Resume Next
        [C2].Offset(0, f - 3).Resize(2999, 1).SpecialCells(xlCellTypeVisible).ClearContents
        On Error GoTo 0
        Range("A1:ba3000").AutoFilter
    Next f
    Application.ScreenUpdating = False
End Sub

eric
edit2 : correction du 2nd code
1
iliesss Messages postés 120 Statut Membre
 
salut Mr ERIC
merci beaucoup pour la solution, le deuxième code est rapide que le premier mais les deux codes fonctionnent
merci encore une fois .
0
Lentz
 
Pour le dernier SreenUpdating ... il faut mettre True et non False
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 279
 
Oui, mettre le 2nd à true.
Bonne intervention lentz ;-)
eric
0