Si telle cellule est vide, alors masquer la ligne

Feitan

XLDnaute Nouveau
Bonsoir à tous,

Je suis à la recherche de la formule magique qui grâce à une macro, me permettrait d'effectuer l'action suivante :

J'ai un tableau avec des lignes de noms et des caractéristiques en colonne.
Pour chaque nom, les caractéristiques sont cochées dans les colonnes par un X.

excel-15b575f558.jpg


Ce que j'aimerai, c'est que grâce à la macro, si un nom ne possède aucune caractéristique (ici encadrés en rouge), en gros si les colonnes sont vides, et bien la ligne soit masquée.

J'espère avoir été assez clair, merci beaucoup par avance pour votre aide.
 

gauchou

XLDnaute Nouveau
Re : Si telle cellule est vide, alors masquer la ligne

RE,
merci pour les info, pas de pb pour les boutons, ils fonctionnent, mais comme j'ai plusieurs macro de ce type je privilégie les cases à cocher qui divise par deux mon nombre de boutons par deux... on s'y retrouve plus,
en outre, MDLShob est le nom de ma case à cocher et cette macro est calquée sur une qui fonctionne bien sur plusieurs feuilles et qui est la suivante:(elle masque les collones):

Private Sub MDCShob_Click()
Application.ScreenUpdating = False
If MDCShob.Value = True Then
' ----- Masquage/démasquage des colonnes si somme nulle
Dim PlageTest As Range
Dim Colonne As Range
Dim PosCol As Long

Set PlageTest = Range("PlageDonneesShob")
For PosCol = 1 To PlageTest.Columns.Count Step 2
Set Colonne = PlageTest.Columns(PosCol)
If Application.WorksheetFunction.Sum(Colonne) = 0 And Application.WorksheetFunction.Sum(Colonne.Offset(0, 1)) = 0 Then
Range("PlageDonneesShob").Columns(PosCol).EntireColumn.Hidden = True
Range("PlageDonneesShob").Columns(PosCol + 1).EntireColumn.Hidden = True
Else
Range("PlageDonneesShob").Columns(PosCol).EntireColumn.Hidden = False
Range("PlageDonneesShob").Columns(PosCol + 1).EntireColumn.Hidden = False
End If
Next PosCol
ElseIf MDCShob = False Then
' ----- Démasquage de toutes les colonnes de la zone
Range("PlageDonneesShob").EntireColumn.Hidden = False
End If



Range("A1").Select
Application.ScreenUpdating = True
End Sub

J'espère être clair..merci pour tout.
 

Efgé

XLDnaute Barbatruc
Re : Si telle cellule est vide, alors masquer la ligne

Re
Comprend pas...
Vous n'avez pas de i dans la dernière macro postée...
Vous parliez de masquer des lignes et là vous masquez des colonnes...
Pouvez vous nous montrer un classeur exemple ? Ce serai peut être plus simple par ce que là je nage.
Cordialement
 

gauchou

XLDnaute Nouveau
Re : Si telle cellule est vide, alors masquer la ligne

Alors, désolé pour le petit bain, je vais essayer d'être clair:

la macro pour masquer des lignes fonctionne avec des boutons, or je voudrais qu'elle fonctionne avec une case à cocher. C'est pourquoi, j'ai utilisé la macro dernièrement postée pour m'inspirer (celle qui sert à masquer des collonnes).

Cette même macro fonctionne sur toute mes pages: j'ai juste besoin de changer le nom de la case à cocher.

Mon problème, c'est que la macro pour masquer des lignes que j'ai adapter à une case à cocher ne fonctionne que sur une seule feuille et je ne comprends pas pourquoi...
qu'est qui fait qu'entre mes deux macros; une fonctionne sur toute les feuilles en adaptant le nom (MDCShon) de la case à cocher;
et l'autre ne fonctionne que sur une feuille et quand je la mets sur une autre, j'ai le message "variable non définie".

Sincères remerciements, je prépare un fichier à joindre.
 

Efgé

XLDnaute Barbatruc
Re : Si telle cellule est vide, alors masquer la ligne

Re
J"ai jeté un coup d'oeil rapide à votre exemple:
Tout fonctionne normalement, la seule chose que j'ai fait c'est rajouter une ligne vide car aucunne de vos lignes, ni feuille1 ni feuile 2, ne contiennent de lignes correspondant aux critéres...Donc pas de masquage...
Faite l"essai dans votre exemple : insérez une ligne vide au dessus de la 15 par exemple, les options fonctionnent.
Je reviendrai demain matin au cas ou...
Cordialement
Edit : j'ai mieux regardé, je ne vois pas ce qui cloche, ormis l'absence de ligne à masquer.
 
Dernière édition:

gauchou

XLDnaute Nouveau
Re : Si telle cellule est vide, alors masquer la ligne

ha!!OUI!!! j'ai compris, lorsqu'il y a une formule dans la cellule, la macro ne la considère pas vide...donc pas de masquage. merci pour votre implication Efgé. j'ai donc décalé la collonne de début de macro pour masquer effectivement les lignes vides.
Merci encore et à bientôt le forum..(je suis trop content).
 

Efgé

XLDnaute Barbatruc
Re : Si telle cellule est vide, alors masquer la ligne

Re
Une autre version qui évite la ligne "à ralonge":
Code:
Sub Cacher_Efgé()
Dim Cpt As Long
For i = 5 To 11
    For Each Cel In Range("B" & i & ": E" & i)
        If Cel.Value = "" Then
            Cpt = Cpt + 1
        End If
    Next Cel
    If Cpt = 4 Then
        Rows(i).EntireRow.Hidden = True
    End If
    Cpt = 0
Next i
End Sub
Cordialement
 

soif77

XLDnaute Nouveau
Re : Si telle cellule est vide, alors masquer la ligne

Bon jour,

une autre façon avec 1 colonne de plus et 2 macros pour toutes les feuilles (en dehors des boutons).

bonjour lii,

je viens de voir ton fichier et essai de faire pareil car c est exactement ce que je recherche (seulement la partir pour les lignes) mais cela fait rien, je ne peux pas affecter quelque chose au bouton dans un premier temps.... as tu une idée ?

merci
 

pixel

XLDnaute Nouveau
Re : Si telle cellule est vide, alors masquer la ligne

Bonjour,
j'ai un peu le même probleme (exel 2007).
J'ai une case B5 ou je peux avoir l'inscription 4T

Ei si cette case est inscrite 4T, je souhaiterai que toute les lignes
71, 72, 73,74,75 et 85,86,87 soit masquée automatiquement (il ya des truucs inscrits sur ces lignes, et ne veux pas que cela apparaisse).

J'aurai voulu le faire par formule, mais bon... je ferai au mieux, car je galere, pouvez pas savoir..:(

Si qqun peut m'aider.

D'avance, je vous remercie.
 

Excel-lent

XLDnaute Barbatruc
Re : Si telle cellule est vide, alors masquer la ligne

Bonsoir et bienvenu sur le forum Pixel,

Voici ci-joint la solution à ton problème.

Bonne soirée
 

Pièces jointes

  • Proposition Feitan.xls
    21.5 KB · Affichages: 131
  • Proposition Feitan.xls
    21.5 KB · Affichages: 136
  • Proposition Feitan.xls
    21.5 KB · Affichages: 139

pixel

XLDnaute Nouveau
Re : Si telle cellule est vide, alors masquer la ligne

Hello Excel-lent;
Te remercie grandement pour ton message.

Juste une aide, mon tableau à évoluer, j'aavais besoin de mettre
SI "2T" masquer telles lignes, si 4T , masquet telle lignes

J'ai pris ton code, et je l'ai fait évolué en conséquence.
mais ça marche pas ouinnnnnnnn (ça me met un message d'erreur quand je tape 2T dans la case J66 ": message " error de compilation, erreur de syntaxe"

Voici ci-joint la solution à ton problème.

Voici tout le code que j'ai mis :
ci-dessous.
Cela a marché quand j'ai juste modifié la case B5 de ton code, en mettant la case J66
mais quand j'ai rajouté des autres IF else, ça plante.

Si tu peux me dire.
J'ai essayé de "pas dérangeré",, mais je bloque à nouveau (2/20en exel...).

Merxci les amis.

Private Sub Worksheet_Change(ByVal Target As Range)
' Macro réalisé par Excel-lent

If Target.Address = "$J$66" And Target.Value = "2T" Then
Rows("85:104").EntireRow.Hidden = True
Rows("108:110").EntireRow.Hidden = True
Rows("119:121").EntireRow.Hidden = True
Rows("125:127").EntireRow.Hidden = True
Rows("132:134").EntireRow.Hidden = True
Rows("141").EntireRow.Hidden = True
Rows("143").EntireRow.Hidden = True
Rows("144").EntireRow.Hidden = True
Else
Target.Address = "$J$66" And Target.Value = "2T" Then
Rows("85:104").EntireRow.Hidden = False
Rows("108:110").EntireRow.Hidden = False
Rows("119:121").EntireRow.Hidden = False
Rows("125:127").EntireRow.Hidden = False
Rows("132:134").EntireRow.Hidden = False
Rows("141").EntireRow.Hidden = False
Rows("143").EntireRow.Hidden = False
Rows("144").EntireRow.Hidden = False

If Target.Address = "$J$66" And Target.Value = "4T" Then
Rows("98:107").EntireRow.Hidden = True
Rows("116:118").EntireRow.Hidden = True
Rows("122:124").EntireRow.Hidden = True
Rows("129:131").EntireRow.Hidden = True
Rows("140").EntireRow.Hidden = True
Rows("143").EntireRow.Hidden = True
Rows("145").EntireRow.Hidden = True
Else
Rows("98:107").EntireRow.Hidden = False
Rows("116:118").EntireRow.Hidden = False
Rows("122:124").EntireRow.Hidden = False
Rows("129:131").EntireRow.Hidden = False
Rows("140").EntireRow.Hidden = False
Rows("143").EntireRow.Hidden = False
Rows("145").EntireRow.Hidden = False

If Target.Address = "$J$66" And Target.Value = "2Tc/o" Then
Rows("85:104").EntireRow.Hidden = True
Rows("119:121").EntireRow.Hidden = True
Rows("125:127").EntireRow.Hidden = True
Rows("132:134").EntireRow.Hidden = True
Rows("141").EntireRow.Hidden = True
Rows("144").EntireRow.Hidden = True
Else
Rows("85:104").EntireRow.Hidden = False
Rows("119:121").EntireRow.Hidden = False
Rows("125:127").EntireRow.Hidden = False
Rows("132:134").EntireRow.Hidden = False
Rows("141").EntireRow.Hidden = False
Rows("144").EntireRow.Hidden = False

If Target.Address = "$J$66" And Target.Value = "2T2F" Then
Rows("85:104").EntireRow.Hidden = True
Rows("119:121").EntireRow.Hidden = True
Rows("125:127").EntireRow.Hidden = True
Rows("132:134").EntireRow.Hidden = True
Rows("140:145").EntireRow.Hidden = True
Else
Rows("85:104").EntireRow.Hidden = False
Rows("119:121").EntireRow.Hidden = False
Rows("125:127").EntireRow.Hidden = False
Rows("132:134").EntireRow.Hidden = False
Rows("140:145").EntireRow.Hidden = False



End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 316
Messages
2 087 178
Membres
103 491
dernier inscrit
bilg1