Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[RESOLU] VBA Programme externe edite Excel

  • Initiateur de la discussion Initiateur de la discussion gabvoir
  • 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 !

gabvoir

XLDnaute Nouveau
Bonjour tout le monde,

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

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:
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 😀
Gabvoir
 
- 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

Discussions similaires

  • Question Question
Microsoft 365 Excel VBA
Réponses
5
Affichages
426
Réponses
5
Affichages
477
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…