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 :

Bloucle très lente [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 622
    Points : 163
    Points
    163
    Par défaut Bloucle très lente
    Bonjour,

    Je pense qu'il y a un problème dans la boucle suivante si j'en juge par sa lenteur d'exécution.

    En résumé :
    * Feuil02, plage F2 à Fx : les données à copier dans les onglets créés.
    * Feuil1 : onglet de référence (les onglets suivants sont nommés "2", "3", "4", etc.).
    * L'index de Feuil1 : 3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    w = 3       'index de Feuil1 (1ère fiche à dupliquer)
     
    For x = 2 To z + 1    'nb de lignes de "Feuil02" à recopier 
         If Feuil02.Range("F" & x).Value <> "" Then
              Feuil02.Range("F" & x).Copy
              Sheets(w).Range("F4").PasteSpecial Paste:=xlPasteValues 
              w = w + 1                          
         End If
    Next x
    En vous remerciant par avance pour votre aide,
    Cdt

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 622
    Points : 163
    Points
    163
    Par défaut
    PS :

    J'ai vérifié (pas à pas), que la procédure prenait bien en compte les Application.SreenUpDating et Application.EnableEvents à False

  3. #3
    Membre éprouvé Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 651
    Points : 1 027
    Points
    1 027
    Par défaut
    Hello,

    rien vu de particulier, mais on ne connais pas la valeur de "z" ni ce que vous entendez par "lenteur d'exécution."
    C'est possible d'avoir un classeur de test et de nous dire combien de temps ça met chez vous ?
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 622
    Points : 163
    Points
    163
    Par défaut
    Bonjour,

    z = le nombre de Fiches à (dupliquer et à) renommer.
    Ce nombre est variable et j'envisage de le récupérer automatiquement pour l'insérer dans le code.

    Ici, le renommage de 131 Fiches prend 17 secondes (il faut 6 pour dupliquer la Feuil1 en 131 Fiches)

    Cdt

  5. #5
    Membre éprouvé Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 651
    Points : 1 027
    Points
    1 027
    Par défaut
    Ok, c'est long...
    Mais pour tester chez moi il me faudrait un classeur avec 131 feuilles et je n'ai pas ça sous la main.
    Vous pouvez m'aider à vous aider en me fournissant un classeur de test ?

    Nb : vous avez pensé à suspendre le calcul automatique ?
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    Bonjour,
    Lire et écrire cellule par cellule est assez lent.
    Tu peux au moins lire tout d'un coup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
        Dim datas, w As Long, x As Long, Z As Long
        w = 3       'index de Feuil1 (1ère fiche à dupliquer)
        Z = 5
        datas = Feuil2.Range("F2").Resize(Z).Value
        For x = 1 To UBound(datas)    'nb de lignes de "Feuil02" à recopier
            If datas(x, 1) <> "" Then
                Sheets(w).Range("F4").Value = datas(x, 1)
                w = w + 1
            End If
        Next x
    End Sub
    Déclarer et typer ses variables (autre que variant) accélère aussi.
    Sans le fichier de travail il y aura peut-être des petites adaptations à faire
    eric

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 622
    Points : 163
    Points
    163
    Par défaut
    Bonjour,

    Merci à vous deux,

    Merci Eriiic pour cette proposition ; gain de 20% sur la procédure de renommage.

    Cdt

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

Discussions similaires

  1. 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, 18h17
  2. DBExpress est plus lent que BDE?
    Par palassou dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/07/2004, 09h39
  3. BDE lent sur XP PRO
    Par Daniel Nespoulous dans le forum Bases de données
    Réponses: 4
    Dernier message: 11/06/2004, 15h12
  4. TList lente
    Par localhost dans le forum C++Builder
    Réponses: 5
    Dernier message: 17/02/2004, 02h01
  5. SQL Server trés lent
    Par arwen dans le forum MS SQL Server
    Réponses: 18
    Dernier message: 07/11/2003, 15h45

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