XL 2016 VBA : Internet Explorer + upload de fichier

dionys0s

XLDnaute Impliqué
Bonjour le forum,

Dans le cadre de mon boulot, j'essaie de créer une macro permettant de faire de l'upload "en masse" de fichiers enregistrés sur mon disque dur.
La méthode manuelle est classique :
J'ai pour cela une page Intranet dédiée qui ne comporte qu'un bouton "Parcourir". On clique sur ce bouton, une fenêtre classique s'ouvre, on sélectionne le fichier à uploader, en clique sur OK une fois, donc la fenêtre de sélection disparaît, puis on clique sur le bouton OK qui est désormais apparu sur ma page, et c'est terminé.

J'essaie d'automatiser ça, et pour le moment j'arrive à :
  • Ouvrir Internet Explorer
  • Charger la page
  • Afficher la page
  • Cliquer sur le bouton "Parcourir" (une fenêtre s'ouvre)

Il me reste à :
  1. Automatiser la sélection de mon fichier dans la fenêtre qui vient de s'ouvrir
  2. La valider
  3. Cliquer sur le bouton "OK" qui est apparu sur ma page initiale où il n'y avait avant que le bouton "Parcourir".
Je pense que je devrais m'en sortir sur l'étape 3, puisque c'est le même fonctionnement a priori que pour cliquer sur le bouton "Parcourir", mais je cale sur les étapes 1 et 2.

Si quelqu'un a déjà fait ce genre de chose et a une idée de comment procéder, je suis preneur !

Voici l'état d'avancement de mon code :
VB:
Option Explicit
Option Compare Binary
Option Private Module

Public Sub UploadFichier()

  Dim IE As SHDocVw.InternetExplorer 'Dim IE As Object

  Set IE = New SHDocVw.InternetExplorer 'Set IE = VBA.CreateObject("InternetExplorer.Application")

  With IE
    Call .Navigate("https://url.domain/")
    Let .Visible = True
    Call WaitIE(IE)
    With .Document.All("file_select")
      Call .Click
    End With

    'Selectionner le bon fichier
    'Valider la sélection
    'Envoyer
  End With
Stop
  Call IE.Quit
  Set IE = Nothing

End Sub

Private Sub WaitIE(ByRef IE As SHDocVw.InternetExplorer) 'Private Sub WaitIE(ByRef IE As Object)

  Do Until IE.ReadyState = SHDocVw.READYSTATE_COMPLETE '4
    Call VBA.DoEvents
  Loop

End Sub
D'avance, merci beaucoup pour votre aide !
 

Discussions similaires

Réponses
8
Affichages
595