Racourcir/optimiser une macro

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 !

lioneldu47

XLDnaute Occasionnel
Bonjour le forum,​
J'aimerais avoir une solution afin de racourcir et d'optimiser cette partie de macro :

If Range("C23") = "" Then Range("C23").EntireRow.Hidden = True
If Range("C24") = "" Then Range("C24").EntireRow.Hidden = True
If Range("C25") = "" Then Range("C25").EntireRow.Hidden = True
If Range("C26") = "" Then Range("C26").EntireRow.Hidden = True
If Range("C27") = "" Then Range("C27").EntireRow.Hidden = True
If Range("C28") = "" Then Range("C28").EntireRow.Hidden = True
If Range("C29") = "" Then Range("C29").EntireRow.Hidden = True
If Range("C30") = "" Then Range("C30").EntireRow.Hidden = True
If Range("C31") = "" Then Range("C31").EntireRow.Hidden = True
If Range("C32") = "" Then Range("C32").EntireRow.Hidden = True
If Range("C33") = "" Then Range("C33").EntireRow.Hidden = True
If Range("C34") = "" Then Range("C34").EntireRow.Hidden = True
If Range("C35") = "" Then Range("C35").EntireRow.Hidden = True
If Range("C36") = "" Then Range("C36").EntireRow.Hidden = True
If Range("C37") = "" Then Range("C37").EntireRow.Hidden = True
If Range("C38") = "" Then Range("C38").EntireRow.Hidden = True
If Range("C39") = "" Then Range("C39").EntireRow.Hidden = True
If Range("C40") = "" Then Range("C40").EntireRow.Hidden = True
If Range("C41") = "" Then Range("C41").EntireRow.Hidden = True

Je dois continuer suivant ce modèle jusqu'à C452.

Est ce que quelqu'un aurait une solution pour un code beaucoup plus court?

Merci pour votre aide.
 
Re : Racourcir/optimiser une macro

Bonjour, lioneldu47, le Forum,

Peut-être ainsi :

Code:
Option Explicit
Sub Masquer()
Application.ScreenUpdating = False
Dim C As Range, Derligne As Long
Derligne = Range("C452").End(xlUp).Row
For Each C In Range("C23:C" & Derligne)
    If C = "" Then C.EntireRow.Hidden = True
Next C
Application.ScreenUpdating = True
End Sub

A bientôt 🙂.
 
Re : Racourcir/optimiser une macro

Bonjour le fil,
@ DoubleZero : juste pour être tanant 😉 Si tu pars de C452 et qu'aucune cellule n'est vide, tu remontes jusuqu'à C23 😉

VB:
Option Explicit
Sub Masquer()
Application.ScreenUpdating = False
Dim C As Range
For Each C In Range("C23:C" & Range("C65536").End(xlUp).Row)
    If C = "" Then C.EntireRow.Hidden = True
Next C
End Sub

Cordialement,

Étienne
 
Re : Racourcir/optimiser une macro

Re le fil, DoubleZero 🙂

Très bon contre-argument 😉 Il y a peu être des lignes au-delà de 452 qui ne doivent pas être masquées.

Pointage : 1 à 1 😎😛

Par contre, à la vue de ton point, il serait peut-être préférable de ne pas chercher la dernière ligne, mais plutôt de la préciser. Ainsi, la dernière ligne devrait être 452.

J'imagine que l'écriture la plus sécuritaire serait celle-là

VB:
Option Explicit
Sub Masquer()
Application.ScreenUpdating = False
Dim C As Range
For Each C In Range("C23:C452")
    If C = "" Then C.EntireRow.Hidden = True
Next C
End Sub

Cordialement,

Étienne
 
- 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
17
Affichages
2 K
Retour