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 :

Attendre la fin des calculs avant de poursuivre la Macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 95
    Points : 56
    Points
    56
    Par défaut Attendre la fin des calculs avant de poursuivre la Macro
    Bonjour,

    Après quelques recherche sur internet je n'ai pas trouvé une réponse pertinente à ma question.
    En effet, j'aimerais savoir si il existe une méthode qui puisse permettre d'attendre la fin des calcul de ma feuille pour ensuite poursuivre la macro.

    Merci de votre aide.

  2. #2
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Bonjour Miigui,

    Voilà un exemple de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
        Dim TempModeCalcul As XlCalculation
        TempModeCalcule = Application.Calculation 'recuperation du mode de calcule du classeur
     
        Application.Calculation = xlCalculationManual 'passage en calcule manuel
            '
            'Premiere Partie du code
            '
            Application.Calculate 'Calcule tout le classeur (le code passe a la ligne suivante a la fin du calcul)
            '
            'Seconde Partie du code
            '
        Application.Calculation = TempModeCalcul 'retabli le mode de calcul avant execution de la Sub
    End Sub
    Tu peux remplacer Application.Calculate par Thisworkbook.Sheet("Nom de la feuille").Calculate pour calculer une seule feuille.
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 431
    Points
    12 431
    Par défaut
    Bonjour
    Le calculs (formules) de Excel sont faits dans un fil (thread) distinct de celui de VBA.
    Je vois personnellement mal , dans ces conditions, comment la solution que tu proposes, antonysansh, telle que tu la proposes, pourrait pallier la difficulté exposée.

    PS : se donner une chance en ajoutant un DoEvents ou plusieurs en boucle. Mais je n'aime pas trop car c'est "estimer arbitrairement" le temps nécessaire aux calculs.
    Ou encore : déterminer quelle est la dernière cellule calculée. En relever la valeur au début de la macro et boucler jusqu'à constater une modification de sa valeur puis exécuter le reste des instructions de la macro.

    Voilà bien l'une des raisons pour lesquelles je n'aime personnellement pas que l'on fasse cohabiter Excel (ses formules) et VBA
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Points : 484
    Points
    484
    Par défaut
    Bonjour,

    Peut-être en utilisant Application.CalculationState (voir l'aide) dans un Do...Loop ?

Discussions similaires

  1. Attendre la fin des animations sur un groupe
    Par SpaceFrog dans le forum jQuery
    Réponses: 13
    Dernier message: 19/03/2011, 22h49
  2. [XL-2003] Attendre fin des calculs pour poursuivre la macro
    Par Cerize dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/12/2010, 09h51
  3. [Thread] Un père qui doit attendre la fin des fils
    Par Chatbour dans le forum Concurrence et multi-thread
    Réponses: 9
    Dernier message: 09/09/2008, 14h29
  4. [JBoss] Attendre la fin du démarrage avant d'accepter des connexions
    Par Frédéric Bouchery dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 14/06/2007, 15h29
  5. Attendre la fin des threads fils d'un processus
    Par SteelBox dans le forum Windows
    Réponses: 15
    Dernier message: 24/02/2006, 16h08

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