[RESOLU] VBA Programme externe edite Excel

gabvoir

XLDnaute Nouveau
Bonjour tout le monde,

Je suis face à problème qui j'espère a une solution :D

Mon objectif, me direz vous est tordu, mais c'est la seule solution que j'ai !
J'ai un logiciel qui me retourne sous forme visuel (ou à imprimer) un tableau d'infos. La visu se fait sous forme de page (page up/down). Je souhaiterais extraire ces infos visuel vers Excel, sachant qu'un copier coller fonctionne correctement. Le seul problème les pages (en moyenne 65pages), il est donc hors de question de faire cela à la main.

J'ai donc créé un enchaînement de tâche (mouvement de souris, clic, copier coller, changement de fenetre ...) avec TinyTaskPortable. Un genre de macro que je peu rééxécuté au format .exe.
Cette enchaînement de taches a pour effet de sélectionner une zone dans une fenêtre, faire copier (Ctr+C), prendre la fenêtre directement dessous, Xl, (Alt + tab), puis coller les infos (Ctrl + V)

Mon objectif maintenant est d'executer en boucle ce .exe a partir d'Xl, jusqu'à trouver une certaine valeur indiquant la fin.
Voila mon code actuel :
Code:
Public Sub launchExtract()
Dim endRange As Range
Do
    If extractAS400 = False Then
        Exit Do
    End If
    Set endRange = ActiveSheet.UsedRange.Find("FIN DE L'EDITION")
Loop Until Not endRange Is Nothing
End Sub

Public Function extractAS400() As Boolean
Dim AppTitle As String, tmr As Long
Dim chemin As String
extractAS400 = True
chemin = Workbooks(ActiveWorkbook.Name).Path
AppTitle = "Session A - [27 x 132]" 'ici le titre de la fenetre a maximiser
AppActivate AppTitle
tmr = Timer
While ((Timer - tmr) < 2)
Wend
If AppMaximize(AppTitle) = False Then
    MsgBox "L'AS400 n'est pas ouvert"
    extractAS400 = False
    Exit Function
End If

Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
Dim errorCode As Integer

errorCode = wsh.Run(chemin & "\AS400.exe", windowStyle, waitOnReturn)

MsgBox "ok"
If errorCode <> 0 Then
    MsgBox "Program exited with error code " & errorCode & "."
    extractAS400 = False
    Exit Function
End If
End Function

Vous le comprendrez mon problème est au niveau de l'éxécution du .exe, et surtout le Ctrl+V.
Le .exe n'arrive pas à coller correctement.
Ce qui est bizarre c'est qu'en mode déboguage, le Ctrl+V fonctionne correctement. Je pense qu'en lecture normal, il est impossible d'éditer les tableaux.

Le problème est donc à ce niveau là :
Code:
wsh.Run(chemin & "\AS400.exe", windowStyle, waitOnReturn)

Auriez vous une autre solution que cela qui pourrait me permettre d'éxécuter mon .exe tout en mettant en pause la macro, et en la relancant une fois le .exe fermé ?

En vous remerciant,

Gabvoir
 
Dernière édition:

gabvoir

XLDnaute Nouveau
Re : VBA Programme externe edite Excel

En essayant plein de combinaison j'ai moi même trouvé la réponse.
La voici :
Code:
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnRetrn As Boolean: waitOnReturn = False
Dim windowStyle As Integer: windowStyle = 1
Dim errorCode As Integer: errorCode = 99

errorCode = wsh.Run(chemin & "\AS400.exe", windowStyle, waitOnReturn)
   X = Timer()
   Do While X + 3 > Timer()
       DoEvents
   Loop

Merci de votre hypothétique aide :D
Gabvoir
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa