Accélérer un macro

  • Initiateur de la discussion Initiateur de la discussion Adamev
  • 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 !

Adamev

XLDnaute Occasionnel
Bonjour;
Dans la PJ j'ai une petite macro qui masque les colonnes dont la troisième ligne contient 10. Elle marche ... mais lorsque les colonnes à masquer sont nombreux ça devient de plus de plus lent. Y a-t-il un remède à ça?
Merci d'avance
 

Pièces jointes

Re : Accélérer un macro

bonjour,

à essayer:
Code:
Option Explicit

Sub MasqColDontLigne3Egal10()

Dim k As Long

With Application
   .ScreenUpdating = False
   .DisplayAlerts = False
   .EnableEvents = False
End With

For k = 1 To 200
   If Cells(3, k).Value = 10 Then Columns(k).EntireColumn.Hidden = True
Next k

With Application
   .ScreenUpdating = True
   .DisplayAlerts = True
   .EnableEvents = True
End With

End Sub

nota: toujours mettre "Option Explicit" en début de module pour s'obliger à déclarer les variables

à +
 
Re : Accélérer un macro

Bonjour à tous,

dans le fichier joint, il y a 90 colonnes

Pourquoi donc boucler 200 fois 😕😕😕

pour encore gagner du temps, il faut utiliser ceci:

For k = 1 To Range("IV3").End(xlToLeft).Column pour la version 2003

For k = 1 To Range("XFD3").End(xlToLeft).Column pour la version 2007

à+
Philippe
 
Dernière édition:
Re : Accélérer un macro

Bonjour,

Une variante :


VB:
Option Explicit
 
Sub MasqColDontLigne3Egal10()
Dim Trouve As Range
 
With Application
    .ScreenUpdating = False
    .EnableEvents = False
 End With

With Worksheets("Feuil2") 'nom feuille à adapter
    With .Range("3:3")
        Set Trouve = .Find(What:=10, _
            LookIn:=xlValues, lookAt:=xlWhole)
        If Not Trouve Is Nothing Then
            Do
                Trouve.EntireColumn.Hidden = True
                Set Trouve = .FindNext(Trouve)
            Loop Until Trouve Is Nothing
        End If
    End With
End With
With Application
    .ScreenUpdating = True
    .EnableEvents = True
 End With
 
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

Retour