• Initiateur de la discussion Initiateur de la discussion Snake
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

Snake

Guest
Bonjour à tous,

J'ai un petit problème, j'aimerai faire une macro qui copie une patie du code html d'une page internet pour la coller dans une cellule de ma fauille excel.
L'extrait de code commence par <TD id=abCell vAlign=top> et se termine par </TD>.

Merci d'avance pour vos idées
🙂
 
Bonjour
C'est presque hors sujet ...
<TD>introduitt le contenu d'une cellule et </TD>indique sa fin.
Le contenu est donc entre ces 2 balises.
Si la seule cellule à récupérer est celle-ci est que nulle part ailleurs dans le code de la page n'est répété l'ID abcell tu du dois pouvoir la repérer.
Dans l'ancien Forum il doit y avoir des exemples de code pour lire un fichier texte avec input (l'HTML n'est que du texte balisé mais pas un format binaire particulier).
 
bonsoir Snake , bonsoir Chris

S'il s'agit de recuperer des infos dans une page Web , il est aussi possible de boucler sur les input depuis Excel en activant les références :
Microsoft HTML Objects Library et Microsoft Internet Controls


Code:
Sub piloterPageWeb()
'activer la refernce Microsoft HTML Objects Library
'activer la reference Microsoft Internet Controls
Dim i As Integer
Dim IE As InternetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection

Set IE = CreateObject('InternetExplorer.Application')
IE.Visible = True

IE.navigate '[B]Lien supprimé[/B]
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop

Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName('input')

For i = 0 To Helem.Length - 1
MsgBox i & Helem(i).getAttribute('name') & ' / ' & Helem(i).getAttribute('value')
Next i

End Sub



bonne soiree
MichelXld
 
Tout d'abord merci pour vos réponses...

Michel ta macro semble interessante mais vba ne reconnait pas les types de variables suivants:


Dim IE As InternetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection

Donc elle ne fonctionne pas 😉

Si vous pouvez m'aider merci

++
 
bonjour Snake

tu n'as pas bien lu les indications dans mon premier message :

'activer la refernce Microsoft HTML Objects Library
'activer la reference Microsoft Internet Controls


dans l'editeur de macros
Menu Outils
References
coches les lignes 'Microsoft HTML Objects Library' et 'Microsoft Internet Controls'
cliques sur OK pour valider


bonne journée
MichelXld
 
Merci bcp
Ca marche beaucoup mieux mais quand je la lance elle ouvre la page qui va bien puis elle plante sur la ligne de code
Set maPageHtml = IE.document
avec le message d'erreur suivant:
Erreur d'exécution '-2147467259(80004005)':
erreur automation
erreur non spécifiée


Ca te dis quelque chose?

++
 
bonsoir Snake

je n'ai pas de réponse à ton message d'erreur

apres quelques essais , la seule façon dont j'ai réussi à reproduire le message d'erreur est en enlevant les lignes

Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop

qui servent à attendre le chargement complet de la page pour continuer la procedure

dans le doute tu pourrais faire un test en ajoutant à la suite , cette ligne ( pour temporiser la macro pendant 2 secondes )

Application.Wait (Now + TimeValue('0:00:02'))


ce qui donnerait

...
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Application.Wait (Now + TimeValue('0:00:02'))
...



tu as fais le test avec le lien fourni dans l'exemple ou avec le nom de ton site internet ?


bonne soiree
MichelXld

Message édité par: MichelXld, à: 06/04/2005 19:35
 
Bonsoir Snake
(répondu dans fil précédent)


Une solution toute simple


Tu copies ton fichier texte sur une feuille excel

Chaque ligne de ton fichier devrait se retrouver sur une colonne et X lignes

Tu fais ensuite remplacer par

Chaîne d'origine : <TD id=abCell vAlign=top>

Remplacer par :

la même chose pour :</TD>

et ça marche


la question de ton 1er fil n'est pas tout à fait identique. j'avais compris que tu avais un fichier texte de X lignes et sur lequel tu souhaitais récupérer le texte compris entre les deux balises.

Message édité par: DG62, à: 07/04/2005 08:35
 
Merci beaucoup en effet des lignes avaient sautées lors du copier coller ( 😱 ) maintenant l'erreur ne se produit plus à ce niveau
Elle se produit lorsque j'essaie de rapatrier la valeur dans la cellule.

Si tu veux je peux t'envoyer une copie de ton code que j'ai adapté à mon cas si ca peux t'aider...


Dg62 merci pour ta méthode elle marche mais je dois faire cette manip un grand nombre de fois donc j'aimerais quelque chose de plus 'automatique'... (ah ces jeunes tjrs aussi fainéants
🙂 )

++
 
Bonjour Michel,

ui le voici
'activer la refernce Microsoft HTML Objects Library
'activer la reference Microsoft Internet Controls
Dim i As Integer
Dim j As Integer
Dim pubnumber As String
Dim IE As InternetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection



For j = 3 To 5000
If ThisWorkbook.Sheets('Base_div').Range('p' & j).Value = 'None' Then

If ThisWorkbook.Worksheets('Base_div').Range('i' & j).Value <> '' Then
pubnumber = ThisWorkbook.Worksheets('Base_div').Range('i' & i).Value
GoTo suite
End If
If ThisWorkbook.Worksheets('Base_div').Range('j' & j).Value <> '' Then
pubnumber = ThisWorkbook.Worksheets('Base_div').Range('j' & j).Value
GoTo suite
End If
If ThisWorkbook.Worksheets('Base_div').Range('k' & j).Value <> '' Then
pubnumber = ThisWorkbook.Worksheets('Base_div').Range('k' & j).Value
GoTo suite
End If
If ThisWorkbook.Worksheets('Base_div').Range('l' & j).Value <> '' Then
pubnumber = ThisWorkbook.Worksheets('Base_div').Range('l' & j).Value
GoTo suite
End If

suite:
Set IE = CreateObject('InternetExplorer.Application')
IE.Visible = True


IE.navigate ' & pubnumber & '&F=0'
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop


Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName('abCell')

For i = 0 To Helem.Length - 1
MsgBox i & Helem(i).getAttribute('name') & ' / ' & Helem(i).getAttribute('value')
Next i
ThisWorkbook.Worksheets('Base_div').Range('p' & j).Value = Helem 'ca plante ici
End If
Next

End Sub

Si vous pouvez m'aider... Merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
323
Réponses
1
Affichages
536
Réponses
5
Affichages
660
Retour