J'ai fait une petite macro VBA sous Excel 2000 pour piloter Internet
Explorer (v5) afin de récupérer (copier/coller) des pages... (il s'agit de
pages web avec 2 frames contenant un tableau que je souhaiterais copier)
Mais j'ai le problème suivant, lors de la copie de la page web,
celui-ci en fait ne copie rien...
Pour copier sous IntExplorer, j'utilise :
application.sendkeys "%Es",true 'Sélectionner toute la
page
application.sendkeys "%Ep",true 'copie de la sélection
Ensuite, au retour sous Excel, j'utilise
Activesheet.paste
(ou application.sendkeys "%Eo",true mais ça marche pas
mieux)
... et rien ne se passe. Aucun contenu n'est copié. (la commande
coller n'est même pas active !)
Existe t'il alors une façon de copier mes pages internet sous excel avec des
commandes spéciales ?
Merci
TA
Exusez moi, je ne sais pas si ma question relève plus du forum Excel ou
Internet Explorer... j'ai envoyé au deux !
"Oblers" <thierry...@wanadoo.fr> a écrit dans le message news:
93ivfv$g8s$1...@wanadoo.fr...
Je ne pense pas...
Mais étant donné que j'arrive quand même à * piloter * IE à l'aide des
macros Excel(sendkeys, tab, ...), pourquoi alors pose t'il un problème pour
la copie d'une page Web ?
Ca ne viendrait pas du fait que la page web peut être protégée en copie
(CTRL+C) ?
TA
je pense que tu essaies de copier le fichier de frames...
et si tu affiches une page de frames dans ie et que tu n'as encore cliqué
nulle part, edition selectionner tout ne sélectionne rien du tout (rien en
surbrillance) et si on fait edition copier, on ne copie rien , donc on n'a
rien à coller !
as-tu essayé avec une page sans frames ?
sinon il faudrait que tu trouves le moyen de donner le focus à un des cadres
(equivalent à cliquer dedans)
> Pour copier sous IntExplorer, j'utilise :
> application.sendkeys "%Es",true 'Sélectionner toute la
> page
> application.sendkeys "%Ep",true 'copie de la sélection
> Ensuite, au retour sous Excel, j'utilise
> Activesheet.paste
> (ou application.sendkeys "%Eo",true mais ça marche pas
> mieux)
> ... et rien ne se passe. Aucun contenu n'est copié. (la
commande
> coller n'est même pas active !)
>
> Existe t'il alors une façon de copier mes pages internet sous excel avec
des
> commandes spéciales ?
>
à la main, ça marche (mais le résultat graphique n'est pas terrible), à
condition de sélectionner frame par frame
espérant t'avoir été utile
(si jamais tu finalises ta macro, ça m'intéresse , comment fais-tu pour
indiquer quelle page tu veux copier ?)
cordialement
Ch. Sérol
La procédure "Edition"->"Sélectionner tout" fonctionne bien, car j'ai le
tableau de la page Web en surbrillance (du moins le contenu). Pour aller
dans la bonne frame (contenant le tableau), je passe par des sendkeys
"{TAB}",true qui m'y amène. C'est alors que je veut faire la copie...
Mais je pense que ça viendrait d'un pb d'IE5... j'ai essayé ma macro
Excel en utilisant IE4 et la ça marche ! Je ne comprend pas très bien les
raisons...
Aussi, lorsque je copie ma page à la souris (je rentre dans la bonne
frame itou itou) et que je fait un collé sous excel, celui-ci me reconnecte
à internet. Apparamment il télécharge la page pour la copier (il me copie
même les listes de choix déroulantes, les images etc).
Merci pour vos conseils
TA
"Oblers" <thierry...@wanadoo.fr> a écrit dans le message news:
93mqcj$psa$1...@wanadoo.fr...
> Aussi, lorsque je copie ma page à la souris (je rentre dans la
bonne
> frame itou itou) et que je fait un collé sous excel, celui-ci me
reconnecte
> à internet. Apparamment il télécharge la page pour la copier (il me copie
> même les listes de choix déroulantes, les images etc).
>
après quelques tests, si la partie sélectionnée comprend des images, (là
c'est sûr) ou (peut-être) des liens , il veut se connecter. (je l'ai bloqué
avec za donc je le vois).
si on n'a que du texte il ne cherche pas à se connecter.
A la main, une manip tordue pour se débarrasser des indésirables : faire le
copier-coller dans wordpad, resélectionner tout, faire le copier-coller dans
excel. Il garde la mise en page du tablau.
Mais je ne sais vraiment pas si on peut manipuler wordpad avec des macros !
cordialement
C. Sérol
.
Match
"Oblers" <thierry...@wanadoo.fr> a écrit dans le message news:
93mqcj$psa$1...@wanadoo.fr...
| après quelques tests, si la partie sélectionnée comprend des images, (là
| c'est sûr) ou (peut-être) des liens , il veut se connecter. (je l'ai
bloqué
| avec za donc je le vois).
Même problème, Excel se bloque pendant un bon bout de temps en essayant de
télécharger la page web au lieu de la copier... (avec IE4, ça ne le fait
pas)
| si on n'a que du texte il ne cherche pas à se connecter.
| A la main, une manip tordue pour se débarrasser des indésirables : faire
le
| copier-coller dans wordpad, resélectionner tout, faire le copier-coller
dans
| excel. Il garde la mise en page du tablau.
| Mais je ne sais vraiment pas si on peut manipuler wordpad avec des macros
!
En effet... ! merci pour la technique. Ca m'évitera en effet d'avoir les
images.
Mais le problème reste le même, je n'arrive à rien copier dans wordpad car
la fonction COLLER est indisponible.
Sous internet, j'ai bien mon tableau sur la frame 2 qui est en inversion
(bleu), je fais COPIER et dans les autres appli, je ne peux pas faire
COLLER.
Remarque, en sélectionnant à la souris le tableau (c'est à dire, sans
passer par le SELECTIONNER TOUT), là ça marche (de temps en temps). Comme
quoi, la copie de la page doit être possible.
Pour Wordpad, j'utilise les macro Excel qui vont piloter Wordpad.
shell( "c:\toto\wordpad.exe",1) pour l'exécuter
application.sendkeys "%ES",true pour sélectionner tout
application.sendkeys "%Ep",true pour copier
application.sendkeys "%El",true pour coller
application.sendkeys "%{F4}N",true pour fermer
... etc
TA
Mon petit programme pour IE5... (attention, avec la version de IE... ce ne
sont pas les même manips à faire)
Sub auto_open()
Sheets("MENU").Select 'Permier onglet de démarrage pour la présentation
et montrer l'avancement des copies
Range("A1").Select
End Sub
Sub Programmes()
Dim logiciel
Dim Excel
Dim chaine As Integer
Dim jour As Integer
Dim feuille As Variant
Excel = ActiveWorkbook.Name
feuille = Array(0, 9, 24, 13, 3, 22, 23, 10, 12, 18, 7, 15, 14, 17, 26,
17, 16, 20, 27, 8, 25, 6, 4, 11, 5, 21, 19, 28) 'Numéro des feuilles
jour = Sheets("MENU").Range("B3").Value '1=lundi, 2=mardi etc... prise
par =JOURSEM(MAINTENANT();2)
'Effacement de l'ancien programme
For chaine = 2 To 28 'de l'onglet 2 à 28, j'efface le contenu
(bordures de tableaux, textes...)
Sheets(chaine).Select
Range("B3:D100").Select
Selection.ClearContents
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Selection.Interior.ColorIndex = xlNone
Selection.UnMerge
Selection.Font.ColorIndex = 0
Next chaine
Sheets("MENU").Select
Range("H11:H37").ClearContents
'Extraction des programmes sous Internet
logiciel = Shell("c:\Program Files\Accessoires\WORDPAD.EXE", 1)
'exécution de Wordpad et d'internet
logiciel = Shell("c:\Program Files\Internet Explorer\IEXPLORE.EXE", 1)
Pause (30) 'attente que les logiciels soient démarrés
Application.SendKeys "{TAB}www.csat-antilles.com~", True 'change
l'adresse URL
Pause (30) 'attente du chargement (grosso modo)
Application.SendKeys "{TAB 16}~", True 'choisi les programmes TV ! !
Pause (10) 'attente du chargement
Application.SendKeys "{TAB 15}", True 'se positionne sur le choix de la
chaine
For chaine = 1 To 1 '27
Application.SendKeys "{DOWN}", True 'sélection de la chaine
Application.SendKeys "{TAB}", True (se positionne sur le jour de la
semaine
If chaine = 1 Then
Application.SendKeys "{DOWN " & jour & "}", True 'sélection du
jour de la semaine
End If
Application.SendKeys "{TAB}~", True 'validation
AppActivate "Microsoft Excel"
auto_open
Range("H" & feuille(chaine) + 9).Value = "En cours..."
Range("H" & feuille(chaine) + 9).Select
Selection.Font.ColorIndex = 50
Pause (20)
AppActivate "CANAL SATELLITE ANTILLES-GUYANE"
Application.SendKeys "%ES", True 'selection de la grille des
programmes (tableau)
Pause (1)
Application.SendKeys "%Ep", True 'copie
AppActivate "Document" 'sous wordpad, collé et copie pour supprimer
les images
Application.SendKeys "%ES", True
Application.SendKeys "%EE", True
Application.SendKeys "%El", True
Application.SendKeys "%ES", True
Application.SendKeys "%Ep", True
AppActivate "Microsoft Excel" 'sous excel, copie du programme tv sur
la bonne feuille
Pause (2)
Sheets(feuille(chaine)).Select
If chaine = 15 Then
Range("B50").Select
Else
Range("B3").Select
End If
Application.SendKeys "%Eo", True
Range("A3").Select
auto_open
Range("H" & feuille(chaine) + 9).Value = "Terminé"
Range("H" & feuille(chaine) + 9).Select
Selection.Font.ColorIndex = 46
AppActivate "CANAL SATELLITE ANTILLES-GUYANE"
Application.SendKeys "%{LEFT}", True 'chaine suivante
Pause (3)
Application.SendKeys "{TAB 16}", True
Next chaine
'AppActivate "Document"
'Application.SendKeys "%{F4}N", True
'AppActivate "CANAL SATELLITE ANTILLES-GUYANE"
'Application.SendKeys "%{F4}", True
auto_open
End Sub
Sub Atteindre() 'pour une liste de choix du formulaire (permet d'atteindre
la chaine voulue)
Dim chaine As Integer
chaine = Sheets("MENU").Range("B11").Value
Sheets(chaine + 1).Select
Range("A1").Select
End Sub
Sub Pause(T)
Application.Wait Now + TimeValue("00:00:" & T)
End Sub
--
C. Sérol
"Oblers" <thierry...@wanadoo.fr> a écrit dans le message news:
93pnvo$bef$1...@wanadoo.fr...
> .......
> En effet... ! merci pour la technique. Ca m'évitera en effet d'avoir les
> images.
> Mais le problème reste le même, je n'arrive à rien copier dans wordpad car
> la fonction COLLER est indisponible.
> Sous internet, j'ai bien mon tableau sur la frame 2 qui est en inversion
> (bleu), je fais COPIER et dans les autres appli, je ne peux pas faire
> COLLER.
>
> Remarque, en sélectionnant à la souris le tableau (c'est à dire, sans
> passer par le SELECTIONNER TOUT), là ça marche (de temps en temps). Comme
> quoi, la copie de la page doit être possible.
>
j'ai fait d'autres tests de copier-coller de ie5 sur wordpad : de manière
générale, s'il y a des liens sur la sélection il les copie en les mettant
entre < > , s'il y a des images il les ignore...
après quelques tests sur les programmes télé en question, le sélectionner
tout suivi de copier permet bien de coller ensuite toute la page sur wordpad
et ça
marche à tous les coups (à la main)
as-tu essayé de réparer ton ie 5 ?
une autre idée toute bête : as-tu vérifié dans l'onglet sécurité (menu
outils:options internet) de ie5 que tu autorisais les scripts, les active-X
et le collage pour la zone internet (niveau par défaut : moyen) ?
quant à ta macro, j'ai essayé de la tester "bêtement" avec un classeur excel
neuf, elle bloque à l'auto_open, et si on lance "programmes" elle plante
après ouverture des deux softs, elle n'arrive pas à écrire l'url ni à
changer de page...
je n'ai pas très bien compris ton tableau d'entiers, ni combien d'onglets le
classeur doit avoir : menu + 28 autres ?
en plus cette macro désactive régulièrement mon verrou numérique...
en tout cas merci pour le code, ça fera progresser mon visual basic qui en a
bien besoin (moi, à part le vbscript ...)
Cordialement
C. Sérol