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 :

Boucle très lente [VBA]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 26
    Par défaut Boucle très lente [VBA]
    Bonjour à tous !

    J'ai une petite Sub qui fonctionne bien, mais qui est malheureusement
    très lente pour se terminer. Voici la sub en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub display_all()
        Dim i As Long
        Dim max as Long
        i = 0
        max = 50
     
        Do While i < max 
            If Cells(i, 2).EntireRow.Hidden = True Then
                Cells(i, 2).EntireRow.Hidden = False
            End If
            i = i + 1
        Loop
    End Sub
    Est ce que je l'ai mal codée ? Y a-t-il un moyen plus léger et
    plus rapide de faire ?
    J'ai initialisé la boucle à 50 tours, mais en réalité il en faudrait
    bien plus, mais c'est réellement long !

    Merci de votre aide, bonne journée

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 26
    Par défaut
    Merci pour le lien !
    C'est magnifique, maintenant ça marche à pleine vitesse. Merci beaucoup,
    et bonne journée à vous.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 26
    Par défaut
    Je me permets de continuer ce topic plutot que de créer un nouveau sujet
    (c'est toujours a propos de cette même fonction)

    J'ai remarqué à ma grande surprise que la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("a100").End(xlUp).Row
    Ne tenait pas compte des ligne masquée.
    Or je comptais justement l'utiliser pour que ma sub sache
    jusqu'à quelle ligne aller pour masquer / démasquer.
    Comment faire pour tout de même prendre en comptes
    les lignes masquées ?

    Je vous remercie d'avance !

  5. #5
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Essai avec xldown
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A:A").End(xlDown).Row

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Malheureusement le résultat sera identique. Si la ou les dernières lignes sont masquées.
    Il faudrait rendre visible les lignes, le temps de calculer la dernière ligne et ensuite masquer. Encore faut-il savoir qu'elles étaient les cellules masquées.
    Cette instruction simule le Ctrl+Flèche de direction qui se comporte de la même manière.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si la colonne A est totalement remplie, utiliser cette instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.WorksheetFunction.CountA(Range("A:A"))
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 205
    Par défaut
    Tu peux peut-être utiliser directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
    Rows.Hidden = False
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Macro VBA très lente, comment l'optimiser
    Par nuphius dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/06/2015, 21h45
  2. BDD sur réseau très très très lent...
    Par ericain dans le forum Access
    Réponses: 12
    Dernier message: 20/02/2015, 17h17
  3. temps d'exécution très lent pour les boucles for
    Par NELLLY dans le forum MATLAB
    Réponses: 2
    Dernier message: 02/01/2013, 11h00
  4. Code VBA très lent - en phase d'execution
    Par Fairyanna dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/08/2008, 15h35
  5. SQL Server trés lent
    Par arwen dans le forum MS SQL Server
    Réponses: 18
    Dernier message: 07/11/2003, 14h45

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