Excel VBA

Bonjour,

L'année dernière je voulais un petit programme VBA qui me permette de masquer/afficher les lignes vides. Problème résolu et cela fonctionne très bien
Mais voilà, en ajoutant mon nouvel onglet "2014", le petit programme ne fonctionne plus sur le nouvel onglet. J'ai essayé de changer le document "mère", mais cela ne fonctionne toujours pas.
N'étant pas très douée en programmation (je débute par rapport à des livres) quelqu'un peut il me donner la formule magique pour que chaque nouvel onglet prenne en compte ce programme
Merci beaucoup.

https://www.cjoint.com/?3Gill2c9XUH

6 réponses

  1. Désoler j'ai pas accès a ton fichier là ou je suis est-ce que c'est possible de nous transmettre directement dans un balise
    <code basic>
    ?
    0
    1. Bonjour

      Modification de ta macro

      Option Explicit
      
      'Const NF = "2013"
      Const coope = 2
      Const codeb = 3
      Const lideb = 4
      
      Public Sub Masquer()
      Dim li As Long, lifin As Long, s, co As Long
      Application.ScreenUpdating = False
      'With Sheets(NF)
        lifin = Cells(Rows.Count, coope).End(xlUp).Row
        For li = lideb To lifin
          s = ""
          For co = codeb To codeb + 11
            s = s & Cells(li, co)
          Next co
          If s = "" Then Rows(li).Hidden = True
        Next li
      'End With
      End Sub
      
      Public Sub Afficher()
      'With Sheets(NF)
        Rows(1 & ":" & 1000).Hidden = False
      'End With
      Application.ScreenUpdating = True
      End Sub


      A+
      Maurice
      0
      1. Bonjour

        Tu cliques sur Développeur ensuite sur Visual Basic
        A la place de 2013 tu mets 2014 et retourne dans ta feuille excel en cliquant sur l'icone excel qui se trouve au-dessus de VBAProjet
        Cordialement
        0
        1. Merci à jc80, ça fonctionne pour l'onglet 2014 mais plus sur l'onglet 2013
          Il n'y a pas possiblité de concerver ce programme sur les anciens onglets ?
          0
          1. Je ne sais pas ce que c'est un balise
            0
            1. Contributeur
              Bonjour,

              Plus qu'un seul code dans ThisWorkbook.
              Si tu double-cliques en C3 (Janvier) et que A1 de la feuille commence par "Année " tu filtres/défiltres la feuille.
              Tu peux donc ajouter autant de feuille que tu veux, en plus j'ai modifié un peu le code ce sera plus rapide.
              Const coope = 2
              Const codeb = 3
              Const lideb = 4
              
              Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
                  Static bAff As Boolean
                  Dim li As Long, lifin As Long
                  If Left(Sh.[A1], 6) <> "Année " Then Exit Sub
                  Cancel = True
                  bAff = Not bAff
                  Application.ScreenUpdating = False
                  With Sh
                      If Not bAff Then
                          .Rows.Hidden = False
                      Else
                          lifin = .Cells(Rows.Count, coope).End(xlUp).Row
                          For li = lideb To lifin
                              If Application.CountA(Cells(li, codeb).Resize(, 12)) = 0 Then .Rows(li).Hidden = True
                          Next li
                      End If
                  End With
                  Application.ScreenUpdating = True
              End Sub

              https://www.cjoint.com/?DGimHVFM789

              eric

              En essayant continuellement, on finit par réussir.
              Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
              En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
              1
              1. C'est super, comment faites vous cela ?
                Je ne vois plus ma macro ?
                0
              2. Contributeur
                bis repetita : Plus qu'un seul code dans ThisWorkbook.
                eric
                0