Arwon | Hello,
voilà mon problème, j'essaie de récupérer un tableau sur un site internet pour ensuite inscrire certaines valeurs de ce tableau dans un onglet de mon fichier Excel. Je ne peux pas passer par les connections de Excel sur un site web car il y a une identification à faire sur ce site.
avec la référence Microsoft Internet Controls, j'ai deja pu faire en sorte d'ouvrir cette page via Internet Explorer et j'ai pu aussi récupérer ce tableau via la source html. Le problème c'est qu'il y a des espaces qui surviennent dans ce tableau de façon assez aléatoire, ce qui me décalle toutes les données et rend l'utilisation de ce tableau impossible. Par contre, avec un copier coller a la main, le tableau est copié avec le même format et il n'y a plus de problème d'espace, ce qui m'a donné l'idée de recopier ce copier coller mais fait entièrement en VBA cette fois. Je me suis donc tourné vers le Application.SendKey en mettant le focus sur la fenetre IE, mais le résultat n'est pas très probant, la copie ne se fait qu'une fois sur 10... J'ai effectivement vu sur les différents sites dont j'ai cherché que le Application.SendKey était déconseillé pour tous les problèmes que cela engendre. J'ai donc cherché du côté de l'API SendMessage, j'ai d'ailleurs trouvé quelque chose qui a l'air intéressant, mais par contre je n'arrive pas du tout a m'en servir...
voici mon code que j'ai pour déjà essayé de faire un CTRL + A afin de sélectionner toute la page internet avant de copier :
Code :
- Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As
- Integer, ByVal lParam As Any) As Long
- Const WM_KEYDOWN As Long = &H100
- Const WM_KEYUP As Long = &H101
- Const VK_CONTROL As Long = &H11
- Const VK_A as Long = &H41
- Sub ImporterDonner()
- Dim IE as New InternetExplorer
- ... ' code pour aller sur la page internet qui m'intéresse
- SendMessage(IE.HWND, WM_KEYDOWN, VK_CONTROL, 0)
- SendMessage(IE.HWND, WM_KEYDOWN, VK_A, 0)
- SendMessage(IE.HWND, WM_KEYUP, VK_A, 0)
- SendMessage(IE.HWND, WM_KEYUP, VK_CONTROL, 0)
- End Sub
|
mais cela ne fonctionne pas, d'ailleurs les SendMessage me retournent toujours 0 mais je ne suis pas sur qu'elle me renverrait 1 si le message est bien passé, je n'ai pas trouvé d'info la dessus mais bon au final c'est pas important, je vois bien que l'envoi du message n'a pas fonctionné car la page internet n'est pas selectionné via le ctrl + a.
Une idée de pourquoi cela marche pas ? est-ce que je n'utilise pas la bonne méthode ?
Merci d'avance de votre aide. Message édité par Arwon le 29-05-2011 à 10:56:14
|