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

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
 
Re : Racourcir/optimiser une macro

Merci à vous DoubleZéro et Etienne2323... Très bon travail effectivement je ne voulais pas masquer les lignes après 452 même si vide. Avec la dernière macro j'arrive au résultat attendu. Encore merci
 
Re : Racourcir/optimiser une macro

salut

sans If (Si... pas bouteille 😉)
Code:
Sub Masquer()
  Application.ScreenUpdating = False
  Dim C As Range
  For Each C In Range("C23:C452").SpecialCells(xlCellTypeBlanks)
    C.EntireRow.Hidden = True
  Next
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
17
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…