Microsoft 365 Afficher Google et fermer l'onglet nouveau sans fermer le navigateur

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous,

J'ai une nouvelle p'tite demande ... de confort .
Malgré essais et recherches : je n'ai pas trouvé !

Quand je travaille, sont ouverts :
- mon classeur excel,
- mon navigateur Google et mon onglet "agenda",

J'ai fait un p'tit code pour afficher Google direct sans sortir de mon classeur (ça ... c'est pas très difficile)
Mais ça ouvre toujours un nouvel onglet dans le navigateur :mad:
Est-il possible d'afficher Google et de sélectionner directement mon agenda sans qu'un nouvel onglet soit ouvert ?
mon p'tit code :
VB:
Option Explicit
Dim CmdBar As CommandBar
Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" _
    Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, _
    ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Sub agenda1()
    Dim fichier As String
        fichier = "https://accounts.google.com/ServiceLogin/"
    ShellExecute 0, "", fichier, "", "", 0
End Sub
le lien : est tronqué pour la confidentialité :)

Auriez-vous la solution ?
Je joins un petit classeur test,
Avec mes remerciements,
lionel,
 

Pièces jointes

  • Agenda.xlsm
    15.9 KB · Affichages: 99
Dernière édition:

Dudu2

XLDnaute Barbatruc
En fait tu voudrais que non seulement le code active la fenêtre Google Chrome ou la créé si absente et en plus se positionne sur l'onglet Agenda s'il existe !

Je ne sais pas aller explorer les onglets de Chrome à partir de VBA.
Peut-être avec des Sendkeys de Ctrl + Tab vers Chrome mais ça devient très très compliqué.

Le code que je t'ai donné ne peut fonctionner que si tu utilises une fenêtre (une instance de Google Chrome) dédiée à l'Agenda dans 1 seul onglet, c'est à dire si tu lances un Google Chrome séparé pour l'Agenda uniquement et un autre Google Chrome pour ta navigation Internet et ses onglets.

Le code que j'ai modifié, est capable de lancer une nouvelle instance de Google Chrome que tu devras dédier à l'Agenda sans que tu aies besoin de le faire si l'Agenda n'est pas trouvé en tant que fenêtre.
VB:
'-------------------------------
'Active la fenêtre Google Chrome
'-------------------------------
Sub ActiveGoogleChrome()
    Const NomFenêtreGoogle = "Google Agenda"
    'Const NomFenêtreGoogle = "- Google Chrome"
    Const Programme As String = "Chrome.exe"
    Const Paramètre As String = "https://accounts.google.com/signin/v2/identifier?hl=fr&passive=true&continue=https%3A%2F%2Fwww.google.com%2F&flowName=GlifWebSignIn&flowEntry=ServiceLogin"

    'Const Paramètre As String = "https://google.com/"
    
    If Not ActivateWindowByPartialName(NomFenêtreGoogle) Then
        If MsgBox("La macro va ouvrir une nouvelle fenêtre de Google Chrome ! " & vbCrLf & _
               "Réserver cette instance de Chrome à l'Agenda uniquement.", _
               vbOKCancel + vbInformation) = vbOK Then
            ShellExecute 0, "Open", Programme, "--new-window " & Paramètre, "", 3
        End If
    End If
End Sub
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Merci Dudu2,

"En fait tu voudrais que non seulement le code active la fenêtre Google Chrome ou la créé si absente et en plus se positionne sur l'onglet Agenda s'il existe !"

- OUI exactement, : le navigateur est toujours "obligatoirement" ouvert ainsi que plusieurs onglets dont l'agenda.

Merci pour ton nouveau code :
- il ouvre comme tu l'annonces une nouvelle "fenêtre" Google,
- il n'ouvre pas l'agenda,

Merci encore pour tes efforts mais je pense que c'est trop "coriace" lol.
Tant pis : je cliquerai un peu plus :)
lionel,
 

Dudu2

XLDnaute Barbatruc
- le navigateur est toujours "obligatoirement" ouvert ainsi que plusieurs onglets dont l'agenda.
Si tu ne peux / veux pas séparer l'Agenda dans une fenêtre dédiée (une instance de Google Chrome dédiée), opération simplissime mais sans doute interdite dans ton environnement (?), effectivement ça ne peut pas marcher.

- il n'ouvre pas l'agenda,
Mais je pense que tu as essayé le code directement sans vraiment analyser cette option.
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
"le navigateur est toujours "obligatoirement" ouvert ainsi que plusieurs onglets dont l'agenda. "
Quand je dis Obligatoirement, c'est que je commence toujours par ouvrir Google et les autres onglets dont j'ai besoin, y compris l'agenda.

Mais laisse, ne perd pas ton temps car de toute façon, même si ça fonctionnait, je serait "en permanence "obligé" de passer du temps (plus d'une centaine de fois par jour) à chaque fois pour tout refermer :)
 

Dudu2

XLDnaute Barbatruc
Pour sélectionner l'onglet Agenda il faut 2 conditions:
1 - que l'onglet Agenda soit l'onglet actif dans Google Chrome, car il donnera son nom à la fenêtre.
2 - que le nom partiel de fenêtre recherché (dans le code Const NomFenêtreGoogle = ) soit correct.

Comme je l'ai déjà expliqué, la condition 1 n'est garantie à 100% que si l'instance Google Chrome ne contient qu'un seul onglet, celui de l'Agenda. C'est pour ça qu'il faut une instance Google Chrome dédiée à l'Agenda qui ne sera pas perturbée par ses autres onglets.
L'autre instance de Google Chrome étant utilisée avec 1 ou plusieurs onglets pour la navigation Internet.

Concernant la condition 2, au vu de ton screenshot précédent, la bonne valeur est:
Const NomFenêtreGoogle = "Google Agenda"
2020-08-08_190608.jpg


Voici 2 instances de Google Chrome dans la barre des tâches.
Icônes groupées:
2020-08-09_070753.jpg


Icônes dégroupées:
2020-08-09_070541.jpg


A partir du moment on tu comprends et acceptes l'idée de 2 instances Google Chrome, le rôle du code est:
- soit d'afficher l'instance Google Chrome de l'Agenda si trouvée
- soit de créer une nouvelle instance Google Chrome dans laquelle tu ouvres l'Agenda après login et qui restera réservée à l'Agenda uniquement.
C'est ce que fait le dernier code indiqué avec l'option -new-window qui créé une nouvelle instance de Google Chrome (pour que tu puisses y installer l'onglet Agenda à l'exclusion de tout autre onglet) au lieu de créer un nouvel onglet sur une instance éventuellement existante.
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Une autre option est que tu t'assures qu'en quittant Google Chrome pour passer à une autre application, ce soit toujours l'onglet Agenda qui est l'onglet actif. Mais ça, ce n'est pas très pratique et risque de générer des clics superflus.
 

Dudu2

XLDnaute Barbatruc
Bonjour Lionel,

Tu as de la chance que je sois parfois curieux et obstiné.
Je me suis intéressé à l'analyse des onglets de Google Chrome depuis VBA et j'ai finalement pu les parcourir et les analyser indirectement via l'API Windows. En tous cas sur mon PC Windows 7.

A noter que le nom de la fenêtre qui commence par "Google Agenda - ..." ce n'est pas un blanc qui sépare "Google" et "Agenda" mais un faux blanc (x'A0' = Chr(160)).

Cette macro:
- Lance Google Chrome sur l'URL de l'Agenda si aucune fenêtre Google Chrome n'est ouverte.
- Créé un Onglet Agenda dans la fenêtre Google Chrome ouverte si l'Agenda n'est pas présent dans les Onglets.
- Positionne sur l'Onglet Agenda si présent parmi les Onglets de la fenêtre Google Chrome ouverte.

À l'intention des API'istes:
A noter que j'ai sorti tout ce qui est API Windows dans un module à part (Module_APIWindows) dans lequel j'ai ajouté mes petites fonctions persos bien utiles(**) pour ne pas avoir à chaque fois à déclarer la palanquée de fonctions de l'API dans les modules des macros.
(**) Dont GetWindowByPartialName() car on ne connait pas toujours le nom complet de la fenêtre,
et GetWindowName() utilisées ici.
 

Pièces jointes

  • Active Google Chrome & Google Agenda.xlsm
    51.3 KB · Affichages: 4
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Re ...
J'ai repris le fichier du post#85
Si le navigateur Google est :
- sur l'onglet agenda = il active direct le navigateur, et ...
................................................ clic1 il active le navigateur sans créer un second onglet agenda
................................................ clic2 il active le navigateur ......... et créé un second onglet agenda
- sur un autre onglet = :
................................................ clic1 il active le navigateur sans créer un second onglet agenda
................................................ clic2 il active le navigateur ......... et créé un second onglet agenda

lol y'a de quoi devenir chèvre :)
 

Discussions similaires

Réponses
4
Affichages
588
Réponses
1
Affichages
1 K
Compte Supprimé 979
C

Statistiques des forums

Discussions
314 633
Messages
2 111 417
Membres
111 126
dernier inscrit
vitam