masquer la ligne si T=0

21 réponses
Avatar
pellet15
Bonjour a tous

Je voudrais masquer la ligne 2 quand la cellule "T2" =3D0
et cela pour les ligne 3 de cellule "T3" =3D0

ainsi de suite jusqu=E2=80=99=C3=A0 la ligne 10



Merci

10 réponses

1 2 3
Avatar
Jacquouille
Bonjour,
Afin d'épargner un peu la boule de cristal du R.O. (répondeur officiel), je
me permets ceci:
Sub Masquer_ligne()
For n = 10 To 1 Step -1
If Range("T" & n).Value = 0 Then
Rows(n).Select
Selection.EntireRow.Hidden = True
End If
Next
End Sub
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"pellet15" a écrit dans le message de groupe de discussion :
Bonjour a tous
Je voudrais masquer la ligne 2 quand la cellule "T2" =0
et cela pour les ligne 3 de cellule "T3" =0
ainsi de suite jusqu’à la ligne 10
Merci
Avatar
MichD
Le 08/févr./2019 à 06:15, Jacquouille a écrit :
Sub Masquer_ligne()
For n = 10 To 1 Step -1
If Range("T" & n).Value = 0 Then
Rows(n).Select
Selection.EntireRow.Hidden = True
End If
Next
End Sub

Bonjour Jacquouille,
Ta procédure mais recours à la sélection des lignes avant de les supprimer.
'-------------------
Sub Masquer_ligne()
Dim N As Long
Application.ScreenUpdating = False
With Worksheets("Feuil1") 'Nom feuille à adapter
For n = 10 To 1 Step -1
If .Range("T" & n).Value = 0 Then
.Range("T" & n).EntireRow.Hidden = True
End If
Next
End With
Application.ScreenUpdating = True
End Sub
'-------------------
MichD
Avatar
Jacquouille
Bonjour Denis,
Merci pour ce raccourci que j'oublie souvent.
On a pourtant suffisamment dit de ne pas employer le .select ET de déclarer
les variables !
Je me suis laissé attirer dans le piège de la ligne que l'on supprime, d'où
le step-1.
Je viens de tester. Dans le cas de "Masquer" et non "Supprimer", il n'y a
pas besoin de partir du bas.
Voici donc ce que je propose:
-----------------
Sub Masquer_lignes_bis()
Dim derL as long
Application.ScreenUpdating = False
derL = Cells(Rows.Count, 20).End(xlUp).Row 'des fois qu'il y aurait plus
que 10 lignes-- 20 = colonne T
For Each c In Range("T1:T" & derL) ' ou range("T2:T" & derL) .... si titre
de colonne
If c.Value = 0 Then
c.EntireRow.Hidden = True
End If
Next
Application.ScreenUpdating = True
End Sub
-----------------------------
C'est plus beau avec: Application.ScreenUpdating = False/True. ça fait
encore plus mystérieux -))
Merci pour ta correction.
Bonne fin de journée.
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
Le 08/févr./2019 à 06:15, Jacquouille a écrit :
Sub Masquer_ligne()
For n = 10 To 1 Step -1
If Range("T" & n).Value = 0 Then
Rows(n).Select
Selection.EntireRow.Hidden = True
End If
Next
End Sub

Bonjour Jacquouille,
Ta procédure mais recours à la sélection des lignes avant de les supprimer.
'-------------------
Sub Masquer_ligne()
Dim N As Long
Application.ScreenUpdating = False
With Worksheets("Feuil1") 'Nom feuille à adapter
For n = 10 To 1 Step -1
If .Range("T" & n).Value = 0 Then
.Range("T" & n).EntireRow.Hidden = True
End If
Next
End With
Application.ScreenUpdating = True
End Sub
'-------------------
MichD
Avatar
MichD
Si tu ne spécifies pas la feuille où l'action doit se dérouler, il y a
toujours la possibilité qu'un usager lance la macro alors qu'une autre
feuille est active.
Si tu ne désires pas spécifier la feuille, tu dois alors inscrire le
code dans le module de la feuille.
MichD
Avatar
Jacquouille
Tu as raison ... une fois de plus.
Merci
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
Si tu ne spécifies pas la feuille où l'action doit se dérouler, il y a
toujours la possibilité qu'un usager lance la macro alors qu'une autre
feuille est active.
Si tu ne désires pas spécifier la feuille, tu dois alors inscrire le
code dans le module de la feuille.
MichD
Avatar
pellet15
Le vendredi 8 février 2019 08:18:38 UTC-5, MichD a écrit :
Le 08/févr./2019 à 06:15, Jacquouille a écrit :
Sub Masquer_ligne()
For n = 10 To 1 Step -1
If Range("T" & n).Value = 0 Then
Rows(n).Select
Selection.EntireRow.Hidden = True
End If
Next
End Sub

Bonjour Jacquouille,
Ta procédure mais recours à la sélection des lignes avant de les supprimer.
'-------------------
Sub Masquer_ligne()
Dim N As Long
Application.ScreenUpdating = False
With Worksheets("Feuil1") 'Nom feuille à adapter
For n = 10 To 1 Step -1
If .Range("T" & n).Value = 0 Then
.Range("T" & n).EntireRow.Hidden = True
End If
Next
End With
Application.ScreenUpdating = True
End Sub
'-------------------
MichD

Bonjour MichD
avec ca va mais je voudrait que cela s'exécuter automatiquement
aussitôt que une cellule (dans colonne T ) est 0 ligne masquer
et apparaît si devient un nombre(>0) ligne visible.
-------------------------------------------------
Sub Masquer_ligne()
Dim N As Long
Application.ScreenUpdating = False
With Worksheets("Soumission") 'Nom feuille à adapter
For N = 10 To 1 Step -1
If .Range("T" & N).Value = 0 Then
.Range("T" & N).EntireRow.Hidden = True
End If
Next
End With
Application.ScreenUpdating = True
End Sub
-----------------------------------------------------
merci
Avatar
MichD
Si tu tapes la valeur 0 dans une cellule de la colonne T, la procédure
suivante va fonctionner. Si un 0 apparaît comme étant le résultat d'une
formule, cela ne fonctionnera pas. Donne-moi un exemple de ta formule...
Tu copies ceci dans le module de la feuille où l'action se déroule.
'---------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range, C As Range
Set Rg = Intersect(Target, Range("T:T"))
Application.EnableEvents = False
If Not Rg Is Nothing Then
For Each C In Rg
If C.Value = 0 And IsNumeric(C.Value) Then
C.EntireRow.Hidden = True
Else
C.EntireRow.Hidden = False
End If
Next
End If
Application.EnableEvents = False
End Sub
'---------------------------
MichD
Avatar
MichD
Le 08/févr./2019 à 16:04, pellet15 a écrit :
=SI(ESTVIDE($A2);0;(T17))
=SI(ESTVIDE($A3);0;(T90))
=SI(ESTVIDE($A4);0;(T161))
=SI(ESTVIDE($A5);0;(T232))
=SI(ESTVIDE($A6);0;(T303))
=SI(ESTVIDE($A7);0;(T374))
=SI(ESTVIDE($A8);0;(T445))
=SI(ESTVIDE($A9);0;(T522))
=SI(ESTVIDE($A10);0;(T599))

À copier dans le module de la feuille :
'-----------------------------------
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
For Each C In Range("T2:T10")
If C <> "" Then
If C.Value = 0 Then
C.EntireRow.Hidden = True
Else
C.EntireRow.Hidden = False
End If
End If
Next
Application.EnableEvents = True
End Sub
'-----------------------------------
MichD
Avatar
pellet15
Le vendredi 8 février 2019 17:18:12 UTC-5, MichD a écrit :
Le 08/févr./2019 à 16:04, pellet15 a écrit :
=SI(ESTVIDE($A2);0;(T17))
=SI(ESTVIDE($A3);0;(T90))
=SI(ESTVIDE($A4);0;(T161))
=SI(ESTVIDE($A5);0;(T232))
=SI(ESTVIDE($A6);0;(T303))
=SI(ESTVIDE($A7);0;(T374))
=SI(ESTVIDE($A8);0;(T445))
=SI(ESTVIDE($A9);0;(T522))
=SI(ESTVIDE($A10);0;(T599))

À copier dans le module de la feuille :
'-----------------------------------
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
For Each C In Range("T2:T10")
If C <> "" Then
If C.Value = 0 Then
C.EntireRow.Hidden = True
Else
C.EntireRow.Hidden = False
End If
End If
Next
Application.EnableEvents = True
End Sub
'-----------------------------------
MichD

Parfait
gros merci
Avatar
Jacquouille
Bonjour Denis,
Pourquoi cette ligne:
Else
C.EntireRow.Hidden = False

Merci.
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
Le 08/févr./2019 à 16:04, pellet15 a écrit :
=SI(ESTVIDE($A2);0;(T17))
=SI(ESTVIDE($A3);0;(T90))
=SI(ESTVIDE($A4);0;(T161))
=SI(ESTVIDE($A5);0;(T232))
=SI(ESTVIDE($A6);0;(T303))
=SI(ESTVIDE($A7);0;(T374))
=SI(ESTVIDE($A8);0;(T445))
=SI(ESTVIDE($A9);0;(T522))
=SI(ESTVIDE($A10);0;(T599))

À copier dans le module de la feuille :
'-----------------------------------
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
For Each C In Range("T2:T10")
If C <> "" Then
If C.Value = 0 Then
C.EntireRow.Hidden = True
Else
C.EntireRow.Hidden = False
End If
End If
Next
Application.EnableEvents = True
End Sub
'-----------------------------------
MichD
1 2 3