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. 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
  2. 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