Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres Specialcells : Cacher ligne sur plage discontinue (Pb)

zebanx

XLDnaute Accro
Bonjour à tous,

Ci-joint un code qui fonctionne bien sur une plage continue (Feuil1) mais qui pose problème sur une plage discontinue (feuille 2).
Le but est de cacher les lignes qui affiche 0 en colonne D et E.

Pourriez-vous m'indiquer ce qui ne va pas svp, sachant qu'avec le pas à pas détaillé c'est la ligne ".value = .value" qui semble poser problème ?

VB:
Sub ash_cacheLV_SUMPRODUCT_F2()
Dim plage As Range
Dim t0, n%

'--définition de la plage de recherche
Set ash = Sheets(2) 'ActiveSheet
Set plage = ash.Range("G2:G19,G27:G41")
t0 = Timer

On Error Resume Next
'--boucle
With plage
  .Formula = "=1/(1/SUMPRODUCT(N(D2:E2<>0)))"
  .Value = .Value  '-- A ce passage les #DIV/0! ne sont pas conservés : pourquoi svp ?
  n = Application.Count(.SpecialCells(xlCellTypeConstants, 16))
  .SpecialCells(xlCellTypeConstants, 16).EntireRow.Hidden = True
  .Value = ""
End With

With sh06f.UsedRange: End With 'actualise les barres de défilement
MsgBox Format(Timer - t0, "0.00\ sec." & vbCrLf & n & " lignes cachées")

End Sub

Vous en remerciant, bonne fin de journée

zebanx
 

Pièces jointes

  • question.xlsm
    51.3 KB · Affichages: 8

Hasco

XLDnaute Barbatruc
Repose en paix
Bonsoir,

Boucler sur les sous-plages (area)

VB:
For each Plage in ash.Range("G2:G19,G27:G41").Areas
    '
    ' Travaille sur la plage en cours
    With  Plage
        '........
    End With

next

bonne soirée
 

zebanx

XLDnaute Accro
Bonjour Roblochon

Je te remercie pour ta réponse qui fonctionne bien avec deux boucles.
C'est parfait, j'étais loin de la solution.

Bonne soirée à toi
zebanx

VB:
Sub ash_cacheLV_SUMPRODUCT_F2()
Dim plage As Range
Dim t0, n%

'--définition de la plage de recherche
Set ash = Sheets(2) 'ActiveSheet
Set plage = ash.Range("G2:G19,G27:G41")
t0 = Timer

On Error Resume Next
'--boucle 1
With plage
.Formula = "=1/(1/SUMPRODUCT(N(D2:E2<>0)))"
End With

'--boucle 2
For Each plage In ash.Range("G2:G19,G27:G41").Areas
    ' Travaille sur la plage en cours
    With plage
    .Value = .Value
    n = Application.Count(.SpecialCells(xlCellTypeConstants, 16))
    .SpecialCells(xlCellTypeConstants, 16).EntireRow.Hidden = True
    .Value = ""
End With
Next

With ash.UsedRange: End With 'actualise les barres de défilement
MsgBox Format(Timer - t0, "0.00\ sec." & vbCrLf & n & " lignes cachées")
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…