Supprimer les valeurs zéro [EXCEL]

Résolu/Fermé
iliesss Messages postés 113 Date d'inscription mardi 14 septembre 2010 Statut Membre Dernière intervention 26 octobre 2014 - 26 sept. 2011 à 12:33
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 26 sept. 2011 à 16:15
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 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 26/09/2011 à 13:30
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 113 Date d'inscription mardi 14 septembre 2010 Statut Membre Dernière intervention 26 octobre 2014
26 sept. 2011 à 15:18
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
Pour le dernier SreenUpdating ... il faut mettre True et non False
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
26 sept. 2011 à 16:15
Oui, mettre le 2nd à true.
Bonne intervention lentz ;-)
eric
0