Exécuter plusieurs macro(s) simultanément

Bonjour,

Je souhaite réaliser une animation sous EXCEL 2016.

Cependant, j'ai un problème pour l’exécution, j'aimerais exécuter ces 2 macros en même temps.

Il faut donc que l'ordinateur lit les deux macros simultanément, lorsque je clique sur un bouton dans la feuille excel.

Pour info :

Macro "pioche" = permet la rotation d'un pioche (image)

Macro " soleil" = permet de faire bouger le soleil de gauche à droite

Sub Math()

Call pioche
Call soleil

End Sub

Pour rappel la fonction "call" appelle une macro.

Merci d'avance

Bonjour

un fichier peut-être ?

Bonjour,

Ce n'est tout simplement pas possible ! VBA étant du code interprété, le compilateur lit et exécute ligne par ligne du haut vers le bas.

Tu peux peut être fusionner tes deux procédures afin de les faire avancer en même temps ?

Bonjour,

Ce n'est tout simplement pas possible ! VBA étant du code interprété, le compilateur lit et exécute ligne par ligne du haut vers le bas.

Tu peux peut être fusionner tes deux procédures afin de les faire avancer en même temps ?

Bonsoir,

c'est bien ce que je pensais.

En le fusionnant , ça fonctionne mais le code devient vite compliqué :p

Merci quand même

Bonsoir

Juste pour montrer que cela est possible, mais sans ton fichier ni ton code pas facile.

Vois si cela t'inspire, ce code n'est pas de moi, je l'ai juste récupéré et adapté car je trouve sympa.

@+

Cordia5

Bonjour,

CORDIA5, remplaces ton code par celui-ci-dessous et dis moi si ton animation continue durant le déroulement de la macro appelée ?

Comme tu peux le constater, tes figures restent figées pour la simple et bonne raison que ce n'est pas possible que deux macros se déroulent en parallèle. Le DoEvents ne fait que laisser la main à l'application Excel car ça demande au compilateur de faire une micro pause dans le déroulement du code afin de permettre à Excel de poursuivre sont activité.

Les procédures et fonctions VBA se déroulent dans un seul et même thread (le même processus) et pour pouvoir faire tourner plusieurs macros indépendamment les unes des autres, il faut du multi threads et dans ce cas, il faut développer sous VB.Net :

Dim Arret As Boolean
Dim NombreFois As Integer

Sub Worksheet_Activate()

'Déclaration variable DEGREE_ROTATION comme valeur double.
Dim DEGREE_ROTATION As Double

'Définition du degré de rotation de départ du smiley dans la boite à 0 degrés
DEGREE_ROTATION = 0

On Error Resume Next 'Gestion des erreur par si erreur passer et continuer

Do While IsEmpty(ThisWorkbook.Worksheets(1).Range("x1"))

   If Arret = True Then Exit Sub

   DoEvents 'Raffraichir l'application pour y garder la main

    '###########################################################################################
    MacroAppelee '<--- la macro est appelée ici et on voit bien que la boucle ne continue pas !
    '###########################################################################################

   If DEGREE_ROTATION >= 350 Then

   DEGREE_ROTATION = 0
   End If
   '_____________________________________________________________________________

   'Rotation du smiley à la valeur DEGREE_ROTATION
    ThisWorkbook.Worksheets(1).Shapes.Range(Array("Émoticône 2")).ThreeD.RotationX = DEGREE_ROTATION
    ThisWorkbook.Worksheets(1).Shapes.Range(Array("Émoticône 1")).ThreeD.RotationX = DEGREE_ROTATION
    ThisWorkbook.Worksheets(1).Shapes.Range(Array("Émoticône 3")).ThreeD.RotationX = DEGREE_ROTATION
    ThisWorkbook.Worksheets(1).Shapes.Range(Array("Émoticône 4")).ThreeD.RotationX = DEGREE_ROTATION
   'Ajout +2.5 degrés à DEGREE_ROTATION pour la prochaine rotation
   DEGREE_ROTATION = DEGREE_ROTATION + 2.5

Loop
'---------------------------------------------------------------------------------------------------------

End Sub

Sub MacroAppelee()

    Dim I As Long
    Dim J As Integer

    For I = 1 To 1000

        Range("C10").Value = "Traitement en cours position " & I & ", lza main n'est pas rendue à la macro appelante !"

        For J = 1 To 100
            DoEvents '<--- ici aussi on laisse la main mais ce n'est pas pour ça que l'animation continue !
        Next J       'la main est seulement laissée à l'application Excel et non au déroulement d'un autre code

    Next I

    NombreFois = NombreFois + 1

    If NombreFois > 5 Then Arret = True

End Sub

Bonjour

Sa demande : Pour info :

Macro "pioche" = permet la rotation d'un pioche (image)

Macro " soleil" = permet de faire bouger le soleil de gauche à droite

Il souhaite faire bouger deux images, cela est possible, après je n'ai pas son fichier ni ses images, alors .....à lui de voir.

Cordia5

Re,

Mais comme le montre très bien ton code (une partie ci-dessous), tu ne peux pas faire fonctionner deux macros simultanément et indépendamment l'une de l'autre et ton code rejoint ce que j'ai dis dans mon premier post :

...Tu peux peut être fusionner tes deux procédures afin de les faire avancer en même temps ?...

il faut fusionner les deux macros :

    ThisWorkbook.Worksheets(1).Shapes.Range(Array("Émoticône 2")).ThreeD.RotationX = DEGREE_ROTATION
    ThisWorkbook.Worksheets(1).Shapes.Range(Array("Émoticône 1")).ThreeD.RotationX = DEGREE_ROTATION
    ThisWorkbook.Worksheets(1).Shapes.Range(Array("Émoticône 3")).ThreeD.RotationX = DEGREE_ROTATION
    ThisWorkbook.Worksheets(1).Shapes.Range(Array("Émoticône 4")).ThreeD.RotationX = DEGREE_ROTATION

chaque image est pivoté après la précédente donc l'une après l'autre et pas en même temps donc, tu ne peux pas affirmer ceci :

...Juste pour montrer que cela est possible...

Bonsoir

Peut-être y a t-il un truc qui m'échappe Theze, mais prends le fichier dans mon poste au-dessus et tu verras que les 4 icônes tournent en même temps, donc il possible de faire pivoter, bouger deux formes, shappes en même temps.

Cordia5

Bonjour,

Elles ne tournent pas en même temps mais l'une après l'autre, ce qui te donnes l'impression qu'elles tournent en même temps est le fait que ton processeur et ta carte graphique (comme ceux des PC modernes) traitent très rapidement les calculs de positionnement mais si tu parcours ton code en pas à pas, tu comprendra ce que je veux dire.

Oui je suis d'accord avec toi, mais au visuel les icônes tournent en même temps, et je pense que c'est l'effet qu'il recherche,......non??

Bonsoir,

Oui, ça devrait lui convenir !

Rechercher des sujets similaires à "executer macro simultanement"