Récupérer le focus Excel
Résolu/Fermé
1Globule
Messages postés
62
Date d'inscription
mercredi 4 mai 2016
Statut
Membre
Dernière intervention
28 mars 2019
-
24 sept. 2018 à 10:22
1Globule - 2 oct. 2018 à 08:42
1Globule - 2 oct. 2018 à 08:42
A voir également:
- Récupérer le focus Excel
- Liste déroulante excel - Guide
- Recuperer message whatsapp supprimé - Guide
- Recuperer video youtube - Guide
- Si et excel - Guide
- Comment récupérer un compte facebook piraté - Guide
3 réponses
yg_be
Messages postés
23401
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 décembre 2024
Ambassadeur
1 557
24 sept. 2018 à 12:54
24 sept. 2018 à 12:54
bonjour, je doute que ton analyse soit correcte.
et si tu mets "msgbox", cela s'exécute-t'"il?
et si tu mets "msgbox", cela s'exécute-t'"il?
1Globule
Messages postés
62
Date d'inscription
mercredi 4 mai 2016
Statut
Membre
Dernière intervention
28 mars 2019
2
25 sept. 2018 à 14:04
25 sept. 2018 à 14:04
S'il y a toujours quelqu'un sur le forum, j'ai essayé ce matin suite à la piste évoquée par yg_be d'utiliser un
Mais toujours impossible de détecter un "Ctrl+V" dans une autre application.
Le
Quelqu'un pourrait-il me venir en aide ?
Workbook_open, il me semblait que c'était une bonne solution pour que le Vba "surveille" le clavier.
Mais toujours impossible de détecter un "Ctrl+V" dans une autre application.
Le
Application.OnKey "^V"ne détecte rien si je ne suis pas dans Excel...
Quelqu'un pourrait-il me venir en aide ?
yg_be
Messages postés
23401
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 décembre 2024
1 557
25 sept. 2018 à 16:25
25 sept. 2018 à 16:25
je pense que ton code VBA doit continuer à travailler une fois les données récupérées, et se mettre à observer quelque chose qui lui permettra de savoir que Excel doit reprendre le focus.
par exemple, il est possible, en VBA, de surveiller les fenêtres des autres applications.
imagine que le code VBA soit un robot qui voit tout ce qui se passe dans l'ordi: comment pourrait-il détecter que tu as fini? à partir de cela, tu pourras peut-être trouver un moyen de faire le code VBA que tu souhaites. attention, le robot n'est ni très malin, ni très observateur.
le robot ne peut pas, je pense, détecter les interactions à l'intérieur des autres applications.
as-tu envisagé que la macro VBA fasse à ta place les actions dans l'autre application?
par exemple, il est possible, en VBA, de surveiller les fenêtres des autres applications.
imagine que le code VBA soit un robot qui voit tout ce qui se passe dans l'ordi: comment pourrait-il détecter que tu as fini? à partir de cela, tu pourras peut-être trouver un moyen de faire le code VBA que tu souhaites. attention, le robot n'est ni très malin, ni très observateur.
le robot ne peut pas, je pense, détecter les interactions à l'intérieur des autres applications.
as-tu envisagé que la macro VBA fasse à ta place les actions dans l'autre application?
1Globule
Messages postés
62
Date d'inscription
mercredi 4 mai 2016
Statut
Membre
Dernière intervention
28 mars 2019
2
27 sept. 2018 à 07:40
27 sept. 2018 à 07:40
Bonjour yg_be,
Je ne peux pas agir dans une application comptable sécurisée au moyen d'un code Vba. Ma première intention était d'ailleurs d'accéder directement à la base de données pour modifier les tables, mais bien sûr c'est impossible, je dois me contenter de passer par l'IHM, avec des copier-coller.
S'il est possible, en Vba, de surveiller les fenêtres des autres applications, peux-tu me dire plus précisément comment faire ? J'ai déjà cherché beaucoup sur ce sujet, je commence à me décourager.
Merci encore.
Je ne peux pas agir dans une application comptable sécurisée au moyen d'un code Vba. Ma première intention était d'ailleurs d'accéder directement à la base de données pour modifier les tables, mais bien sûr c'est impossible, je dois me contenter de passer par l'IHM, avec des copier-coller.
S'il est possible, en Vba, de surveiller les fenêtres des autres applications, peux-tu me dire plus précisément comment faire ? J'ai déjà cherché beaucoup sur ce sujet, je commence à me décourager.
Merci encore.
yg_be
Messages postés
23401
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 décembre 2024
1 557
>
1Globule
Messages postés
62
Date d'inscription
mercredi 4 mai 2016
Statut
Membre
Dernière intervention
28 mars 2019
27 sept. 2018 à 08:10
27 sept. 2018 à 08:10
le VBA peut servir de robot qui se substitue à l'utilisateur (utilisation du clavier, ...), et de cette façon agir dans n'importe quelle application.
en ce qui concerne la surveillance des fenêtres, cela permet de surveiller les fenêtres ouvertes, leurs titres, surveiller laquelle est active, pas ce qui se passe à l'intérieur des fenêtres.
pour le moment, on cherche quoi faire, pas encore comment faire.
en ce qui concerne la surveillance des fenêtres, cela permet de surveiller les fenêtres ouvertes, leurs titres, surveiller laquelle est active, pas ce qui se passe à l'intérieur des fenêtres.
pour le moment, on cherche quoi faire, pas encore comment faire.
1Globule
Messages postés
62
Date d'inscription
mercredi 4 mai 2016
Statut
Membre
Dernière intervention
28 mars 2019
2
27 sept. 2018 à 13:28
27 sept. 2018 à 13:28
Je voudrais bien partir sur ce "quoi faire" : Le Vba détecte un "Ctrl+V" qui n'a pas lieu dans Excel et redonne alors le focus à mon classeur.
Reste à savoir maintenant "comment le faire"... Est-ce que tu as une idée ?
Reste à savoir maintenant "comment le faire"... Est-ce que tu as une idée ?
yg_be
Messages postés
23401
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 décembre 2024
1 557
>
1Globule
Messages postés
62
Date d'inscription
mercredi 4 mai 2016
Statut
Membre
Dernière intervention
28 mars 2019
27 sept. 2018 à 20:21
27 sept. 2018 à 20:21
je pense qu'il ne peut pas détecter cela: le robot ne peut pas, je pense, détecter les interactions à l'intérieur des autres applications.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
Modifié le 27 sept. 2018 à 15:45
Modifié le 27 sept. 2018 à 15:45
Bonjour,
avec le presse papier
voir ce post en VB.Net avec le programme issu de ce post en VBA en suivant le lien
https://codes-sources.commentcamarche.net/forum/affich-10085696-vb-sendkeys-probleme#4
https://codes-sources.commentcamarche.net/source/102695-extraire-texte-et-image-d-un-pdf
voir ceci en vba pour l'adapter
https://wordmvp.com/FAQs/MacrosVBA/ManipulateClipboard.htm
avec le presse papier
voir ce post en VB.Net avec le programme issu de ce post en VBA en suivant le lien
https://codes-sources.commentcamarche.net/forum/affich-10085696-vb-sendkeys-probleme#4
https://codes-sources.commentcamarche.net/source/102695-extraire-texte-et-image-d-un-pdf
voir ceci en vba pour l'adapter
https://wordmvp.com/FAQs/MacrosVBA/ManipulateClipboard.htm
1Globule
Messages postés
62
Date d'inscription
mercredi 4 mai 2016
Statut
Membre
Dernière intervention
28 mars 2019
2
28 sept. 2018 à 11:19
28 sept. 2018 à 11:19
Avec le presse-papier c'est une bonne solution.
Si je peux détecter qu'il se vide, comme il semble que ce soit le cas ici :
Sauf que... Même en activant "Microsoft Forms 2.0 Object Library", il ne se passe rien...
Si je peux détecter qu'il se vide, comme il semble que ce soit le cas ici :
If Not Clipboard.GetImage Is Nothing Then, alors je pourrais faire réactiver le workbook Excel.
Sauf que... Même en activant "Microsoft Forms 2.0 Object Library", il ne se passe rien...
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
28 sept. 2018 à 11:45
28 sept. 2018 à 11:45
Essaie ceci à adapter a ton environnement:
Option Explicit Private Declare Function CountClipboardFormats Lib "user32" () As Long Private Declare Function OpenClipboard Lib "User32.dll" _ (ByVal hWndNewOwner As Long) As Long Private Declare Function EmptyClipboard Lib "User32.dll" () As Long Private Declare Function CloseClipboard Lib "User32.dll" () As Long Public Sub ClearClipboard() 'vide le presse papier Dim Ret Ret = OpenClipboard(0&) If Ret <> 0 Then Ret = EmptyClipboard CloseClipboard End Sub Sub Sample() If (CountClipboardFormats() = 0) = True Then MsgBox "Presse-papiers est vide" Else MsgBox "Presse-papiers n'est pas vide" End If End Sub Private Sub CommandButton1_Click() Sample End Sub Private Sub CommandButton2_Click() ClearClipboard 'vide le presse papier End Sub
1Globule
Messages postés
62
Date d'inscription
mercredi 4 mai 2016
Statut
Membre
Dernière intervention
28 mars 2019
2
28 sept. 2018 à 13:01
28 sept. 2018 à 13:01
Merci beaucoup pour ton aide.
Je bloque toujours sur un point : A ce stade, mes données sont dans Excel mais aucune macro ne tourne plus.
Je ne fais plus que des "Copier", rien qui ne puisse activer ton code (l'évènement "AfterCopy" n'existe pas...).
Comment faire pour que le Vba reste actif et détecte les actions du presse-papier ?
Je bloque toujours sur un point : A ce stade, mes données sont dans Excel mais aucune macro ne tourne plus.
Je ne fais plus que des "Copier", rien qui ne puisse activer ton code (l'évènement "AfterCopy" n'existe pas...).
Comment faire pour que le Vba reste actif et détecte les actions du presse-papier ?
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
28 sept. 2018 à 13:55
28 sept. 2018 à 13:55
A mettre dans la feuille active
Option Explicit Sub recupererTextePressePapier() 'nécéssite d'activer la référence "Microsoft Forms 2.0 Object Library." pour avoir accès insérer une UserForm Dim Resultat As String With New dataObject .GetFromClipboard Resultat = .GetText(1) End With Application.Visible = True ActiveWorkbook.Activate 'MsgBox Resultat End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) recupererTextePressePapier End Sub
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
30 sept. 2018 à 08:37
30 sept. 2018 à 08:37
Je pense que tu ne veux pas afficher la fenêtre Excel manuellement (cela ne pose aucun problème), mais par code!
Donc mettre un Timer (ajuster au temps des copier-coller) à la fin de ta macro qui lancera la macro suivante comma ceci:
voilà
Bon WE
Donc mettre un Timer (ajuster au temps des copier-coller) à la fin de ta macro qui lancera la macro suivante comma ceci:
Option Explicit Sub attente() Dim PauseTime, Start, Finish, TotalTime PauseTime = 10 ' Set duration secondes a adapter Start = Timer ' Set start time. Do While Timer < Start + PauseTime DoEvents ' Yield to other processes. Loop Finish = Timer ' Set end time. TotalTime = Finish - Start ' Calculate total time. test 'lance la macro End Sub Sub test() MsgBox "ceci est un test" End Sub
voilà
Bon WE
24 sept. 2018 à 13:53
Comment écrirais-tu le code ?
24 sept. 2018 à 13:57
peut-être le code VBA est-il bloqué sur une instruction qui ne se termine pas?
24 sept. 2018 à 15:43
24 sept. 2018 à 16:44
25 sept. 2018 à 07:44
Ma macro se déclenche avec un bouton. Lorsque je clique, elle va récupérer des données. Une fois ces données récupérées, elle s'arrête, elle est terminée.
C'est à ce moment-là que je commence, à la main, à recopier les données dans un autre logiciel. J'utilise des simples "copier / coller", et pour l'instant je n'ai rien trouvé pour rendre le focus à Excel une fois que j'ai collé une cellule dans l'autre logiciel.
C'est ici que j'ai besoin d'aide : Est-il possible de détecter un "coller" par Vba quand Excel n'est pas l'application active ?
J'espère avoir été plus clair. Merci encore !