Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comment masquer les lignes égales à zèro?

6 réponses
Avatar
Kazo81
Je veux optimiser la taille de mes tableaux et n'afficher que les lignes dont
l'ensemble des cellules est egal à 0, sachant que la tache consiste en le
remplissage de plusieurs de tableaux de mêmes formats à partir d'un seul et
unique tableau?

Merci.

6 réponses

Avatar
MichDenis
Bonjour Kazo81,

Tu colles ceci dans un module standard
et tu adaptes le nom de la feuille et de la plage
dans la procédure.


Sub test()

Dim Rg As Range, R As Range
With worksheets("Feuil1") 'Nom feuille `a adapter
Set Rg = .Range("A1:G10") ' Plage à adapter
End With

For Each R In Rg.Rows
If Application.Sum(R) = 0 Then
R.EntireRow.Hidden = True
End If
Next

End Sub




"Kazo81" a écrit dans le message de groupe de discussion :
Je veux optimiser la taille de mes tableaux et n'afficher que les lignes dont
l'ensemble des cellules est egal à 0, sachant que la tache consiste en le
remplissage de plusieurs de tableaux de mêmes formats à partir d'un seul et
unique tableau?

Merci.
Avatar
Corto
Bonjour Kazo81,
A mettre dans ThisWorkbook dans l'éditeur de macros (Alt+F11)

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
For Each XROW In [A1].CurrentRegion.Rows
XROW.EntireRow.Hidden = Application.Sum(XROW) = 0
Next XROW
End Sub

NB: Pour que ça marche tous les tableaux doivent commencer en A1

Corto

Kazo81 a écrit :
Je veux optimiser la taille de mes tableaux et n'afficher que les ligne s dont
l'ensemble des cellules est egal à 0, sachant que la tache consist e en le
remplissage de plusieurs de tableaux de mêmes formats à parti r d'un seul et
unique tableau?

Merci.



Avatar
Corto
Attention, ça peut trés vite devenir trés énervant !! !!! >:o

Corto ;-)

Corto a écrit :
Bonjour Kazo81,
A mettre dans ThisWorkbook dans l'éditeur de macros (Alt+F11)

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
For Each XROW In [A1].CurrentRegion.Rows
XROW.EntireRow.Hidden = Application.Sum(XROW) = 0
Next XROW
End Sub

NB: Pour que ça marche tous les tableaux doivent commencer en A1

Corto

Kazo81 a écrit :
Je veux optimiser la taille de mes tableaux et n'afficher que les
lignes dont l'ensemble des cellules est egal à 0, sachant que la
tache consiste en le remplissage de plusieurs de tableaux de même s
formats à partir d'un seul et unique tableau?

Merci.





Avatar
Caetera
> Je veux optimiser la taille de mes tableaux et n'afficher que les lignes dont
l'ensemble des cellules est egal à 0, sachant que la tache consiste en le
remplissage de plusieurs de tableaux de mêmes formats à partir d'un seul et
unique tableau?



Avec un tableau nommé "leTableau" ça pourrait donner ça :

Sub MasquerLesLignesàZéro()
premLg = [leTableau].Find("*", LookIn:=xlFormulas, SearchOrder:=xlByRows).Row
derLg = [leTableau].Find("*", LookIn:=xlFormulas, SearchOrder:=xlByRows,
SearchDirection:=xlPrevious).Row
premCol = [leTableau].Find("*", LookIn:=xlFormulas,
SearchOrder:=xlByColumns).Column
derCol = [leTableau].Find("*", LookIn:=xlFormulas, SearchOrder:=xlByColumns,
SearchDirection:=xlPrevious).Column
For i = premLg To derLg
If Evaluate("sumproduct(1*(" & Cells(i, premCol).Address & ":" & Cells(i,
derCol).Address & "<>0))") = 0 Then Rows(i).Hidden = True
Next
End Sub

PS : les solutions proposées passant par "Application.Sum(R) = 0 " ne me
semblent pas convenir car la somme d'une plage = 0 ne signifie pas pour autant
que chaque élément de cette plage soit égal à 0 comme semble le dire la question
initiale

http://www.cijoint.fr/cjlink.php?file=cj200905/cijKic5UEx.xls

Etc
Avatar
Laurent
la fonction SUM est incorrecte car elle ne permet pas de s'assurer que
l'ensemble des valeurs de la ligne est nul.
la soluce
Private Sub Worksheet_Activate()
For Each XROW In [A1].CurrentRegion.Rows
XROW.EntireRow.Hidden = (Application.SumIf(XROW, ">0", XROW) = 0) And
(Application.SumIf(XROW, "<0", XROW) = 0)
Next XROW
End Sub



"Corto" a écrit dans le message de news:

Bonjour Kazo81,
A mettre dans ThisWorkbook dans l'éditeur de macros (Alt+F11)

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
For Each XROW In [A1].CurrentRegion.Rows
XROW.EntireRow.Hidden = Application.Sum(XROW) = 0
Next XROW
End Sub

NB: Pour que ça marche tous les tableaux doivent commencer en A1

Corto

Kazo81 a écrit :
Je veux optimiser la taille de mes tableaux et n'afficher que les lignes
dont l'ensemble des cellules est egal à 0, sachant que la tache consiste
en le remplissage de plusieurs de tableaux de mêmes formats à partir d'un
seul et unique tableau?

Merci.



Avatar
Caetera
> la soluce
Private Sub Worksheet_Activate()
For Each XROW In [A1].CurrentRegion.Rows
XROW.EntireRow.Hidden = (Application.SumIf(XROW, ">0", XROW) = 0) And
(Application.SumIf(XROW, "<0", XROW) = 0)
Next XROW
End Sub



Tu devrais tester ta macro sur l'exemple suivant....

http://www.cijoint.fr/cjlink.php?file=cj200905/cijKic5UEx.xls

Etc