Masquer une ligne en fonction du résultat d'une cellule d'une autre feuille

Bonjour,

je suis novice sur le VBA. j'arrive à me débrouiller avec votre forum pour avancer, cependant là je bloque.

J'ai un classeur composé dans un premier temps de deux feuilles. Sur une, je mats des valeurs ( 0 ou 1 ) en manuel, dans la colonne N, et cela de N15 jusqu'a N490. Je voudrais que les lignes de la deuxième feuille se masquent lorsque les cellules ( de N15 à N490 ) sont à zéro.

Pour info les lignes de la seconde feuille sont incrémenter de la même manière. ( la cellule N15 de la première feuille correspond à la ligne 15 de la seconde)

Puis dans un second classeur, même problématique mais avec deux feuilles ou il faudra masquer les lignes ( toujours avec les mêmes correspondances )

merci de votre aide

Bilou

Bonjour,

Très bien pour les explications ! mais explications + fichier joint serait encore mieux !

Cordialement.

et voilà

merci de ton aide

14essai.xlsm (296.79 Ko)

Essaie donc :

Sub Macro1()
    Dim c As Range, wsS As Worksheet
    Set wsS = Worksheets("feuille de saisie")
    wsS.Rows("15:490").Hidden = False
    With Sheets("Matrice")
        For Each c In .Range("N15:N490")
            If c <> "" And c = 0 Then
                wsS.Rows(c.Row).Hidden = True
            End If
        Next c
    End With
End Sub

Il faut bien distinguer texte et nombre... Et dans tous les cas éviter de mettre des nombres entre guillemets, VBA ou Excel selon le cas convertira en données String si nécessaire (il n'y a que de très rares exceptions conduisant à mettre des nombres entre guillemets).

Cordialement.

et voila le deuxième fichier,

alors dans le premier, sur la feuille "Matrice" la colonne N que je mets à 0 ou 1, de la ligne 15 à 490, j'aimerais masquer la ligne correspondante sur la feuille de saisie

sur le deuxième, même punition mais là sur les deux feuilles de saisies

9essai1.xlsm (321.11 Ko)

la première c'est une tuerie !!!!

ça marche mega super extra niquel bien!

merci merci merci

Même chose ! Tu peux le faire...

Sub Macro1()
    Dim c As Range, wsS As Worksheet, wsS2 As Worksheet
    Set wsS = Worksheets("feuille de saisie")
    Set wsS2 = Worksheets("feuille de saisie (2)")
    wsS.Rows("15:490").Hidden = False
    wsS2.Rows("15:490").Hidden = False
    With Sheets("Matrice")
        For Each c In .Range("N15:N490")
            If c <> "" And c = 0 Then
                wsS.Rows(c.Row).Hidden = True
                wsS2.Rows(c.Row).Hidden = True
            End If
        Next c
    End With
End Sub

je vais essayer la deuxième plus tard ....

je suis pas tout a fait prêt !!!

je te tiens au courant

cependant je te remercie pour cette aide plus que précieuse !

Merci, un très grand MERCI !!!

ça fonctionne sur les deux versions !!!!

question subsidiaire: si je veux que les lignes se masquent ( démasquent ) après saisi dans la colonne...

il y a un 'tit truc à rajouter ?

( actuellement, je suis obligé de lancer la macro ... )

mais ça c'est la cerise sur le gateau !!!

Tu la bascules en évènementielle Change...

ah !!! encore un nouveau challenge pour moi alors

C'est assez facile, il te faut juste bien cibler la plage surveillée :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim wsS As Worksheet, mask As Boolean
    If Not Intersect(Target, Me.Range("N15:N490")) Is Nothing Then
        Set wsS = Worksheets("feuille de saisie")
        If Not IsEmpty(Target) Then mask = (Target = 0)
        wsS.Rows(Target.Row).Hidden = mask
    End If
End Sub

Celle-ci pour n'agir que sur la ligne d'intervention, ce qui devrait être suffisant, et tu conserves la macro à lancer pour pouvoir la lancer à titre de vérification...

Cordialement.

Tout fonctionne à merveille.

je te remercie de ton aide

Bien à toi

Rechercher des sujets similaires à "masquer ligne fonction resultat feuille"