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 :

Problème d'optimisation code VBA [XL-2013]


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
    Ecole d'ingénieur formation Maîtrise des Energies
    Inscrit en
    Juillet 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ecole d'ingénieur formation Maîtrise des Energies

    Informations forums :
    Inscription : Juillet 2018
    Messages : 28
    Par défaut Problème d'optimisation code VBA
    Bonjour,

    Je débute en VBA et j'ai un problème d’optimisation de code. La feuille de calcul est lente à faire le calcul.
    Je ne sais pas si il y a un moyen d'optimiser mon code mais si vous avez des idées je suis preneur.
    Le but du code est d'affecter des valeurs de cellules de la feuille "Table of Data" à des cellules de la feuille "Calculation".

    Voilà le code :

    If Range("O20").Value = 0 Then
    Worksheets("Calculation").Range("D59").Value = Worksheets("Table of Data").Range("P30").Value
    Worksheets("Calculation").Range("D60").Value = Worksheets("Table of Data").Range("P30").Value
    Worksheets("Calculation").Range("D61").Value = Worksheets("Table of Data").Range("P32").Value
    Worksheets("Calculation").Range("D62").Value = Worksheets("Table of Data").Range("P31").Value
    Worksheets("Calculation").Range("K32").Value = Worksheets("Table of Data").Range("P36").Value
    Worksheets("Calculation").Range("K33").Value = Worksheets("Table of Data").Range("P35").Value
    End If
    If Range("O20").Value = 1 Then
    Worksheets("Calculation").Range("D59").Value = Worksheets("Table of Data").Range("U30").Value
    Worksheets("Calculation").Range("D60").Value = Worksheets("Table of Data").Range("U30").Value
    Worksheets("Calculation").Range("D61").Value = Worksheets("Table of Data").Range("U32").Value
    Worksheets("Calculation").Range("D62").Value = Worksheets("Table of Data").Range("U31").Value
    Worksheets("Calculation").Range("K32").Value = Worksheets("Table of Data").Range("U38").Value
    Worksheets("Calculation").Range("K33").Value = Worksheets("Table of Data").Range("U37").Value
    Worksheets("Calculation").Range("K34").Value = Worksheets("Table of Data").Range("U35").Value
    End If

    Je vous remercie par avance si vous avez une solution.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Sour As Variant, Dest as Variant, Lig As Long
     
    Select Case Range("O20").Value
    Case 0
         Sour = Array("D59", "D60", "D61", "D62", "K32", "K33")
         Dest = Array("P30", "P30", "P32", "P31", "P36", "P35")
    Case 1
         Sour = Array("D59", "D60", "D61", "D62", "K32", "K33", "K34")
         Dest = Array("U30", "U30", "U32", "U31", "U38", "U37", "U35")
    End Select
     
    For Lig = 0 To UBound(Sour)
          Worksheets("Calculation").Range(Sour(Lig)).Value = Worksheets("Table of Data").Range(Dest(Lig)).Value
    Next Lig

  3. #3
    Membre averti
    Homme Profil pro
    Ecole d'ingénieur formation Maîtrise des Energies
    Inscrit en
    Juillet 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ecole d'ingénieur formation Maîtrise des Energies

    Informations forums :
    Inscription : Juillet 2018
    Messages : 28
    Par défaut
    Je te remercie !!
    Ton code m'a permis de rendre plus rapide le calcul.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Le code est plus clair et plus souple mais je ne comprends pas pour quelle raison il serait plus rapide qu'un adressage direct...

  5. #5
    Membre averti
    Homme Profil pro
    Ecole d'ingénieur formation Maîtrise des Energies
    Inscrit en
    Juillet 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ecole d'ingénieur formation Maîtrise des Energies

    Informations forums :
    Inscription : Juillet 2018
    Messages : 28
    Par défaut
    Je ne sais pas, en fait avant cette partie du code j'affiche différentes images en fonction de différents paramètres.
    Après avoir écrit la suite de mon code (avec toutes les fonctions if), lorsque je changeait un paramètre les images apparaissaient lentement et les affectation de valeur au cellules 1 par 1 (la souris clignotait à chaque condition j'ai l'impression).

    J'ai changé mon code par le tien et la souris ne clignote plus et les images apparaissent aussi plus rapidement.

    Je suis peut-être fou mais j'ai cette impression.

    Merci encore car dans tout les cas ton code est plus clair !

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

Discussions similaires

  1. Problème avec un code VBA
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/08/2008, 13h57
  2. Optimiser code VBA
    Par willytito dans le forum VBA Access
    Réponses: 5
    Dernier message: 19/11/2007, 09h49
  3. Problème avec un code Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/10/2007, 16h43
  4. Problème d'un Code VBA pour créer un répertoire
    Par cfidko dans le forum VBA Access
    Réponses: 24
    Dernier message: 26/06/2007, 14h30
  5. Problème SQL dans code VBA
    Par benjisan dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 15/05/2007, 13h22

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