Cacher des lignes sous conditions

Résolu
celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -  
f894009 Messages postés 17277 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

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > 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
celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
='Ma feuille de calcul'!E7
0
celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
Pour la cellule B19
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > 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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
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
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > 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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour michel_m
Range("B19:B46").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True


Marche pas avec des cellules avec formule!!!
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314 > 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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > 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
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > celine31190 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

Ok, ca roule. Bonne continuation
0