copier une donne dans un autre programme et revenir collé dans excel
26 réponses
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
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 ------------------------------------------
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
'----------------------------------------------
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 ------------------------------------------
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
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.
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
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 ------------------------------------------
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
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
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 ------------------------------------------
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
#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 ------------------------------------------
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é.
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é.