IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Masquer des lignes sur condition


Sujet :

Macros et VBA Excel

  1. #21
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    pour accélerer ton code, tu pourrais / devrais essayer de désactiver le rafraichissement d'écran et le recalcul automatique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    application.ScreenUpdating =False 
    application.Calculation=xlCalculationManual 
     
    ' ton code
     
    application.Calculation=xlCalculationAutomatic 
    application.ScreenUpdating =true

  2. #22
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Bonjour
    pour masquer les lignes qui repondant à la condition, essaie ce code peut être qu'il te convient.je l'ai testé sur 13581 lignes (Excel2007) j'ai obtenu 0,390625 secondes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub Masquer()
    Dim cell As Range, CellHide As Range
    Dim i As Integer
    i = 11
    Do Until IsEmpty(Cells(i, 1))
       If Cells(i, 3) = "Archivé" Then
          If CellHide Is Nothing Then
                Set CellHide = Cells(i, 1)
              Else: Set CellHide = Union(CellHide, Cells(i, 1))
              End If
        End If
      i = i + 1
    Loop
    Application.ScreenUpdating = False
            If Not CellHide Is Nothing Then _
                   CellHide.EntireRow.Hidden = True
    End Sub

    Abed_H

  3. #23
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Points : 633
    Points
    633
    Par défaut
    Re-bonjour,
    J'ai essayé le code de Abed_H, il ne se passe rien.
    Caféine, ton idée me semble bonne, c'est peut-être le rafraîchissement de l'écran et le calcul automatique qui ralentissent le traitement, mais quand j'intègre ton code, il ne se passe rien non plus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Masquer()
    Dim i As Long
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
        For i = 12 To Rows.Count
            If Range("A" & i).Text = "" Then
                Application.Calculation = xlCalculationAutomatic
                Application.ScreenUpdating = True
            Exit Sub
                If Range("C" & i).Value = "Archivé" Then
                Rows(i).Hidden = True
            End If
        Next i
    End Sub
    Je l'ai peut-être intégré au mauvais endroit.

  4. #24
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Bonsoir
    J'ai essayé le code de Abed_H, il ne se passe rien.
    Je l'ai peut-être intégré au mauvais endroit
    Oui je confirme, voir exemple ci-joint
    Abed_H

  5. #25
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Juste pour corriger l'emplacement dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Masquer()
    Dim i As Long
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
        For i = 12 To Rows.Count
            If Range("A" & i).Text = "" Then Exit Sub
            If Range("C" & i).Value = "Archivé" Then Rows(i).Hidden = True
        Next i
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    End Sub

  6. #26
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Points : 633
    Points
    633
    Par défaut
    Avec l'idée de Caféine et le code corrigé par Fring, le temps de masquage est tombé à 4 secondes.
    Le dernier code de Abed_H met seulement 1 seconde (à la louche). J'opte donc pour ce dernier. Merci à tous.
    Pour parfaire mon appli, j'ai un autre petit problème, mais je vais le mettre sur un nouveau post.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Masquer des lignes avec une condition
    Par mjp06 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 08/03/2019, 19h23
  2. Masquer des lignes sous condition
    Par linousxm dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/05/2010, 13h19
  3. Datagridview: Masquer des cellules sur certaines lignes
    Par boby62423 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 27/04/2009, 14h57
  4. Masquer / démasquer des lignes sur critère.
    Par marc56 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 28/02/2008, 01h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo