[déplacé VB.NET -> VBA] Faire apparaître la calculatrice en un endroit précis de

Dilueur Messages postés 24 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 28 octobre 2011 - 6 janv. 2010 à 16:11
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 7 janv. 2010 à 03:10
Bonjour,

Au moyen d'un bouton qui déclenche une macro, j'appelle la calculatrice. Celle-ci apparaît au beau milieu de l'écran, en plein là où il ne faudrait pas ! Bien sûr, je n'ai qu'à la déplacer et on n'en parle plus... Mais peut-on la forcer à ce qu'elle apparaisse, par ex., en haut et à droite de l'écran ?
Je suis sous Excel 2007.

Voici la syntaxe (qui marche parfaitement bien) que j'ai utilisée pour appeler la calculatrice :

Sub Calculatrice()
Dim x
x = Shell("C:\WINDOWS\system32\CALC.EXE", 1)
End Sub

6 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
6 janv. 2010 à 19:06
Utilise ces APIs :
FindWindow pour trouver le handle associé à la fenêtre de la calculatrice.
SetWindowPos pour changer la position de la fenêtre dont tu connais le handle.
---
VB.NET is good ... VB6 is better
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
6 janv. 2010 à 19:26
salut,

umm pas tout à fait

findwindow ici n'est pas vraiment approprié ; il peut y avoir d'autres calculatrices

et comme on a shell qui renvoie un PID, autant l'utiliser
http://www.codyx.org/snippet_recuperer-hwnd-handle-partir-pid-process-id_451.aspx#1462

et avec ce handle retourné, plus qu'à repositionner, par SetWindowPos par exemple oui

++

[hr]
0
Dilueur Messages postés 24 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 28 octobre 2011
6 janv. 2010 à 19:48
Merci pour vos réponses.

À vrai dire je n'ai pas compris grand chose...
J'ai choisi la solution de PCPT. Je suis allé récupérer la routine se trouvant dans l'adresse indiquée.
J'ai collé la déclaration des APIS dans l'en-tête du module, puis ai copié la fonction dans le module.
Je n'ai pas compris à quoi elle servait exactement (peut-être stipuler les coordonnées spatiales de la calculatrice ??) et surtout comment l'utiliser dans la petite procédure appelant la calculatrice :

Sub Calculatrice()
Dim x
x = Shell("C:\WINDOWS\system32\CALC.EXE", 1)
End Sub
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
6 janv. 2010 à 20:11
non le shell retourne un Process IDentifiant
on veut un HANDLE, celui de la fenêtre de la calculatrice pour ID.. celui que shell retourne

donc la routine nous convertie tout çà (pour simplifier) et après : action

Sub Calculatrice()
Dim x AS LONG
dim lHwnd as long
x = Shell("C:\WINDOWS\system32\CALC.EXE", 1)
lHwnd = InstanceToWnd(x)
'suite du travail sur lHwnd...
End Sub



[hr]
0

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

Posez votre question
Dilueur Messages postés 24 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 28 octobre 2011
6 janv. 2010 à 23:42
Encore merci PCPT pour vos tentatives d'aide.

J'ai scrupuleusement -du moins je pense- tenté de suivre vos instructions, mais sans succès.

À tout hasard on peut accéder au fichier à l'adresse suivante :

http://www.cijoint.fr/cjlink.php?file=cj201001/cijGFZbSVO.xls
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 janv. 2010 à 03:10
(perso) désolé je ne regarde pas ton lien : ghuysmans99 et moi t'avons sans aucun doute donné toutes les marches à suivre, il y a une partie "recherche personnelle" indispensable
0
Rejoignez-nous