Explication technique 2 macros-Est-ce possible?

  • Initiateur de la discussion Initiateur de la discussion JJ1
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

JJ1

Guest
Bonsoir,

Je voudrais votre avis sur la possibilité de lancer 2 macros:
Un fichier Excel 1 contient une macro A (par ex afficher aléatoirement un nombre en colonne A)
Je crée par sauvegarde le même fichier Excel 2 avec la même macro B.
J'ouvrir les 2 fichiers Excel en partage d'écran.
Un bouton au centre de l'écran lancerait les 2 macros simultanément et la macro stopperait lorsque le résultat aléatoire en colonne A des 2 fichiers serait identique.
Est-ce possible à votre avis et cela supposerait donc la création d'un troisième fichier de comparaison (qui ralentirait les 2 macros?)?
Merci.
Bonne soirée à tous.
 
Re : Explication technique 2 macros-Est-ce possible?

Bonsoir,

Je voudrais votre avis sur la possibilité de lancer 2 macros:
Un fichier Excel 1 contient une macro A (par ex afficher aléatoirement un nombre en colonne A)
Je crée par sauvegarde le même fichier Excel 2 avec la même macro B.
J'ouvrir les 2 fichiers Excel en partage d'écran.
Un bouton au centre de l'écran lancerait les 2 macros simultanément et la macro stopperait lorsque le résultat aléatoire en colonne A des 2 fichiers serait identique.
Est-ce possible à votre avis et cela supposerait donc la création d'un troisième fichier de comparaison (qui ralentirait les 2 macros?)?
Merci.
Bonne soirée à tous.

Salut

ça marche avec une seule macro pour autant de classeurs que tu veux :

Code:
'dans un module standard :

Dim check()

Sub test()
Do
    ReDim check(0)
    For i% = 1 To Application.Workbooks.Count
        ReDim Preserve check(i)
        check(i) = Int(Rnd * 10)
        Workbooks(i).Sheets(1).Range("a1") = check(i)
    Next
Loop Until finish = True
End Sub

Private Function finish() As Boolean
finish = True
For j% = 1 To UBound(check) - 1
    finish = (check(j) = check(j + 1)) * finish
Next
End Function

ou plus rapide mais pas exactement comme demandé :

Code:
'dans un module standard :

Sub test()

For i% = 1 To Application.Workbooks.Count
    Do
        Workbooks(i).Sheets(1).Range("a1") = Int(Rnd * 10)
    Loop Until Workbooks(i).Sheets(1).Range("a1") = Workbooks(i + (i <> 1)).Sheets(1).Range("a1")
Next

End Sub

enjoy...

😉
 
Dernière édition:
Re : Explication technique 2 macros-Est-ce possible?

Bosoir Bérylion,

Merci pour ton code et ton explication.
L'idée était différente : il s'agissait de 2 fichiers identiques contenant la même macro, ces 2 macros (donc indépendantes) étant lancées simultanément et leurs résultats comparés (par une 3ème macro?) qui indiquerait, à un moment t, deux nombres identiques trouvés par les 2 macros simultanément.
Bon réveillon.
 
Re : Explication technique 2 macros-Est-ce possible?

Bosoir Bérylion,

Merci pour ton code et ton explication.
L'idée était différente : il s'agissait de 2 fichiers identiques contenant la même macro, ces 2 macros (donc indépendantes) étant lancées simultanément et leurs résultats comparés (par une 3ème macro?) qui indiquerait, à un moment t, deux nombres identiques trouvés par les 2 macros simultanément.
Bon réveillon.

re-

alors la réponse est catégorique et sans appel : c'est NIET !!

tu ne peux pas exécuter 2 procédures simultanément.
le mieux que tu puisses faire c'est, par une 3eme macro, lancer une boucle qui fait tourner les 2 premières l'une à la suite de l'autre jusqu'a ce que les 2 résultats soient identiques :

exemple :

1er classeur nommé "classeurtest1.xls" :
Code:
'dans un module standard
Sub test()
ThisWorkbook.Sheets(1).Range("a1") = Int(Rnd * 10)
End Sub

2eme classeur nommé "classeurtest2.xls" :
Code:
'dans un module standard
Sub test()
ThisWorkbook.Sheets(1).Range("a1") = Int(Rnd * 10)
End Sub

3eme classeur nommé "classeurtest3.xls" :
Code:
Sub test()
Do
    Run "classeurtest1.xls!test"
    Run "classeurtest2.xls!test"
Loop Until Workbooks("classeurtest1.xls").Sheets(1).Range("a1") = Workbooks("classeurtest2.xls").Sheets(1).Range("a1")
End Sub

et bonané à toi 😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

G
Réponses
2
Affichages
1 K
GeoLek
G
M
Réponses
4
Affichages
1 K
M
J
Réponses
1
Affichages
2 K
J
T
Réponses
22
Affichages
6 K
Thibault LB
T
T
Réponses
21
Affichages
3 K
C
Réponses
4
Affichages
1 K
C
Retour