Masquer une ligne sous condition [Résolu/Fermé]

Messages postés
152
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
30 décembre 2010
- - Dernière réponse : Boswellias
Messages postés
7
Date d'inscription
jeudi 10 décembre 2015
Statut
Membre
Dernière intervention
26 septembre 2019
- 24 sept. 2019 à 11:35
Bonjour,
J'ai lu plusieurs post à ce niveau mais je n'ai jamais vraiment trouver de solution.

En fait je souhaiterais, si possible pouvoir masquer une ligne si la cellule de la colonne B de la même ligne est vide. Les lignes 10 à 30 et 32 à 57 doivent être testée de cette manière.

Si possible sans macro vu que je n'y connais rien.

Merci d'avance.

PS: Si une macro est nécessaire je veux bien la placer mais à vous de m'aider à la placer correctement.
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
22965
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 octobre 2019
5704
4
Merci
Bonsoir,

Faisable uniquement par macro.

Je suppose que c'est par fonction que tes cellules Bx se remplissent ou se vident, et que ce n'est pas par une saisie sur la même ligne qu'elles doivent réapparaitre (sinon tu auras du mal...).

Si c'est le cas tu fais un clic-droit sur le nom de l'onglet concerné, tu choisis 'visualiser le code'
et tu colles le code suivant dans la fenetre de droite.
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim plage As Range, c As Range
    Set plage = Union([B10:B30], [B32:B57])
    For Each c In plage
        If c.Value = "" Then
            c.EntireRow.Hidden = True
        Else
            c.EntireRow.Hidden = False
        End If
    Next c
    plage = Nothing
End Sub

A chaque saisie dans la feuille les cellules seront explorées et les lignes affichées/masquées

eric

Dire « Merci » 4

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 63070 internautes nous ont dit merci ce mois-ci

Bonjour,

Néophyte en programmation, je suis tombé sur votre page de code ci-dessus. Elle correspond parfaitement à mes attentes et fonctionne très bien.

Seul souci, il faut entrer physiquement un caractère ou changer une cellule dans la feuille concernée, pour qu'elle détecte un changement et procède à l'affichage / masquer de la dite feuille.

Cependant, toute ma saisie s'effectue sur une autre feuille. La feuille contenant le code n'a pas vocation à être modifiée.

Aussi, est-il possible de changer ce code pour qu'il détecte le changement de valeur de la cellule par le calcul dans la feuille ?

Merci par avance.
eriiic
Messages postés
22965
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 octobre 2019
5704 -
Bonsoir,

Cependant, toute ma saisie s'effectue sur une autre feuille. La feuille contenant le code n'a pas vocation à être modifiée.
Et si tu mettais le code dans la feuille concernée ?

Aussi, est-il possible de changer ce code pour qu'il détecte le changement de valeur de la cellule par le calcul dans la feuille ?
Cette macro régit sur une saisie dans une cellule. En vba on ne peut pas détecter un changement du résultat d'une formule.
Voir post #9 dans ce cas

eric
Mytå
Messages postés
2995
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
708 -
Salut le forum

Utilise l'événement Calculate.
Private Sub Worksheet_Calculate()
    Dim plage As Range, c As Range
    Set plage = Union([B10:B30], [B32:B57])
    For Each c In plage
        If c.Value = "" Then
            c.EntireRow.Hidden = True
        Else
            c.EntireRow.Hidden = False
        End If
    Next c
    Set plage = Nothing
End Sub

Mytå
Boswellias
Messages postés
7
Date d'inscription
jeudi 10 décembre 2015
Statut
Membre
Dernière intervention
26 septembre 2019
-
Salut
en fait j'ai presque le même travail que "CHRICHNOU051), je copie je colle comme indiqué mais .... rien se passe
au fait j'ai une feuille de calcul qui se "remplie" automatiquement d'après des données importées d'une autre feuille , alors j'aimerais que lorsqu'une ligne ne comporte aucune donnée elle sera automatiquement masquée ainsi il n'a y aura pas de vide dans la feuille
Messages postés
152
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
30 décembre 2010
1
Merci
En effet les cellules de la colonne B se remplissent selon un calcul.

Je vais essayer cette macro tout de suite.
Messages postés
152
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
30 décembre 2010
1
Merci
Bonjour,

Le truc c'est que cette feuille reprend des valeurs de plusieurs feuilles et qu'il n'y a donc rien à encoder,

N'y a t il pas une macro qui le ferait sans aucune saisie?

Merci
Messages postés
152
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
30 décembre 2010
0
Merci
Je viens d'essayer cette macro et rien en se passe.

Je l'ai peut être mal fait je ne sais pas trop.

Je l'ai placé comme tu me l'as dit mais après que dois je faire?
Messages postés
22965
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 octobre 2019
5704
0
Merci
Si, la nommer autrement et appeler la liste des macros par Alt+F8 pour la lancer au coup par coup
(ou lui donner un raccourci clavier, ou dessiner un bouton sur la feuille).
Messages postés
152
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
30 décembre 2010
0
Merci
Qu'entends tu pas "la nommer autrement", je ne vois déjà pas son nom...
Désolé mais je n'y connais rien en macros.
Messages postés
22965
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 octobre 2019
5704
-1
Merci
il faut faire une saisie dans la feuille pour qu'elle se déclenche
Messages postés
152
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
30 décembre 2010
-1
Merci
Ca y est j'ai réussi en plaçant un bouton...
Merci beaucoup
Messages postés
22965
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 octobre 2019
5704
-1
Merci
Son nom est défini lors du Sub, remplacer
Private Sub Worksheet_Change(ByVal Target As Range)
par
Sub MasquerLignes
et elle apparaitra dans la liste des macros

Mais pas sûr que tu gagnes ton temps, si tu es seul à l'utiliser tu fais suppr dans une cellule vide et c'est bon, pour excel c'est une modif et la macro se lance.