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 :

Optimisation de temps d'exécution d'un Code VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 43
    Par défaut Optimisation de temps d'exécution d'un Code VBA
    Bonjour à tous et à toutes !!!!


    je vouderais savoir , si il existe des tutoriels , traitant de l'optimisation du code en VBA . Ce tutoriel pourras m'aider peut etre à réduire le temps de chargement de mon programme , car pou le moment le temps qu'il met juste à charger c'est 2 Min , et j'aimerais bien le faire passer à 25 seconde ou meme à 40 sec .

    Si quelqu'un à des bonnes ideés je suis à votre ecoute !!!!


    Je vous remercie d'avance

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Bonjour

    pour optimiser un code VBA tu peux travailler avec des objets, des tableaux etc... il y a plein de bon exemple sur le site dans les tutoriaux et la FAQ.

    Mais de quoi peut venir un temps si long ? tu charge ton fichier depuis un réseau ? ton fichier est énorme ? tu lances un paquet de macros au lancement du classeur ?

    En as tu une idée ?

  3. #3
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 43
    Par défaut
    Pour vous répondre , je lance mon fichier depuis mon PC de bureau , le fichier Excel Fait que 1.72 Mo , l'idée que j'ai , c'est que au chargement ( cad quand je click sur le fichier excel , y'as un userforme qui s'affiiche et quand je clic sur le bouton charger , alors il met un temps enorme.Peut etre c'est qu'au lancement sumultanée de toute les macros . y'a t'il un moyens de ne pas les lancer au debut et que des lancer qu'au moment ou en a vraiment besoin , c'est à dire quand on veut demarer le calcul ?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    quand je clic sur le bouton charger
    En fait ce qu'il faudrait voir c'est les actions qui sont effectuées lorsque tu clic sur ce bouton car il charge quoi ? des informations sur d'autres classeurs ou d'autres fichiers.

    dans l'éditeur vb il faudrait que tu double clic sur le bouton charger du userForm et que tu regardes ce qui est codé derriere. Et au pire nous mettre ce code.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour

    De plus ce serait bon d'avoir un extrait de code pour se donner une idée de ce que tu as fait.

    Quelques indications, il faut éviter les Select, Activate dans un premier temps.

    Philippe

  6. #6
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 43
    Par défaut
    Voila le programme du Bouton Charger , je pense qu'il fait appel à des procedures qui font appel à leur tour à d'autre fonction de calcul




    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    Private Sub Charger_Click()
    ' bouton Charger
     
    ChoixTolerie = ComboBox1.Value      'choix de tolerie de l'utilisateur
    ChoixBobinage = ComboBox2.Value     'choix de bobinage de l'utilisateur
    ChoixApplication = ComboBox3.Value  'choix d'application de l'utilisateur
     
    For Each Feuille In Worksheets
        If ChoixTolerie <> "" And Feuille.Name = "Données tol " & ChoixTolerie Then
            'chargement dans la feuille "conversion" des donnees correspondantes au choix tolerie
            DonneesTolerie
            markerTolerie = True
        End If
     
        If ChoixBobinage <> "" And Feuille.Name = "Données bob " & ChoixBobinage Then
            'chargement dans la feuille "conversion" des donnees correspondantes au choix bobinage
            DonneesBobinage
            markerBobinage = True
        End If
     
        If ChoixApplication <> "" And Feuille.Name = "Données appli " & ChoixApplication Then
            'chargement dans la feuille "Résultats finaux" et "Résultats finaux Imini" des donnees correspondantes au choix application
            DonneesApplication
            markerApplication = True
        End If
     
        If markerTolerie = True And markerBobinage = True And markerApplication = True Then
            marker = True
        End If
    Next Feuille
     
    If marker = True Then
        'faire disparaitre la boite de dialogue
        UserForm1.Hide
        Unload UserForm1
     
        'afficher les 3 feuilles classiques et masquer "Accueil"
        Application.ScreenUpdating = False  'Mise à jour d'écran désactivée
        Application.Interactive = False     'Bloque les interactions souris-clavier
     
        With ThisWorkbook
            Worksheets("Performances").Visible = xlSheetVisible
            Worksheets("Résultats finaux").Visible = xlSheetVisible
            Worksheets("Conversion").Visible = xlSheetVisible
            Worksheets("Performances Imini").Visible = xlSheetVisible
            Worksheets("Résultats finaux Imini").Visible = xlSheetVisible
            Worksheets("Accueil").Visible = xlSheetHidden
            Worksheets("Conversion").Activate
     
            .Saved = True   'indique qu'aucune modification n'a ete apportée aux données
        End With
     
        Application.ScreenUpdating = True  'Mise à jour d'écran activée
        Application.Interactive = True     'Débloque les interactions souris-clavier
    End If
     
    If marker = False Then
        a = MsgBox("Veuillez choisir une tôlerie, un ensemble bobinage + longueur de fer et une application dans les listes déroulantes." & Chr(13) & "Si vous ne trouvez pas les réferences que vous recherchez, vous pouvez les créer en cliquant sur les boutons ""Créer""", vbExclamation)
    End If
    Application.Visible = True
     
    End Sub

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Il y aurait bien une ou deux petites choses à améliorer mais il est propre et ce n'est pas lui qui te fait perdre autant de temps.

    par contre il y a trois appel de procedure onneesTolerie, DonneesBobinage et DonneesApplication

    on peut continuer le débrousaillage, avec la première par exemple !

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut Adilleroy et le forum
    Pas sûr de comprendre ta macro , manque certaines infos : comme sa logique
    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
    For Each Feuille In Worksheets
        If ChoixTolerie <> "" And Feuille.Name = "Données tol " & ChoixTolerie Then
            'chargement dans la feuille "conversion" des donnees correspondantes au choix tolerie
            DonneesTolerie
            markerTolerie = True
        End If
     
        If ChoixBobinage <> "" And Feuille.Name = "Données bob " & ChoixBobinage Then
            'chargement dans la feuille "conversion" des donnees correspondantes au choix bobinage
            DonneesBobinage
            markerBobinage = True
        End If
     
        If ChoixApplication <> "" And Feuille.Name = "Données appli " & ChoixApplication Then
            'chargement dans la feuille "Résultats finaux" et "Résultats finaux Imini" des donnees correspondantes au choix application
            DonneesApplication
            markerApplication = True
        End If
     
        If markerTolerie = True And markerBobinage = True And markerApplication = True Then
            marker = True
        End If
    Next Feuille
    Juste une hypothèse d'école :
    Tu as 15 feuilles "Données tol XXX" tu lances ta macro et c'est la première donnéede la première feuille qui correspond à tes besoin. Donc ta macro va parcourir les 14 autres feuilles pour faire ??? Dans le style perdre du temps...
    Mais comme je ne connais pas le fichier...
    A+

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

Discussions similaires

  1. [XL-2007] Optimisation du temps d'exécution d'un code vba
    Par chepa dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/06/2012, 09h39
  2. [datenum] Optimiser le temps d'exécution
    Par xduris dans le forum MATLAB
    Réponses: 11
    Dernier message: 08/08/2007, 16h07
  3. [Fait]Temps d'exécution d'un code
    Par JeremieT dans le forum Contribuez
    Réponses: 2
    Dernier message: 30/08/2006, 06h20
  4. optimiser le temps d'exécution de l'explorateur windows
    Par ben_iap dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 31/01/2006, 22h04
  5. Réponses: 9
    Dernier message: 20/06/2005, 12h17

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