Autres Specialcells : Cacher ligne sur plage discontinue (Pb)

  • Initiateur de la discussion Initiateur de la discussion zebanx
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
336
Réponses
8
Affichages
1 K
Réponses
8
Affichages
1 K
  • Question Question
Microsoft 365 Programme trop lent
Réponses
12
Affichages
978
Réponses
2
Affichages
2 K
Réponses
0
Affichages
2 K
Retour