Suspendre une macro le temps d'exécution d'un script sur SAP

Résolu/Fermé
yaciin - 28 févr. 2014 à 12:37
yaciin Messages postés 23 Date d'inscription mercredi 15 janvier 2014 Statut Membre Dernière intervention 27 août 2014 - 10 mars 2014 à 11:37
Bonjour le forum,

je suis content de retourner vers vous, pour apprendre encore de vos expériences.

mon problème et le suivant :

je travaille sur une macro qui donne comme fruit un fichier excel composé d'informations récupérés depuis deux autres fichiers excel ( fichier_1 + fichier_2 + Ma_Macro = fichier_fruit )

ce qui est particulier c'est que ces deux fichiers d'entrée sont récupérés depuis SAP, grâce à un script, ce script est appelé au début ma macro, et la suite de ma macro (les lignes qui viennent après l'appel du script ) dépend du résultat du script.

Donc, mon soucis c'est de suspendre l'exécution des lignes qui viennent après l'appel du script, le temps que le script soit exécuté et les fichiers seront sauvegardés. car ce que VBA fait c'est lancer l'appel d'exécution de script sur SAP et continuer à exécuter ce qui suit.

j'espére que j'ai bien expliquer mon probléme.
En attente de vos précieuses suggestions et Merci d'avance.

7 réponses

skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54
4 mars 2014 à 17:01
Tu peux essayé un msgbox qui bloquera donc le déroulement de la macro tant que tu n'auras cliquer sur OK.

Et Cliquer sur OK quand le 2e scripte est terminé.

Enfin je ne sais pas si ça marche.
0
PHILOU10120 Messages postés 6393 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 9 octobre 2024 810
5 mars 2014 à 09:41
Bonjour

Vous pouvez essayer de mettre une question et répondre une fois la requête terminée

If MsgBox("Le script SAP est terminé ?", vbYes, "") = vbYes Then
End If

répondre Ok quand le script est terminé
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 240
5 mars 2014 à 10:51
Bonjour,

une fonction qui attends la présence d'un fichier pendant x secondes avant de retourner False :
Sub testAttendFichier()
    ' exemple d'utilisation de la fonction attendFichier()
        Debug.Print Time & " début test"
    If attendFichier("C:\toto.xls", 3) Then
        ' fichier ok, faire traitement
        Debug.Print Time & " ok"
        ' appel macro traitement
        ' ...
    Else
        ' fichier non présent après attente de 3 secondes
        Debug.Print Time & " nok, tempsMax dépassé"
    End If
End Sub

Function attendFichier(fichier As String, tempsMax As Single) As Boolean
    ' eriiic 05/03/14
    ' attendFichier() attend la création d'un fichier pendant x secondes.
    '   paramètres d'appel
    '     - fichier: chemin complet (ex : "C:\toto.xls")
    '     - tempsMax : temps d'attente maxi en secondes avant de retouner False
    '   paramètre de retour
    '     - True  : fichier présent
    '     - False : fichier absent avec tempsMax d'attente écoulé
    Dim t As Single
    t = Timer
    Do
        DoEvents
    Loop Until Dir(fichier) <> "" Or Timer - t > tempsMax
    If Timer - t <= tempsMax Then attendFichier = True
End Function

Si tu peux faire un retour sur tes tests pour valider stp.

eric

0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 240
7 mars 2014 à 09:37
de rien...
0
yaciin Messages postés 23 Date d'inscription mercredi 15 janvier 2014 Statut Membre Dernière intervention 27 août 2014
7 mars 2014 à 15:11
Dsl mais je suis pas 24/24 ds mon bureau :)
0
yaciin Messages postés 23 Date d'inscription mercredi 15 janvier 2014 Statut Membre Dernière intervention 27 août 2014
7 mars 2014 à 15:11
Merci beaucoup
0
Merci pour vous tous, je crois que j'ai trouvé un moyen ;)
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 240
7 mars 2014 à 17:58
Ah oui ?
Ca intéresserait surement ceux qui ont le même problème.
Je met en résolu pour toi (en haut vers ton titre, pour la prochaine fois)

eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yaciin Messages postés 23 Date d'inscription mercredi 15 janvier 2014 Statut Membre Dernière intervention 27 août 2014
7 mars 2014 à 15:13
Par contre, je trouve pas comment marquer que c'est résolu :/
0
yaciin Messages postés 23 Date d'inscription mercredi 15 janvier 2014 Statut Membre Dernière intervention 27 août 2014
10 mars 2014 à 09:59
Bonjour le forum,
de retour a mon bureau, voilà la solution que j'ai adopté, pour ceux cherchant une ayant l même problème que moi :
j'ai fais un test sur l'existence des fichiers grâce à une boucle While et voilà le code :

Sub debut()
nomfichier = "toto.txt"
chemin = ThisWorkbook.Path & "\"
Set fso = CreateObject("scripting.filesystemobject")
While fso.FileExists(chemin & nomfichier) = False
Wend
MsgBox "fichier trouvé"
End Sub

avec toto.txt est le fichier qui sera crée et en admettant que le classeur sur lequel je travaille est dans le même emplacement où mon fichier .txt sera créé.

Bonne semaine à tous.
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 240
10 mars 2014 à 11:15
Bonjour,

C'est ce que je te proposais.
Sauf que ma fonction te permet de sortir proprement du programme si pour une raison x le fichier n'est pas créé au bout d'un certain délai.

eric
0
yaciin Messages postés 23 Date d'inscription mercredi 15 janvier 2014 Statut Membre Dernière intervention 27 août 2014
10 mars 2014 à 11:37
oui j'ai bien remarqué, sauf que j'ai pas mal de soucis à regler là dessus donc j'essai de faire marcher le truc, aprés je vais y revenir pour tous type d'amélioration, j'adopterais ta solution pe etre. Merci bq eriiic c'est propre est efficace d'aprés ce qui parait.
0
yaciin Messages postés 23 Date d'inscription mercredi 15 janvier 2014 Statut Membre Dernière intervention 27 août 2014
10 mars 2014 à 10:01
Merci, mais j'ai adopté une autre solution en faisant un test sur l'existence des fichiers générés par SAP grâce à une boucle While.
0