comment masquer les lignes égales à zèro?

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #19276461
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" 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.
Corto
Le #19277211
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.



Corto
Le #19277191
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.





Caetera
Le #19277601
> 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
Laurent
Le #19279831
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"
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.



Caetera
Le #19282621
> 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
Publicité
Poster une réponse
Anonyme