IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

Controle EI11 "Voulez-vous ouvrir ou enregistrer * à partir de *" en VBA


Sujet :

VBA

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chef Technicien Petrochimie
    Inscrit en
    Mai 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Chef Technicien Petrochimie
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Controle EI11 "Voulez-vous ouvrir ou enregistrer * à partir de *" en VBA
    Bonjour Dévelopeurs,

    Je cherche le moyen de pouvoir piloter le controle IE11 via mon userform (fichier excel) sans être obliger d'utiliser {TAB} pour choisir enregistrer sous et spécifier un dossier pour l'enregistrement automatiquement en VBA. J'ai lu plusieur réponse sur différent forum mais rien trouver pour m'aider !

    Merci à l'avance.

    Je suis rendu a cette étape ! (voir image)

    Nom : 2016-07-17 06_31_12-Personnel sur le site - Personnel Onsite - Gestionnaire de rapports - Intern.png
Affichages : 3299
Taille : 503,6 Ko

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    'Déclaration pour Sleep
    #If VBA7 Then
    Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64 Bit Systems
    #Else
    Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'For 32 Bit Systems
    #End If
    
    Sub WaitIE(IE As InternetExplorer)
    'attente du chargement complet de l'élément Document de la page IE
    Do Until IE.readyState = READYSTATE_COMPLETE
    DoEvents
    Loop
    End Sub
    
    Sub WaitDoc(doc As HTMLDocument)
    'attente du chargement complet de l'élément Document
      Do While Not doc.readyState = "complete"
        DoEvents
      Loop
     End Sub
    
    Public Sub PremierIE()
    Dim IE As New InternetExplorer
    Dim Lien As HTMLGenericElement
    Dim Coll_Liens As IHTMLElementCollection
    Dim IEDoc As HTMLDocument
    
    Set IE = CreateObject("InternetExplorer.Application")
    
    IE.Navigate "http://sttxsawh01/Reports/Pages/Report.aspx?ItemPath=%2fMuster%2fQuebec%2fPersonnel+sur+le+site+-+Personnel+Onsite"
    IE.Visible = True
    WaitIE IE
    
    'Recherche bouton Excel
    Set IEDoc = IE.document
    WaitDoc IEDoc
    Set Coll_Liens = IEDoc.getElementsByTagName("a")
    
    'Clic bouton Excel pour ouvrir dialog box de IE11
    For Each Lien In Coll_Liens
        If Lien.innerText = "Excel" Then
        Sleep (10000)
        Lien.Click
        IE.Visible = True
        
     'Partie que je ne veux plus et qui sera remplacé par code pour enregistrer sous
        'Sleep (10000)
        'Application.SendKeys ("{TAB}")        ' Gives focus to Open Button
        'Sleep (500)
        'Application.SendKeys ("{TAB}")        ' Gives focus to Save Button
        'Sleep (500)
        'Application.SendKeys ("{~}")       ' Enter
        'Sleep (10000)
    
    Exit For
        Else
        End If
    Next
    
    Set IE = Nothing
    Set IEDoc = Nothing
    IE.Quit
    MsgBox ("Transfert complété !")
    End Sub

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut


    Bonjour,

    pas d'autre option en pilotant IE !
    Sinon il faut voir si la page source utilise une requête pour charger les données;
    voir les exemples dans les discussions des forums VBA Excel et Excel Contribuez
    tout comme le tutoriel VBA et développement Web

    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chef Technicien Petrochimie
    Inscrit en
    Mai 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Chef Technicien Petrochimie
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour l'info, j'ai déja consulté vos recherche et non pas moyen de charger les données car fichier provenant du serveur corporatif !

    J'ai trouvé cette méthode, mais j'aimerais spécifier le chemin où enregistrer le fichier :

    code que j'ai inséré à la place du code que je voulais remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Application.SendKeys "^j", True
    Sleep (500)
    Application.SendKeys "{RIGHT}", True
    Sleep (500)
    Application.SendKeys "{RIGHT}", True
    Sleep (500)
    Application.SendKeys "{DOWN}", True
    Sleep (500)
    Application.SendKeys "{DOWN}", True
    Sleep (500)
    Application.SendKeys "~", True
    résultat :
    Nom : 2016-07-17 10_10_13-Afficher les téléchargements - Internet Explorer.png
Affichages : 3011
Taille : 53,7 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.SendKeys "~", True
    résultat :
    Nom : 2016-07-17 10_19_02-Enregistrer sous.png
Affichages : 2880
Taille : 94,5 Ko

    À cette étape, j'aimerais spécifier un chemin au-lieu de celui où se trouve mon fichier excel, par la suite je vais continuer avec du pilotage "application.sendkeys"

    Merci !

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    A cet étape, le chemin complet du fichier doit passer …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Chef Technicien Petrochimie
    Inscrit en
    Mai 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Chef Technicien Petrochimie
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Le problème est que d'autres personnes vont utiliser le fichier, c'est un outil commun a plusieurs utilisateurs, qui va se trouver sur le reseau et je voudrais que lorsque le popup enregistrer sous apparaise, le chemin que je vais pré-déterminer (dossier sur le reseau) soit toujours le même peut importe l'utilisateur.

    Merci !

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Au pire, mapper un lecteur pointant sur le chemin réseau mais cela ne change rien à la réponse précédente …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  7. #7
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Du nouveau dans ma contribution Automatiser l'ouverture d'un fichier compatible Excel depuis le Web (téléchargement) !
    Te reste ensuite à te documenter sur UIAutomation

    Mais SendKeys ou UIAutomation : même combat !
    Car si la séquence de touches ou l'automation est envoyée trop tôt, cela part dans le vide !
    En effet lors de l'apparition du bandeau de téléchargement parfois quelques dixièmes de seconde
    sont encore nécessaires afin que le fichier soit prêt à être téléchargé …

    Avec une temporisation suffisante après l'apparition du bandeau de téléchargement,
    l'appel peut directement être effectué dans la procédure principale sans la procédure IEAuto

    De la synchronisation naît la solution !

    Edit : je viens de m'apercevoir c'est ce qu'a déjà indiqué kiki29 dans son post via son lien, dire que je suis passé à côté !
    (Désolé Doug ! )
    Heureusement trois semaines plus tard je suis tombé par hasard lors d'une recherche sans rapport sur un post équivalent !
    Et j'avais cette méthode sous le coude depuis plus d'un an mais j'avais échoué à cause d'un souci de passage de pointeur …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/09/2015, 18h05
  2. Voulez vous ouvrir ou enregistrer ce fichier
    Par sam01 dans le forum Langage
    Réponses: 11
    Dernier message: 16/06/2010, 12h51
  3. Réponses: 1
    Dernier message: 07/09/2007, 10h30
  4. Réponses: 0
    Dernier message: 06/09/2007, 19h56
  5. Réponses: 17
    Dernier message: 17/07/2006, 18h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo