Pouvoir interrompre ma macro en action

Salut le forum

J'ai presque fini la conception de mon logiciel mais un soucis subsiste.

Le code ci-dessous me permet par la fonction Sendkey, renseigner le logiciel de la société des informations d'une plage excel.

Comme vous le savez tous, la fonction sendkey n'est pas sûr à 100% donc il arrive souvent que l'on constate des disfonctionnement lorsque la macro est en action.

Ce que je souhaite est de pouvoir interrompre la macro en cours d'action et pouvoir le relancer.

Actuellement je suis obligé de laisser le disfonctionnement continuer jusqu'à la fin avant de reprendre le tout.

Cela me fais perdre du termps et s'il y'avait une solution permettant d'arrêter la macro à n'importe quelle étape de son cours, je gagnerai du temps car il me suffira de taper sur la touche ESC pour tout interrompre l'action de ma macro et la relancer.

Je vous demande de m'aider comme d'habitude afin que mon logiciel puisse avoir du succès.

N.B : je ne suis pas figé dans mes demandes d'aide donc suis favorable à d'autres meilleures solutions de votre part.

Sub activePack()
Dim i As Integer, MemJ8 As Integer

'On Error GoTo gestionerreur
If MsgBox("Avant de confirmer la saisie automatique, assurez-vous que :" & Chr(10) & Chr(10) & "- Les observations du client issues de la vérification des informations ont été prises en compte," & Chr(10) & "- Vous êtes bien positionné sur le menu ouverture simplifié - Nouveau Client Pack ... .", vbYesNo, "Demande de confirmation") = vbYes Then

AppActivate "NOM DU LOGICIEL DE MA SOCIETE ICI"
attendre 0.6

Sheets("RECUP").Select
'POSITIONNEZ-VOUS SUR LE MENU SIMPLIFIE HANGAR SOUHAITE
For i = 4 To 4
attendre 0.5
SendKeys Range("j4").Value & Chr(13), True
attendre 0.6

Next

For i = 5 To 5
attendre 0.5
SendKeys Range("j5").Value & Chr(13), True
attendre 0.6

Next
For i = 6 To 6
attendre 0.5
SendKeys Cells(i, 10).Value, True
attendre 0.6
Next
For i = 7 To 7
attendre 0.5
SendKeys "" & Chr(13), True
attendre 0.6

Next
    SendKeys "N" & Chr(13), True
    attendre 0.8

    SendKeys "{LEFT}"
    SendKeys "{ENTER}"
    attendre 0.7

    SendKeys "~"
attendre 0.8

For i = 8 To 25
' Si I = 8 alor on mémorise la valeur de la cellule
If i = 8 Then MemJ8 = Range("J8").Value
' Si I = 16 ou 17
If i = 17 Or i = 18 Then
' Si la veleur mémorisée est 3
If MemJ8 = 3 Then
' On inscrit le nom et le prénom du mari
SendKeys Cells(i, 10).Value, True

SendKeys "~"
attendre 0.7

End If
Else
' Si I à une autre valeur que 16 ou 17
SendKeys Cells(i, 10).Value, True
attendre 0.7

SendKeys "~"
attendre 0.6
End If

Next
For i = 26 To 45
SendKeys Cells(i, 10).Value, True
attendre 0.5
SendKeys "~"
attendre 0.7

Next
SendKeys "+{F3}"
attendre 0.7

For i = 46 To 53
SendKeys Cells(i, 10).Value, True
attendre 0.5
SendKeys "~"
attendre 0.7

Next
SendKeys "+{F6}"
attendre 0.7

For i = 54 To 54
SendKeys Cells(i, 10).Value, True
attendre 0.7

Next
Exit Sub
gestionerreur:
MsgBox "fichier non ouvert ou réduit dans la barre des tâches : abandon"
End If
End Sub
Sub attendre(sec%)
Dim deb&, fin&
deb = Timer
fin = deb + sec%
Do Until Timer >= fin
DoEvents
Loop
End Sub

Salut le forum

Pas de solution pour mon problèl.

Bonjour,

je ne sais pas si j'ai bien compris la problématique. Mais pour stopper une macro en cours tu fais Ctrl + Pause ...

Est ce que ça répond à ta question ?!

Salut Plop

Merci pour votre réponse.

Je m'excuse du temps mis pour réagir.

Cela ne fait pas mon problème.

En passant par ces méthodes, je rencontre des beug et surtout quand tu travail sur des usfs.

Je souhaite une méthode classique pour arrêter la macro.

Merci

Bonsoir,

Soit tu sais ou l'arrêter et tu y mets un Stop ou un Msgbox (suite à un test si besoin), soit tu ne sais pas et là tu ne peux rien faire.

eric

Salut eriic et le forum

Merci pour ta contribution.

Je dois pouvoir l'arrêter à tout moment.

Si je click sur le bouton stop dont tu parles, cela doit entrainer l'arrêt de la macro.

Merci de m'aider avec une proposition pour appréciation.

Cdlt

Bonjour,

Je ne te parlais pas d'un bouton Stop, mais de l'instruction Stop.

Que tu mets ou tu veux dans le code...

Pour l'arrêter n'importe quand tu as eu la réponse : Ctrl+Pause

eric

Salut eriiic et le forum

Ok pour votre solution.

Pouvez-vous réaliser ce que vous dites avec mon code svp?

Cdlt

Bonjour,

heuuu, tu as vraiment besoin de moi pour écrire stop à l'endroit que tu veux ?????

Au passage fais F1 dessus quand tu l'auras écris.

eric

Salut Eriic et le forum

Excuse pour le temps mis pour te revenir.

J'ai esayé de réaliser quelque chose mais le fonctionnement n'es pas rassurant.

En effet, lorsque j'arrête la macro, j'ai des difficultés pour la faire fonctionner à nouveau.

Merci d'apprécier le code du fichier joint svp.

36teststop.xlsm (34.30 Ko)

Bonsoir,

Et pourquoi tu ne mets pas Stop au lieu de Exit Sub ?

Tu pourras relancer.

Au passage For i = 4 To 4 n'a pas de sens et ne sert à rien puisque tu ne parcours la boucle qu'une fois...

Si c'est pour remplir des champs dans une autre appli tu n'arriveras jamais à synchroniser avec les macros excel.

Penche-toi plutôt sur les logiciels de macro windows.

Par exemple Super Macro mais il y en a d'autres.

http://adam.denadai.free.fr/index.php?page=accueil

eric

Salut Eriic

merci pour cette nouvelle orientation.

J'ai essayé de parcourir super macro mais je n'arrive pas à bien percevoir sonn utilité.

Suis noviste en vba et j'ai besoin souvent d'explication terre à terre pour mieux comprendre.

Comme vous semblez vous connaître est ce que vous pouvez me guider afin que je voie son utilité.

Avec super macro, dois-je rompre avec ma macro actuelle ou super macro me permettra d'améliorer mon code?

En attendant que je pousse également mes reflexion, merci de voir comment vous pourrez me faire comprendre super macro et son utilité dans mon cas.

Re,

Super macro n'a rien à voir avec excel et est totalement indépendant.

Je pourrais difficilement te guider dessus vu que je ne l'utilise pas. Dans le temps j'en utilisais un autre mais payant.

En gratuit, tu as AutoIt aussi.

Ce sont des logiciels avec lesquels tu peux enregistrer tes actions sur les fenêtres (déplacement souris, clics, envoi de chaines...) et ils les reproduisent. Tu peux également programmer avec des boucles etc

Par contre une chose qui semble manquer aux gratuits : détecter la présence d'une chaine à une position précise. Ca te permet de synchroniser l'envoi de données avec la réponse du système.

Sur super macro creuser la 'détection d'objet' ainsi que leurs propriétés voir si tu pourrais synchroniser avec ça (?)

Celui que j'utilisais permettant la synchronisation c'est wintask. C'est cher mais si ça te suffit tu as une version d'évaluation 30j complète.

eric

Salut eriiic

Merci pour vos conseils.

J'ai pas su comment exploiter super macro mais j'ai trouvé une alternative.

Bonjour,

Hé bé, 2 ans plus tard...

Mieux vaut tard que jamais remarque

eric

Rechercher des sujets similaires à "pouvoir interrompre macro action"