Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Liste déroulante HTML, lire les valeurs en VBA

2 réponses
Avatar
Gloops
Bonjour tout le monde,

Merci =E0 Philippe, qui m'a aid=E9 =E0 lire le contenu des=20
contr=F4les que j'ai copi=E9 via le presse-papiers, d'un=20
formulaire web =E0 une feuille Excel, pour faire un tri=20
dessus et une mise en forme.

Il reste les listes d=E9roulantes, qui me mettent encore en=20
=E9chec.

Il se trouve qu'au lieu d'avoir le texte de la liste=20
d=E9roulante, j'ai un X, dans mon tableau final. Pas=20
terrible, n'est-ce pas ? En y regardant de plus pr=E8s, la=20
valeur n'a pas =E9t=E9 lue, aussi j'ai trait=E9 le contr=F4le=20
comme une case =E0 cocher, qui s'est retrouv=E9e en type par=20
d=E9faut dans mon traitement. Bref.

La liste d=E9roulante est un objet OLEObjet de type=20
HTMLSelect, reconnaissable =E0 la=20
valeur "Forms.HTML:Select.1" de sa propri=E9t=E9 ProgID.

Seulement, =E7a se corse. Dans l'ordre d'apparition de=20
gauche =E0 droite, on a un contr=F4le de ce type, nomm=E9=20
Control plus un num=E9ro, dont le contenu me reste assez=20
myst=E9rieux. A la fin de la collection, on trouve un autre=20
contr=F4le, nomm=E9 HTMLSelect plus un num=E9ro, dont les=20
propri=E9t=E9s contiennent les valeurs possibles de texte.

Alleluia me direz-vous, seulement voil=E0, je n'ai r=E9ussi =E0=20
acc=E9der aux propri=E9t=E9s que par l'interface utilisateur, il=20
faut commencer par mettre la feuille en mode cr=E9ation de=20
formulaire, gr=E2ce =E0 une ic=F4ne de la bo=EEte =E0 outils=20
Contr=F4les, ensuite cliquer sur le contr=F4le vis=E9, et les=20
propri=E9t=E9s apparaissent dans la fen=EAtre propri=E9t=E9s.=20
Seulement si c'=E9tait pour les faire appara=EEtre =E0 l'=E9cran,=20
il suffisait de regarder le contr=F4le directement.

En fait, j'ai pu lire la liste de valeurs du contr=F4le,=20
avec cette syntaxe : W.HTMLSelect41.DisplayValues, =E9tant=20
entendu que W est la feuille.

Voui. Mais alors maintenant, sachant qu'il y en a=20
plusieurs et que leurs noms ne sont pas connus d'avance,=20
il reste =E0 trouver la bonne syntaxe ...
Donc, si je suis bien, il faut que je me r=E9f=E8re =E0 la bonne=20
collection. Parce que W.OLEObjects
("HTMLSelect41").Fill.DisplayValues, nada. Ou, plus=20
exactement, erreur 438, propri=E9t=E9 ou m=E9thode non g=E9r=E9e par=20
cet objet.

La collection HTMLSelect ne r=E9pond pas =E0 la question.

Une id=E9e ? Une adresse pour la doc en ligne ?

[J'esp=E8re que mon proxy ne m'aura pas trop fait radoter.=20
Il n'arr=EAte pas de me dire qu'il n'a pas pu envoyer mon=20
message, et je sais que parfois c'est faux. Mais pas=20
toujours.]

2 réponses

Avatar
Gloops
Eh ben ... j'ai bien fait de laisser reposer.
J'avais testé W.OLEObjects(N).Value, qui n'est pas
reconnu, en fait la liste des valeurs figurant dans la
liste est renvoyée par W.OLEObjects(N).Values, à lire en
fonction de la valeur de la propriété ProgID bien entendu.

Il n'y a même pas à tourner autour du pot, j'étais trop
impatient ma parole. D'ailleurs, les contrôles s'appellent
tous Control quelque chose, aujourd'hui. Pourtant, le
modèle source n'a pas bougé ...

Qui sait, peut-être que je vais finir par trouver comment
sortir l'intitulé sélectionné.

-----Message d'origine-----
Bonjour tout le monde,

Merci à Philippe, qui m'a aidé à lire le contenu des
contrôles que j'ai copié via le presse-papiers, d'un
formulaire web à une feuille Excel, pour faire un tri
dessus et une mise en forme.

Il reste les listes déroulantes, qui me mettent encore en
échec.

Il se trouve qu'au lieu d'avoir le texte de la liste
déroulante, j'ai un X, dans mon tableau final. Pas
terrible, n'est-ce pas ? En y regardant de plus près, la
valeur n'a pas été lue, aussi j'ai traité le contrôle
comme une case à cocher, qui s'est retrouvée en type par
défaut dans mon traitement. Bref.

La liste déroulante est un objet OLEObjet de type
HTMLSelect, reconnaissable à la
valeur "Forms.HTML:Select.1" de sa propriété ProgID.

Seulement, ça se corse. Dans l'ordre d'apparition de
gauche à droite, on a un contrôle de ce type, nommé
Control plus un numéro, dont le contenu me reste assez
mystérieux. A la fin de la collection, on trouve un autre
contrôle, nommé HTMLSelect plus un numéro, dont les
propriétés contiennent les valeurs possibles de texte.

Alleluia me direz-vous, seulement voilà, je n'ai réussi à
accéder aux propriétés que par l'interface utilisateur,
il

faut commencer par mettre la feuille en mode création de
formulaire, grâce à une icône de la boîte à outils
Contrôles, ensuite cliquer sur le contrôle visé, et les
propriétés apparaissent dans la fenêtre propriétés.
Seulement si c'était pour les faire apparaître à l'écran,
il suffisait de regarder le contrôle directement.

En fait, j'ai pu lire la liste de valeurs du contrôle,
avec cette syntaxe : W.HTMLSelect41.DisplayValues, étant
entendu que W est la feuille.

Voui. Mais alors maintenant, sachant qu'il y en a
plusieurs et que leurs noms ne sont pas connus d'avance,
il reste à trouver la bonne syntaxe ...
Donc, si je suis bien, il faut que je me réfère à la
bonne

collection. Parce que W.OLEObjects
("HTMLSelect41").Fill.DisplayValues, nada. Ou, plus
exactement, erreur 438, propriété ou méthode non gérée
par

cet objet.

La collection HTMLSelect ne répond pas à la question.

Une idée ? Une adresse pour la doc en ligne ?

[J'espère que mon proxy ne m'aura pas trop fait radoter.
Il n'arrête pas de me dire qu'il n'a pas pu envoyer mon
message, et je sais que parfois c'est faux. Mais pas
toujours.]

.



Avatar
michdenis
Bonjour Gloops,

Voici de l'information en vrac. Comme je n'ai jamais travaillé avec des formulaires sur des pages web...mes
connaissances dans ce domaine sont très limitées ....Regarde ce qui suit, si quelque chose peut t'aider !

Ceci suppose que ton listbox est issu de la barre d'outils contrôle
et que son contenu est rempli par la propriété ListFillRange.
'-------------------------------------
Dim Sh As OLEObject
Dim A As String
Dim B As Variant, C As Long

Set k = Worksheets("feuil1").OLEObjects("ListBox1").Object
With k
'Désactive tous les items sélectionnés de ta listbox
.ListIndex = -1
'Retrouve l'item No 2 de la listbox
A = .List(1, 0)
'Retourne le tableau complet des données de ta listbox
B = .List
End With

'Obtenir la liste (contenu)
For C = 0 To UBound(B)
MsgBox B(C, 0)
Next
'-------------------------------------



'-------------------------------------
'Les types d'objets OLEObject sont :
Dim T As XlOLEType
T = xlOLELink ', xlOLEEmbed , xlOLEControl

'Les Types d'objet Xlthml sont :
Dim H As XlHtmlType
H = xlHtmlStatic 'xlHtmlList xlHtmlCalc xlHtmlChart


'Regarde dans l'aide cet nouvel objet : "PublishObject
Dim x As PublishObject

For Each P In ThisWorkbook.PublishObjects
If P.HtmlType = xlHtmlList Then

'ton code

End If
Next
'-------------------------------------


Salutations!



"Gloops" a écrit dans le message de news:079701c4958c$de8a1d50$
Eh ben ... j'ai bien fait de laisser reposer.
J'avais testé W.OLEObjects(N).Value, qui n'est pas
reconnu, en fait la liste des valeurs figurant dans la
liste est renvoyée par W.OLEObjects(N).Values, à lire en
fonction de la valeur de la propriété ProgID bien entendu.

Il n'y a même pas à tourner autour du pot, j'étais trop
impatient ma parole. D'ailleurs, les contrôles s'appellent
tous Control quelque chose, aujourd'hui. Pourtant, le
modèle source n'a pas bougé ...

Qui sait, peut-être que je vais finir par trouver comment
sortir l'intitulé sélectionné.

-----Message d'origine-----
Bonjour tout le monde,

Merci à Philippe, qui m'a aidé à lire le contenu des
contrôles que j'ai copié via le presse-papiers, d'un
formulaire web à une feuille Excel, pour faire un tri
dessus et une mise en forme.

Il reste les listes déroulantes, qui me mettent encore en
échec.

Il se trouve qu'au lieu d'avoir le texte de la liste
déroulante, j'ai un X, dans mon tableau final. Pas
terrible, n'est-ce pas ? En y regardant de plus près, la
valeur n'a pas été lue, aussi j'ai traité le contrôle
comme une case à cocher, qui s'est retrouvée en type par
défaut dans mon traitement. Bref.

La liste déroulante est un objet OLEObjet de type
HTMLSelect, reconnaissable à la
valeur "Forms.HTML:Select.1" de sa propriété ProgID.

Seulement, ça se corse. Dans l'ordre d'apparition de
gauche à droite, on a un contrôle de ce type, nommé
Control plus un numéro, dont le contenu me reste assez
mystérieux. A la fin de la collection, on trouve un autre
contrôle, nommé HTMLSelect plus un numéro, dont les
propriétés contiennent les valeurs possibles de texte.

Alleluia me direz-vous, seulement voilà, je n'ai réussi à
accéder aux propriétés que par l'interface utilisateur,
il

faut commencer par mettre la feuille en mode création de
formulaire, grâce à une icône de la boîte à outils
Contrôles, ensuite cliquer sur le contrôle visé, et les
propriétés apparaissent dans la fenêtre propriétés.
Seulement si c'était pour les faire apparaître à l'écran,
il suffisait de regarder le contrôle directement.

En fait, j'ai pu lire la liste de valeurs du contrôle,
avec cette syntaxe : W.HTMLSelect41.DisplayValues, étant
entendu que W est la feuille.

Voui. Mais alors maintenant, sachant qu'il y en a
plusieurs et que leurs noms ne sont pas connus d'avance,
il reste à trouver la bonne syntaxe ...
Donc, si je suis bien, il faut que je me réfère à la
bonne

collection. Parce que W.OLEObjects
("HTMLSelect41").Fill.DisplayValues, nada. Ou, plus
exactement, erreur 438, propriété ou méthode non gérée
par

cet objet.

La collection HTMLSelect ne répond pas à la question.

Une idée ? Une adresse pour la doc en ligne ?

[J'espère que mon proxy ne m'aura pas trop fait radoter.
Il n'arrête pas de me dire qu'il n'a pas pu envoyer mon
message, et je sais que parfois c'est faux. Mais pas
toujours.]

.