MichD a écrit, le 14/04/2012 16:29 :
> Dans la fenêtre de l'éditeur de code, barre des menus / outils / référence /
> décoche la bibliothèque suivante si elle est cochée : 'Microsoft Internet controls"
>
> Le mieux teste cette procédure en utilisant un classeur tout neuf.
>
> Il y a peut-être des nuances selon les différentes versions, mais je ne saurais te dire.
> Tu devrais tenter ta chance sur des forums spécialisés sur cette application en
> particulier.
>
> Désolé.
>
>
Bonjour,
J'ai aussi pensé à un code trop long pour tenir dans une seule cellule.
On pourrait afficher Len(CodeSource), pour avoir une idée ...
C'est vrai que cette explication mérite un peu de prudence : j'ai essayé
de mettre dans une cellule "début" + Space(40000000) + "fin" et tout ce
que je vois, c'est "début".
Alors j'affiche la longueur du contenu de la cellule : 32767.
Je ne me suis pas fait jeter, pourtant.
Si toutefois cette piste est la bonne, l'arborescence DCom a une
ramification suffisamment fine pour que ses éléments puissent tenir dans
des cellules Excel. On peut décomposer de plusieurs manières, ce que
j'ai fait ci-dessous n'est qu'un exemple.
Ne pas trop se priver d'utiliser l'explorateur d'objets, que dans
l'environnement de développement d'Excel on peut ouvrir avec la touche F2.
Voici ci-dessous un exemple pour mettre chaque noeud dans une cellule.
Cet exemple utilise deux références :
1 - dans la liste, "Microsoft HTML Object Library", apparaîtra dans
l'explorateur d'objets sous le nom MSHTML, et se trouve dans le fichier
C:\Windows\system32\mshtml.tlb
2 - dans la liste, "Microsoft Internet Controls", apparaîtra dans
l'explorateur d'objets sous le nom SHDocVw, et se trouve dans le fichier
C:\Windows\system32\ieframe.dll
(le chemin de fichier ne sert que si vraiment on n'arrive pas à trouver
l'intitulé dans la liste)
Je rappelle qu'on sélectionne les références par Outils / Références, à
partir de l'environnement de développement. Il s'agit de cocher les
références voulues, puis valider une fois que tout y est.
J'ai laissé une erreur d'incompatibilité de type, qui apparaît en
colonne C en face de l'élément concerné, de type img. J'ai l'impression
que cette erreur n'est pas bloquante, aussi je vais laisser creuser qui
voudra, ça serait dommage que je reste une heure dessus pour ne rien
sortir de plus.
===== Début module ======
Option Explicit
Dim L As Integer
Public Sub TestHtml()
Dim IE As New InternetExplorer
Dim IEDoc As HTMLDocument
Dim CodeSource As String
Dim C As Range
Dim N As Integer
Dim Elt As HTMLDTElement
On Error GoTo ErrTestHtml
DoEvents
Range("A1") = ""
IE.Navigate2 "google.html"
MsgBox "Navigation effectuée"
Set IEDoc = IE.document
Debug.Print "IE"
CodeSource = IEDoc.body.innerHTML
Debug.Print CodeSource
MsgBox Len(CodeSource)
'Range("A1") = CodeSource
L = 1
Set Elt = IEDoc.body
TraitementElement Elt
Exit Sub
ErrTestHtml:
MsgBox Err.Description, , Err.Number
Resume Next
End Sub
Private Sub TraitementElement(ByVal E As HTMLDTElement)
Dim N As Integer
Dim C As Range
On Error GoTo ErrTraitementElement
L = L + 1
Set C = Cells(L, 2)
C = E.outerHTML
For N = 0 To E.ChildNodes.Length - 1
TraitementElement E.ChildNodes(N)
Next
Exit Sub
ErrTraitementElement:
Cells(L, 3) = Err.Description
Resume Next
End Sub
==== Fin module =====