Cacher des lignes sous conditions

Résolu
celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Et merci d'avance pour votre aide.

J'aimerais avoir des lignes cacher sous certaines conditions tel que si ma cellule B19 est vide alors elle est masquée mais si c'est rempli alors elle est visible
De même pour mes lignes de 19 à 46 avec toujours mes cellules B"" qui sont la condition.

J'aimerais également que le code se fasse automatiquement a chaque fois que je clique sur l'onglet de ma feuille car les données sont saisies ailleurs.

Merci pour votre aide

3 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    code a mettre dans la fenetre VBA de la feuille:

    Private Sub Worksheet_Activate()
        Dim x As Byte
        
        For x = 19 To 46
            If Cells(x, 2) = "" Then
                Rows(x).EntireRow.Hidden = True     'masque
            Else
                Rows(x).EntireRow.Hidden = False    'affiche
            End If
        Next x
    End Sub
    
    1
    1. celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonjour, ça ne marche pas, ça ne fait rien du tout, peut être parce que mes cellules B19, B20 etc contiennent des formules ?
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      Re,

      j'ai fait ce code sur des cellules avec formules, montrez une des formules
      0
    3. celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      ='Ma feuille de calcul'!E7
      0
    4. celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      Pour la cellule B19
      0
    5. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      Re

      essayez comme ceci:

      =SI('Ma feuille de calcul'!E7<>"";'Ma feuille de calcul'!E7;"")
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    Macro à copier coller dans le module feuille concernée
    se déclenche lorsqu'on active la feuille

    Option Explicit
    '---------------------------
    Private Sub Worksheet_Activate()
    On Error Resume Next
    Range("B19:B46").EntireRow.Hidden = False
    Range("B19:B46").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
    End Sub

    1
    1. celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci celle là c'est dejà fait :) mais c'est gentil quand même
      0
    2. celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      J'ai besoin de ça maintenant :
      Quand G6 est vide ou =0, les lignes de 8 à 14 sont cachées
      Quand G17 est vide ou =0, les lignes de 16 à 22 sont cachées
      Quand G25 est vide ou =0, les lignes de 24 à 30 sont cachées
      Quand G33 est vide ou =0, les lignes 32 à 38 sont cachées.

      Sachant que le code de ma feuille est ça :

      Private Sub Worksheet_Activate()
      Dim x As Byte
      For x = 43 To 162
      If Cells(x, 2) = "" Or Cells(x, 2) = 0 Then
      Rows(x).EntireRow.Hidden = True 'masque
      Else
      Rows(x).EntireRow.Hidden = False 'affiche
      End If
      Next x
      End Sub


      Merci d'avance
      0
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      Re,

      Private Sub Worksheet_Activate()
          Dim x As Byte
          
          'Quand G6 est vide ou =0, les lignes de 8 à 14 sont cachées
          If Cells(6, 7) = "" Or Cells(6, 7) = 0 Then
              Rows(6).EntireRow.Hidden = True     'masque
          Else
              Rows(6).EntireRow.Hidden = False    'affiche
          End If
          'Quand G17 est vide ou =0, les lignes de 16 à 22 sont cachées
          If Cells(17, 7) = "" Or Cells(17, 7) = 0 Then
              Rows(17).EntireRow.Hidden = True     'masque
          Else
              Rows(17).EntireRow.Hidden = False    'affiche
          End If
          'Quand G25 est vide ou =0, les lignes de 24 à 30 sont cachées
          If Cells(25, 7) = "" Or Cells(25, 7) = 0 Then
              Rows(25).EntireRow.Hidden = True     'masque
          Else
              Rows(25).EntireRow.Hidden = False    'affiche
          End If
          'Quand G33 est vide ou =0, les lignes 32 à 38 sont cachées.
          If Cells(33, 7) = "" Or Cells(33, 7) = 0 Then
              Rows(33).EntireRow.Hidden = True     'masque
          Else
              Rows(33).EntireRow.Hidden = False    'affiche
          End If
          'B43 a B162
          For x = 43 To 162
              If Cells(x, 2) = "" Or Cells(x, 2) = 0 Then
                  Rows(x).EntireRow.Hidden = True     'masque
              Else
                  Rows(x).EntireRow.Hidden = False    'affiche
              End If
          Next x
      End Sub
      0
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour michel_m
      Range("B19:B46").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True


      Marche pas avec des cellules avec formule!!!
      0
    5. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      Désolé je n'avais pas vu les précédents dialogues
      0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Devais etre un dans le gaz hier soir, code corrige:

    Private Sub Worksheet_Activate()
        Dim x As Byte
        
        'Quand G6 est vide ou =0, les lignes de 8 à 14 sont cachées
        If Cells(6, 7) = "" Or Cells(6, 7) = 0 Then
            Rows("8:14").EntireRow.Hidden = True     'masque
        Else
            Rows("8:14").EntireRow.Hidden = False    'affiche
        End If
        'Quand G17 est vide ou =0, les lignes de 16 à 22 sont cachées
        If Cells(17, 7) = "" Or Cells(17, 7) = 0 Then
            Rows("16:22").EntireRow.Hidden = True     'masque
        Else
            Rows("16:22").EntireRow.Hidden = False    'affiche
        End If
        'Quand G25 est vide ou =0, les lignes de 24 à 30 sont cachées
        If Cells(25, 7) = "" Or Cells(25, 7) = 0 Then
            Rows("24:30").EntireRow.Hidden = True     'masque
        Else
            Rows("24:30").EntireRow.Hidden = False    'affiche
        End If
        'Quand G33 est vide ou =0, les lignes 32 à 38 sont cachées.
        If Cells(33, 7) = "" Or Cells(33, 7) = 0 Then
            Rows("32:38").EntireRow.Hidden = True     'masque
        Else
            Rows("32:38").EntireRow.Hidden = False    'affiche
        End If
        'B43 a B162
        For x = 43 To 162
            If Cells(x, 2) = "" Or Cells(x, 2) = 0 Then
                Rows(x).EntireRow.Hidden = True     'masque
            Else
                Rows(x).EntireRow.Hidden = False    'affiche
            End If
        Next x
    End Sub
    
    0
    1. celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonjour, F894009, j'ai essayé le code et ça me marque : Erreur compilation
      Nom ambiguë : Worksheet_Activate
      0
      1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
         
        Re,

        Vous avez peut-etre deux fois la meme procedure ou ligne
        Private Sub Worksheet_Activate()
        0
    2. celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      Oui c'était bien ça, j'avais oublier de supprimer l'ancienne procédure, du coup ça marche, merci beaucoup pour votre aide
      0
      1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
         
        Re,

        Ok, ca roule. Bonne continuation
        0