Afficher/masquer ligne si valeur a 0

Bonjour a tous,

J'aurais besoin de masquer ou afficher des lignes selon les valeurs qui s'afficheront dans un tableau afin de simplifier sa lecture. Si la valeur est a 0, alors la ligne est masquée. Sinon, elle doit etre affichée.

Ne pouvant passer par un tri, je pense passer par une macro. L'idée serait de faire tourner cette macro en tache de fond (distes moi si c'est pa sune bonne idée) ou bien eventuellement lorsqu'on consulte la feuille (si cela est possible, je ne sais pas) pour que des que les valeurs changent dans le tableaux, les lignes masquées ou affichée se réactualise.

J'ai commencer a travailler une macro, elle masque les lignes quand la valeur entre L21 et L28 est a 0 mais elle ne fait pas reapparaitre les lignes quand la veleur repasse supérieur a 0. Je ne maitrise pas bien les if et je pense c'est la mon erreur.

Deplus, je ne sais pas trop coder l'automatisation (en arrière plan ou bien a la consultation de l'onglet, selon ce qiue vous penser le mieux).

Sauriez vous m'aider s'il vous plait?

Voici ce que j'ai deja fait

Sub masquer_ligne_vide()

'Masque les lignes a 0 dans la nut fact USA

Dim Cel As Range

For Each Cel In Worksheets("Nutritional facts USA").Range("L21:L28").Cells

    If Cel.Value = 0 Then
        Cel.EntireRow.Hidden = True
    End If
        If Cel.Value > 0 Then
        Cel.EntireRow.Hidden = False
    End If
Next

Merci par avance

Bastien

Bonjour,

- cliquez droite sur l'onglet concerné par l'action
- Choisissez l'option "Visualiser le code"
- Mettez le code ci dessous dans la fenetre

Private Sub Worksheet_Change(ByVal Target As Range)

Dim cel As Range

For Each cel In Worksheets("Nutritional facts USA").Range("L21:L28")
    Select Case cel
        Case Is = 0: cel.EntireRow.Hidden = True
        Case Is > 0: cel.EntireRow.Hidden = False
    End Select
Next cel
End Sub

Attention que cela ne fonctionne que si vous changez manuellement les infos entre L21 et L28

Cordialement

Hello

Merci pour ta répponse.

Par contre les valeurs change selon des calculs sur d'autre feuille.

Du coup, si j'ai bien compris, ça marchera pas ce que tu proposes, non?

re

Par contre les valeurs change selon des calculs sur d'autre feuille.

Il faudrait que je sache comment vous fonctionnez. Est-ce que c'est lorsque vous activer la feuille Nutricional que l'opération de masquage doit être faite ?

Re,

En gros, j'ai :

- Une feuille "data" ou j'ai les valeurs nutritionnelles d'ingrédients

-Une feuille "formule" ou je vais sélectionner les ingrédients qui constitue ma recette. Basé sur cette recette et les data, j'ai de formules qui me calculent les valeurs nutritionnelles de la formule dans un tableau (sur la feuille formule).

Les valeurs ainsi déterminées sont reportées sur la feuille "Nutritional facts USA" selon la mise en page de la réglementation des USA

ça donne ça

image

De la ligne 21 à 28, ce sont des données optionnelles et donc habituellement, on n'affiche pas les valeurs à 0. Je cherche donc à les masquer.

Certes, je pourrais les masquer manuellement, mais idéalement ça serait bien que les lignes a 0 se masquent et celle au-dessus de 0 apparaissent toute seule, soit en arrière plan quand je change les données sur la feuille "formule" soit quand je passe de la feuille "formule" a la feuille "Nutritional facts USA". Cette mise en forme est ensuite exportée en image.

J'espère que cela est suffisant.

Si besoin, je peux envoyer le fichier en mp

Bonne soirée

Bastien

Bonjour

Il suffit de changer légèrement le code, ce qui donne ceci

Private Sub Worksheet_Activate()
Dim cel As Range

For Each cel In Range("L21:L28")
    Select Case cel
        Case Is = 0: cel.EntireRow.Hidden = True
        Case Is > 0: cel.EntireRow.Hidden = False
    End Select
Next cel
End Sub

Le code doit être placé dans votre feuille "data" ( "Nutritional facts") comme je vous ai expliqué hier

Ensuite allez dans la feuille "formule", changez vos données puis cliquez sur la feuille "Data" (onglet Nutritional)

Cordialement

Ho punaise, c'est magique
merci beaucoup pour l'aide. <3<3<3<3

Hello

Je souhaiterais aller plus loin dans cette fonction.

Lorsque je remet a zero ma formule (j'ai un bouton sur la feuille formule pour faire ça), cad que toutes la veleurs se retrouve a 0, j'aimerais pouvoir voir la trame complete de la "nutritional fact".

Pour cela, j'ai pensé mettre en place un If/else sur le code qu'on avait definit precedement mais j'ai du mal le coder car j'ai un message de'rreur me disant "erreur de compilation : Else sans if".

Est ce que vous pourriez m'aider svp (si cela est faisable)?

Je vous met ce que j'ai fait (mais qui marche pas)

Private Sub Worksheet_Activate()
Dim cel As Range

If Range("P6") = 0 Then Exit Sub

Else
For Each cel In Range("L21:L28")
    Select Case cel
        Case Is = 0: cel.EntireRow.Hidden = True
        Case Is > 0: cel.EntireRow.Hidden = False
    End Select
Next cel

End If

End Sub

Bonjour

Pour cela, j'ai pensé mettre en place un If/else sur le code qu'on avait definit precedement mais j'ai du mal le coder car j'ai un message de'rreur me disant "erreur de compilation : Else sans if".

Oui c'est normal car vous mettez un ELSE juste en dessous.

Enlevez le ELSE, le END IF en dessous (après Next Cel) et modifiez votre ligne comme ceci

If sheets("nomfeuille").Range("P6") = 0 Then Cells.EntireRow.Hidden = False : Exit Sub

Attention que vous devez préciser le nom de la feuille (avec les guillemets) où se trouve P6 qui, je suppose, est la feuille où se trouve le bouton

Cordialement

Hello

Merci pour la correction.

Je pensais qu'un If allait toujours avec un Else.

Je vais tester ça.

la céllule P6 se trouve dans la même feuille, c'est celle qui est sur le tableau en capture d'écran que je vous avais envoyé dans un précédent message.

Bon WE

Bastien

Edit : ça marche nikel, merci beaucoup pour l'aide

Rechercher des sujets similaires à "afficher masquer ligne valeur"