Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

copier une donne dans un autre programme et revenir collé dans excel

26 réponses
Avatar
pellet15
Bonjour =E0 tous

Je voudrait corriger la proc=E9dure suivante:
a la premier ligne j'ouvre un programme qui me permet de r=E9cup=E9rer la d=
onn=E9 GPS=20
mais je voudrait l'ouvrire plus t=F4t a l'ouverture de EXCEL (parce que il =
prend un peut de temps pour capter les satellite,3=E05 min)

Pr=E9sentement il ouvre un autre a chaque fois que je l'ex=E9cute.

Pour le reste de la proc=E9dure =E7a fonctionne mais il y a que=20
je pr=E9f=E9rerais revenir a Excel et ne pas voire le tableau du programme =
(g7towin.exe)a l'avant plan.
Il y a t'il une autre fa=E7ons que Alt_Tal et Ctrl-P
ou que cela s=92ex=E9cute en arri=E8re plan.

Sub Ouvrir_g7()
MyAppID =3D Shell("C:\g7towinwithhelp\g7towin.exe", 1)
Application.Wait (Now + TimeValue("00:00:02"))
SendKeys "^p", True ' ----copie la longitude et la latitude----
Application.Wait (Now + TimeValue("00:00:01"))
SendKeys "%{tab}", True ' ---retourne a EXCEL ---
Dim Presspp As New DataObject
Set Pressp =3D New DataObject
Presspp.GetFromClipboard
Sheets("Donne").Select
Range("AY1").Select
ActiveSheet.Paste ' ----colle la donn=E9 longitude et la latitude----
End Sub

Merci

6 réponses

1 2 3
Avatar
MichD
L'approche suivante ferme le programme, mais ne sauvegarde absolument RIEN.


Dans la procédure, utilise ceci :

'déclaration de la variable
Dim Prog As String
'Renseigne la valeur de la variable avec le nom du programme
Prog = "g7towin64.exe"


'Modifie cette ligne de code comme suit :
MyAppID = MyAppID = Shell("C:g7towinwithhelp" & Prog, 1)

Fermer_Un_Programme Prog


Et ajoute cette procédure au programme.
'----------------------------------------------
Sub Fermer_Un_Programme(Prog As String)
Dim StrComputer As String, objWMIService As Object
StrComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & StrComputer & "rootcimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & Prog & "'")
For Each objProcess In colProcessList
objProcess.Terminate
Next

End Sub
'----------------------------------------------

MichD
------------------------------------------
Avatar
pellet15
Le lundi 2 avril 2012 17:34:59 UTC-4, MichD a écrit :
L'approche suivante ferme le programme, mais ne sauvegarde absolument RIE N.


Dans la procédure, utilise ceci :

'déclaration de la variable
Dim Prog As String
'Renseigne la valeur de la variable avec le nom du programme
Prog = "g7towin64.exe"


'Modifie cette ligne de code comme suit :
MyAppID = MyAppID = Shell("C:g7towinwithhelp" & Prog, 1)

Fermer_Un_Programme Prog


Et ajoute cette procédure au programme.
'----------------------------------------------
Sub Fermer_Un_Programme(Prog As String)
Dim StrComputer As String, objWMIService As Object
StrComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & StrComputer & "rootcimv 2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & Prog & "'")
For Each objProcess In colProcessList
objProcess.Terminate
Next

End Sub
'----------------------------------------------

MichD
------------------------------------------



Bonsoir MichD

cela fonctionne .
ci j'ai 2 programme d'ouvert il les fermes tous les deux.

C'est t'il possible d'en fermer seulement 1.

Merci beaucoup pour l'aide
Avatar
MichD
Si tu veux fermer seulement une instance du même programme, peu importe laquelle,
après cette ligne de code :

objProcess.Terminate
'Tu ajoutes immédiatement en dessous,
Exit sub

MichD
------------------------------------------
Avatar
pellet15
Le lundi 2 avril 2012 20:41:16 UTC-4, MichD a écrit :
Si tu veux fermer seulement une instance du même programme, peu importe laquelle,
après cette ligne de code :

objProcess.Terminate
'Tu ajoutes immédiatement en dessous,
Exit sub

MichD
------------------------------------------


Gros Merci cela fonctionne, il ferme seulement le dernier ouvert.

Mais pourquoi le programme qui reste (g7towin.exe)est en premier plan
et EXCEL reste en second plan.

Merci
Avatar
MichD
modifie la déclaration des API comme ceci :


#If Win64 = True Then 'Pour Windows 64 bits
Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Declare PtrSafe Function BringWindowToTop Lib "user32" _
(ByVal hwnd As LongPtr) As Long
Declare PtrSafe Function SetFocus Lib "user32" (ByVal hwnd As LongPtr) As LongPtr

Else 'Pour Windows 32 bits
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
Declare Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long
#End If


Et dans la procédure, tu ajoutes en dessous ce cette ligne

'Affiche l'application Excel à l'écran
BringWindowToTop Application.hwnd
SetFocus Application.hwnd <<<<==== ligne à ajouter


MichD
------------------------------------------
Avatar
Gloops
pellet15 a écrit, le 28/03/2012 01:55 :
J'ai tester la procédure suivante et ça blocs !!
Sur : FindWindow
Message : Erreur de compilation:
Sub ou Function non définie



C'est que tu as oublié de déclarer l'API au début du module. MichD a
bien traité la question, donc j'imagine que c'est réglé.
1 2 3