Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 02/07/2009, 11h52   #1 (permalink)
Invité de passage
 
Date d'inscription: juillet 2009
Messages: 6
Par défaut Excel VBA et Internet explorer 8

Bonjour,

Je réalise une application qui à pour but de gérer des sites distants et dont l'un des fonctions est de permettre la connexion sur des systèmes de visioconférence.
L'accès à ces matériels se fait via un page WEB sur notre Intranet sécurisée par mot de passe.

C'est en désespoir de cause que je vous soumets aujourd'hui mon problème :

J'ai besoin de pouvoir ramener au premier plan la page web d'un site si l'utilisateur l'a déjà ouverte.

Ce que j'arrive à faire, c'est de savoir si la page web est déjà ouverte, d'amener IE8 au premier plan, mais en aucun cas d'afficher l'onglet du site au premier plan.

J'ai cherché sur le WEB mais nulle part je n'ai trouvé comment on gère les onglets d'internet Explorer. Il est possible d'ouvrir une page web dans un nouvel onglet mais il semble impossible de forcer l'affichage au premier plan d'un onglet déjà présent.

A l'aide
Antoine HUG est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 12h44   #2 (permalink)
Nouveau membre du Club
 
Date d'inscription: janvier 2009
Messages: 75
Par défaut

Bonjour,
Dis nous déja comment tu fais ca.
Citation:
Ce que j'arrive à faire, c'est de savoir si la page web est déjà ouverte, d'amener IE8 au premier plan, mais en aucun cas d'afficher l'onglet du site au premier plan.
et ca
Citation:
Il est possible d'ouvrir une page web dans un nouvel onglet mais il semble impossible de forcer l'affichage au premier plan d'un onglet déjà présent.
nicht est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 13h29   #3 (permalink)
Invité de passage
 
Date d'inscription: juillet 2009
Messages: 6
Par défaut Une partie de la réponse

Code :
Public Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
Public fenetres
Dim myIE As New InternetExplorer
BringWindowToTop myIE.hwnd
Pour amener la fenêtre IE au premier plan on peut coupler cela avec une boucle qui parcourt les fenêtres ouvertes à la recherche d'une page web précise et amener IE via son handle au premier plan ( mais évidemment pas ce que je veux ie : l'onglet Web concerné au premier plan)

pour ouvrir une page Web dans un nouvel onglet il faut utiliser :
Code :
NavOpenNewForegroundTab (MSDN : BrowserNavConstants Enumerated Type)
j'espère avoir répondu à tes questions. Mais as tu les réponses aux miennes ?

Dernière modification par jacques_jean ; 06/07/2009 à 16h56. Motif: Balises CODE
Antoine HUG est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 14h27   #4 (permalink)
Nouveau membre du Club
 
Date d'inscription: janvier 2009
Messages: 75
Par défaut

Tout ceci est un peu compliqué pour moi mais on doit puvoir se débrouiller pour assembler les deux? Je chercherai...
A bientôt
nicht

Salut,
Si je ne m'abuse, le titre de la fenêtre d'internet explorer prend le titre ou l'adresse de l'onglet en cours.
Je n'utilise pas ie donc je n'ai pas essayé mais peut-être que l'on peut changer le titre de la fenêtre et par conséquent, l'onglet du premier plan sera celui dont le nom ou l'adresse de la fenêtre?
Essai et tiens nous au courant...

Dernière modification par AlainTech ; 17/07/2009 à 17h39. Motif: Fusion de 2 messages
nicht est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/07/2009, 16h21   #5 (permalink)
Invité de passage
 
Date d'inscription: juillet 2009
Messages: 6
Par défaut c'est pas gagné...

Il n' y a pas de doutes, l'idée est sympa mais comment faire pour savoir quel onglet à le focus ?
Pour changer le titre de l'onglet actif il faut le trouver et ce n'est pas forcemment le premier.
C'est une piste mais après 4H dessus j'avoue que je n'ai pas avancé...
Enfin si :

Set maPageHtml = IE.document

maPageHtml.Title contient le titre de la fenêtre en question

C'est un début...
Antoine HUG est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 08/07/2009, 13h40   #6 (permalink)
Nouveau membre du Club
 
Date d'inscription: janvier 2009
Messages: 75
Par défaut

Et bien...la fenêtre en question (mapagehtml.title) a pour titre le titre ou l'adresse de l'onglet actif...
nicht est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 08/07/2009, 14h55   #7 (permalink)
Invité de passage
 
Date d'inscription: juillet 2009
Messages: 6
Par défaut

bonjour,

Tout d'abord merci de ne pas me laisser tout seul avec cet epineux problème.

C'est vraiment appréciable.

Concernant la nouvelle hypothèse de travail :

Quand je parcours les pages IE ouvertes, en fait je crois que je parcours les process IE ouverts et donc a une fenêtre IE ouverte correspond un "Title".

Il faudrait que je récupére le "Title" de la fenêtre IE sans faire de boucle sur les pages IE (là je me demande si je suis clair et sincérement j'ai un doute !)
Parceque sinon la fenêtre change nom en fonction de la page IE trouvée. Autrement dit
le document.title est toujours en rapport avec la page IE, c'est bien tout le problème lié à IE8 de cet espèce de conteneur "virtuel" rassemblant les onglets et le plus drôle c'est que ce n'est absolument pas documenté ....
Antoine HUG est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 08/07/2009, 15h13   #8 (permalink)
Nouveau membre du Club
 
Date d'inscription: janvier 2009
Messages: 75
Par défaut

Re-
Merci pour le compliment je suis flatté.

En fait, tu as vraiment raison d'avoir un doute: je n'ai rien compris du tout (je l'ai dit: je connais rien a ie!!)

Peut-être avec des explications un peut-plus claires...
nicht est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/07/2009, 10h40   #9 (permalink)
Invité de passage
 
Date d'inscription: juillet 2009
Messages: 6
Par défaut tentative de clarification

et je dis bien tentative,

lorsque l'on fait une boucle qui parcourt l'ensemble des fenêtres I.E. et que l'on recupère le titre associé (ie : document.title) le titre de la fenêtre supportant les onglets est en rapport avec la fenêtre IE en cours (comme si la fenêtre en cours prenait le focus). ce ne correspond pas à l'état réel de la fenêtre "mère" (qui contient les onglets) qui elle à un instant T porte le titre de l'onglet qui est au premier plan.

J'ai utilisé un outil de type SPY++ qui permet d'interroger un fenêtre Windows pour récupérer ses caractéristiques, et je me suis rendu compte que ces fenêtres ne possèdent pas de code HWND (Handle : identifiant), lorsque l'on passe d'un onglet à l'autre seuls deux paramètres changent :

HDC(Wnd) et HDC (Client) qui semblents liès à la position géographique de la fenêtre (en hexadécimal)

La fenêtre "container" est elle de classe IEFrame

je deviens de plus en plus précis mais ce n'est pas pour autant que j'avance...
Antoine HUG est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/07/2009, 09h04   #10 (permalink)
Nouveau membre du Club
 
Date d'inscription: janvier 2009
Messages: 75
Par défaut

S'il te plait, je t'en t'en supplie...
J'avais demandé des explications plus claires pas plus précises.
Moi je suis un débutant qui apprend avec l'aide de vba et ce forum.
Je ne sais ce que c'est moi un:
Citation:
J'ai utilisé un outil de type SPY++
un
Citation:
code HWND (Handle : identifiant)
un
Citation:
HDC(Wnd) et HDC (Client)
une
Citation:
fenêtre "container" est elle de classe IEFrame

Tu as bien de la chance de pouvoir avancer avec ça...
Nicht
nicht est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/07/2009, 13h39   #11 (permalink)
Invité de passage
 
Date d'inscription: juillet 2009
Messages: 6
Par défaut Des réponses

SPY++ : un outil fourni par Microsoft dans chaque distribution visual studio qui te permet en mettant le cursuer sur une fenêtre windows de récupérer ses caractéristiques entre autres son Handle (HWND)

Le Handle est un identifiant unique d'un objet windows dont on peut se servir via VB

HDC je ne suis pas sur... Peut être un rapport avec la localisation de la fenêtre sur l'écran

IEFRAME Chaque objet appartient à un class (Class Textbox...) et IEFRAME c'est la classe pour les fenêtres Internet Explorer. IE8 est un cas particulier puisqu'il y a deux modes de fonctionnement (option à cocher) : soit on utilise les onglets une seule fenêtre IE contient plusieurs pages WEB , soit on a une fenêtre par page Web (mode classique).

voila voila...
Antoine HUG est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 11/07/2009, 09h49   #12 (permalink)
Nouveau membre du Club
 
Date d'inscription: janvier 2009
Messages: 75
Par défaut

Ben dis donc, on en apprend tous les jours!
Alors, si j'ai bien compris, tu as plusieurs fenêtres de ie avec dans chacune plusieurs onglets, et ru voudrais mettre celle qui contient l'onglet de ton adresse au premier plan et selctionner cet onglet par la même occasion?

Alors, si tu connais la position de la fenêtre et l'onglet, tu peux te servir simplement de touches |Alt|+|Tab| pour la fenêtre et |Ctrl|+|tab| pour l'onglet.
Si tu ne connais pas leur position il faudra que je cherche (que nous cherchions ) un peu plus...

Nicht
nicht est déconnecté   Envoyer un message privé Réponse avec citation
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 09h06.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.