Macro masquer les cellules = 0

Bonjour à tous,

Voila étant novice en macro, je voulais savoir comment il était possible de masquer des lignes pour lesquels les cellules se trouvant dans la colonne A sont = à 0.

J'ai commencé mes recherches et j'arrive à cela, cependant je ne sais pas comment intégrer ma condition, car pour le moment j'ai simplement enregistré le masquage des cellules.

Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 18/05/2009 par ST1
'
' Touche de raccourci du clavier: Ctrl+m
'
Range("D2").Select
Sheets(Array("Plan comptable Chateau", "Avril", "Mai", "Juin", "Juillet", "Aout", _
"Septembre", "Octobre", "Novembre", "Decembre", "Janvier", "Fevrier", "Mars")). _
Select
Sheets("Plan comptable Chateau").Activate
ActiveWindow.SmallScroll Down:=10
ActiveWindow.ScrollRow = 67
ActiveWindow.ScrollRow = 69
ActiveWindow.ScrollRow = 70
ActiveWindow.ScrollRow = 72
ActiveWindow.ScrollRow = 75
ActiveWindow.ScrollRow = 77
ActiveWindow.ScrollRow = 80
ActiveWindow.ScrollRow = 82
ActiveWindow.ScrollRow = 85
ActiveWindow.ScrollRow = 88
ActiveWindow.ScrollRow = 90
ActiveWindow.ScrollRow = 92
ActiveWindow.ScrollRow = 94
ActiveWindow.ScrollRow = 96
ActiveWindow.ScrollRow = 98
ActiveWindow.ScrollRow = 100
ActiveWindow.ScrollRow = 103
ActiveWindow.ScrollRow = 106
ActiveWindow.ScrollRow = 109
ActiveWindow.ScrollRow = 112
ActiveWindow.ScrollRow = 115
ActiveWindow.ScrollRow = 116
ActiveWindow.ScrollRow = 120
ActiveWindow.ScrollRow = 122
ActiveWindow.ScrollRow = 123
ActiveWindow.ScrollRow = 124
ActiveWindow.ScrollRow = 126
ActiveWindow.ScrollRow = 128
ActiveWindow.ScrollRow = 130
ActiveWindow.ScrollRow = 131
ActiveWindow.ScrollRow = 133
ActiveWindow.ScrollRow = 134
ActiveWindow.ScrollRow = 136
ActiveWindow.ScrollRow = 139
ActiveWindow.ScrollRow = 142
ActiveWindow.ScrollRow = 145
ActiveWindow.ScrollRow = 146
ActiveWindow.ScrollRow = 149
ActiveWindow.ScrollRow = 152
ActiveWindow.ScrollRow = 154
ActiveWindow.ScrollRow = 155
ActiveWindow.ScrollRow = 156
ActiveWindow.ScrollRow = 157
ActiveWindow.ScrollRow = 156
ActiveWindow.ScrollRow = 155
ActiveWindow.ScrollRow = 154
ActiveWindow.ScrollRow = 152
ActiveWindow.ScrollRow = 151
ActiveWindow.ScrollRow = 149
ActiveWindow.ScrollRow = 148
ActiveWindow.ScrollRow = 146
ActiveWindow.ScrollRow = 145
ActiveWindow.ScrollRow = 144
ActiveWindow.ScrollRow = 143
ActiveWindow.ScrollRow = 142
ActiveWindow.ScrollRow = 141
ActiveWindow.ScrollRow = 140
ActiveWindow.ScrollRow = 139
Range("A174").Select
ActiveWindow.SmallScroll Down:=-34
Rows("150:199").Select
Selection.EntireRow.Hidden = True
End Sub

Si quelqu'un pouvait me conseiller, ça m'aiderait beaucoup.

Merci d'avance à toutes les personnes qui pourront m'aider.

Alex

11 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    bonjour,

    il est préférable qu'il y ait une étiquette (nom de champs) avant tes chiffres
    cette macro parcourt le classeur et ignore les feuilles où il n'y a pas de zéros dans la colonn A

    Sub cacher_zero()
    Dim cptr As Byte, nbre As Byte
    
    Application.ScreenUpdating = False
    nbre = ThisWorkbook.Sheets.Count
      For cptr = 1 To nbre
        Columns("A:A").AutoFilter Field:=1, Criteria1:="<>0"
       Next
    End Sub
    1. Je suis désolé michel_m mais je n'arrive pas a comprendre ta réponse. Je voudrais que ma macro ne fonctionne qu'avec certains onglets : ("Plan comptable Chateau", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre", "Janvier", "Fevrier", "Mars").

      Je suis vraiment débutant en macro, j'essai de comprendre ce que tu m'as envoyé mais malheureusement, je ne comprend pas grand chose. Désolé.

      Merci d'avance,

      Alex
      1. Il y a peut être une petite subtilité en plus, les cellules que l'on retrouve dans l'onglet plan comptable sont reportés dans tous les autres onglets qui sont en fait des balances. Cependant, si j'arrivais a masquer toutes les cellules vides dans l'onglet plan comptable, serait il possible que dans les onglets suivants, les cellules soient masquées également. En espérant avoir été assez clair.

        Merci d'avance,

        Alex
        1. Contributeur
          Sub cacher_zero()
          Dim cptr As Byte
          Dim tablo
          
          tablo = Array("Plan comptable Chateau", "Avril", "Mai", "Juin", "Juillet", "Aout", _
          "Septembre", "Octobre", "Novembre", "Decembre", "Janvier", "Fevrier", "Mars")
          Application.ScreenUpdating = False
          For cptr = 0 To UBound(tablo)
              Sheets(tablo(cptr)).Columns("A:A").AutoFilter Field:=1, Criteria1:="<>0"
          Next
          End Sub


          Rappel:il est préférable qu'il y ait une étiquette (nom de champs) avant tes chiffres
          1. Qu'entends tu par "il est préférable qu'il y ait une étiquette (nom de champs) avant tes chiffres", je ne vois pas ce que tu veux dire. La macro que tu m'as donné est a modifier ou elle est censée fonctionner ?
            1. Contributeur
              par exemple, en A1, l'indication "numéro de compte"

              la macro va installer dans la colonne A dechacune de tes feuilles, un filtre masquant les valeurs=0
              mais le filtre va s'installer dans la première cellule où il y a quelque chose d'écrit

              regarde cette petite démo:
              https://www.cjoint.com/?fsodGss0T6

              je m'apercois d'un petit bug dans ma macro donc voici le dernier jus:

              Sub cacher_zero()
              Dim cptr As Byte
              Dim tablo
              
              tablo = Array("Plan comptable Chateau", "Avril", "Mai", "Juin", "Juillet", "Aout", _
              "Septembre", "Octobre", "Novembre", "Decembre", "Janvier", "Fevrier", "Mars")
              Application.ScreenUpdating = False
              For cptr = 0 To UBound(tablo)-1
                  Sheets(tablo(cptr)).Columns("A:A").AutoFilter Field:=1, Criteria1:="<>0"
              Next
              End Sub


              c'est à copier-coller dans VBE( Alt+F11 insertion - module)
              1. Merci pour cette macro michel_m, mais je me suis rendu compte que le mieux serait de masquer toutes les lignes dont les cellules colonnes E = 0.

                Dois je juste changer Columns("A:A") en Columns("E:E") ? Ou il y a t il autre chose a changer ?
                1. A quoi correspond cette ligne : For cptr = 0 To UBound(tablo) - 1 ?

                  Il me lance le débogueur et me surligne cette ligne en jaune !!
                  1. Finalement, j'ai réussi en enlevant le -1 à la fin de la ligne.

                    J'ai un autre problème de macro mais cela concerne une macro couleur, faut il que je repose une autre question ? Ou peux tu m'aider sur ce post.

                    En gros, je voudrais faire une macro qui colore le texte d'une partie d'une colonne en rouge, si le résultat de la colonne n'est pas égal à une valeur d'une autre feuille.

                    En fait je voudrais que si D138 (feuille recap_bal) est différent de E199 (feuille avril) alors colorer les cellules allant de D6 à D137.

                    Ou alors si c'est plus simple de colorer seulement la cellule D138.

                    Merci d'avance,

                    Alex
                    1. Contributeur
                      Repose la question sur un autrre post
                      Merci; excuses moi pour le 61 (c'est lundi)
                      tagges "résolu"