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 :

30mn d'éxécution merci de m'aider [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Par défaut 30mn d'éxécution merci de m'aider
    Bonjour

    Avant tout merci a ce forum et à tous les autres qui régulièrement m'aide à trouver mon bonheur à mes malheurs. C'est la première fois que je publie sur un forum généralement en compilant je trouve... mais là je sèche.

    Voila j'ai ce petit code assé simple qui scrute donc chaque cellule de la plage nommé Z_Cpt_rendu à recherche d'une portion de chaine de caractère. Ensuite je récupere certain éléments voisin si la condition est rempli.

    Ma boucle se fait sur plus de 5500 lignes et peut etre plus en fonction des fichiers. A mon dernier chrono, j'avais 30mn d'éxé ce qui est énorme, mais je ne comprend pas pourquoi autant.

    Pourriez vous jeter un oeil sur mon code et m'éclairer?
    Merci d'avance

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Sub Cpt_ope_PDA()
    Dim cell As Range
    Worksheets("Analyse PDA").Activate
     
    Line = 25
    For Each cell In Range("Z_Cpt_rendu")
     
       If cell Like "*2*_*" Then
       Etat = cell.Offset(0, -57)
     
          If Etat = "TE" Or Etat = "AR" Then
             V_Typ_ope = cell.Offset(0, -59).Value
                            'cell.Offset(0, 57).Activate
                            'If ActiveCell Like "*2*_*" Then
             Pos = InStr(cell, "_")
             Pos = Pos - 3
             If cell <> "" And Pos >= 0 Then
             Result = Mid(cell, Pos, 8)
             T_Result = Val(Result)
                If T_Result <> 0 Then
                Worksheets("Analyse PDA").Range("B" & Line) = V_Typ_ope
                Worksheets("Analyse PDA").Range("C" & Line) = Etat
                Worksheets("Analyse PDA").Range("D" & Line) = Result
                Line = Line + 1
                End If
     
     
             End If
           End If
       End If
    Next cell
     
    End Sub

  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
    Par défaut
    Bonjour,

    Pour gagner du temps de traitement, tu peux désactiver l'affichage ainsi que les calculs
    Ne pas oublier de les réactiver a la fin de traitement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
     
    ... Traitement
     
     
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour

    Une proposition en faisant un filtre automatique et en ne parcourant que les cellules visibles.
    Pour cela, il faut donner plus de précision dur la plage Z_Cpt_Rendu (quelle colonne) et d'indiquer si tu as une ligne des titres.

    Un extrait du fichier (sans données confidentielles sera le bien venu).

    Une autre variante est de travailler avec des variables tableaux

  4. #4
    Membre expérimenté Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Par défaut Un grand merci
    Merci à vous deux pour vos réponses rapide!

    jfontaine je ne connaissez pas ce morceau de code mais il vient de me sauver la vie...
    2sec d'éxé c'est nickel chrome.

    Je retiens aussi la solution du préfiltre qui pourra aider.

    Bonne journée

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

Discussions similaires

  1. Merci de nous aider à créer des ressources (FAQ et sources)
    Par Community Management dans le forum Evolutions du club
    Réponses: 29
    Dernier message: 19/10/2015, 00h35
  2. Merci de m'aider , Glassfish lib Path Javacomm.jar
    Par dremos dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 27/12/2008, 22h41
  3. [URL Rewriting] important, merci de m'aider
    Par SkyDev dans le forum Apache
    Réponses: 3
    Dernier message: 11/09/2007, 10h39
  4. Problème de choix Merci de m'aider
    Par Marroukiya2007 dans le forum UML
    Réponses: 6
    Dernier message: 08/04/2007, 21h51

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