Ouvrir fichier Excel sur site intranet via vba

blandinedau

XLDnaute Nouveau
Bonjour,

comme indiqué dans le titre, je cherche à ouvrir un fichier Excel disponible sur l'intranet de mon entreprise via une macro vba qui fait d'autres choses. En gros elle va chercher plusieurs informations sur cet intranet et veut en même temps récupérer des informations contenues dans un autre fichier Excel que l'utilisateur peut télécharger à partir de cet intranet.

Dans ma macro, j'ai réussi à faire s'ouvrir la fenêtre "Ouvrir un fichier". Mais n'arrivant pas à prendre le contrôle dessus, j'avais décidé de faire cliquer l'utilisateur de ma macro tout simplement sur le bouton ouvrir lui-même. Le problème est que l'on peut effectivement cliquer sur ce bouton, et ce n'est qu'après que la macro continue son travail, mais le fichier ne s'ouvre pas, même lorsque le traitement de la macro est terminé.

Quelqu'un connaîtrait-il un subterfuge, une solution pour palier à ce problème ?

C'est la première fois que je crée une macro vba qui manipule une autre application que celles de la suite Office, aussi mes connaissances sont un peu limitées.

Merci d'avance à quiconque pourra éclairer ma lanterne... en espérant avoir été assez claire dans l'explication de mon problème..

Cordialement,

Blandine
 

blandinedau

XLDnaute Nouveau
Re : Ouvrir fichier Excel sur site intranet via vba

C'est un code qui reprend tellement d'informations propres à l'entreprise, confidentielles, que je n'avais pas spécialement envie de le mettre...

Je n'ai pas mis les déclarations de variables et tout le processus qui se déroule avant.. Ma macro en gros se balade sur les onglets de l'application intranet et pioche ici et là les informations qui intéressent l'utilisateur.

' Effectue un filtre des éléments d'un tableau
' Sélection le choix dans la liste déroulante

Set pagehtml = IE.document
Set filtre = pagehtml.getElementsByTagName("option")
For Each filtre_agrement In filtre
If filtre_agrement.Value = "filtre_choix" Then
filtre_agrement.Selected = "Selected"
Exit For
End If
Next

SendKeys ("{enter}")
'****************************************************
'Boucle pour attendre la fin du chargement de la page
While IE.Busy
DoEvents
Wend
'****************************************************


' Clique sur le bouton pour effectuer le filtrage
Set filtre = pagehtml.getElementById("filterxxx")
filtre.Click
'****************************************************
'Boucle pour attendre la fin du chargement de la page
While IE.Busy
DoEvents
Wend
'****************************************************


' Clique sur le bouton qui crée le fichier excel et nous le propose à l'exportation
Set boutons = IE.document.getElementsByTagName("input")
For Each bouton In boutons
If bouton.Value = "Exporter le tableau" Then
bouton.Click
Exit For
End If
Next
'****************************************************
'Boucle pour attendre la fin du chargement de la page
While IE.Busy
DoEvents
Wend
'****************************************************


' Clique sur le bouton ok pour valider la demande - affiche une nouvelle page dans la fenêtre IE active
Set boutons = IE.document.getElementsByTagName("input")
For Each bouton In boutons
If bouton.getAttribute("id") = "Ok" Then
bouton.Click
Exit For
End If
Next
'****************************************************
'Boucle pour attendre la fin du chargement de la page
While IE.Busy
DoEvents
Wend
'****************************************************


' Rafraîchit la liste des fichiers proposés en exportation, le dernier créé étant en statut "en-cours"
Set boutons = IE.document.getElementsByTagName("input")
For Each bouton In boutons
If bouton.Value = "Rafraîchir la liste des fichiers" Then
bouton.Click
Exit For
End If
Next
'****************************************************
'Boucle pour attendre la fin du chargement de la page
While IE.Busy
DoEvents
Wend
'****************************************************



' Clique sur le lien permettant de faire apparaître la fameuse fenêtre "ouvrir - enregistrer sous - annuler"
Set liens = IE.document.getElementsByTagName("img")
For Each lien In liens
If lien.getAttribute("alt") = "xls" Then
lien.Click
Exit For
End If
Next

Application.Wait Now + TimeValue("00:00:10")
'****************************************************
'Boucle pour attendre la fin du chargement de la page
While IE.Busy
DoEvents
Wend
'****************************************************


AppActivate ("Microsoft Excel")
Msgbox ("Cliquez sur OUVRIR.")

AppActivate ("Internet Explorer")

' Retourne sur la page précédent l'exportation afin de continuer la macro...
Set boutons = IE.document.getElementsByTagName("input")
For Each bouton In boutons
If bouton.Value = "Retour" Then
bouton.Click
Exit For
End If
Next
 
Dernière édition:

blandinedau

XLDnaute Nouveau
Re : Ouvrir fichier Excel sur site intranet via vba

Bonjour,

j'ai oublié de préciser que j'ai testé la macro dans une autre macro, en faisan un call, pour voir si ça affichait le fichier avant le reste de la macro contenant, ça n'a pas plus fonctionné...

Cordialement,

Blandine
 

blandinedau

XLDnaute Nouveau
Re : Ouvrir fichier Excel sur site intranet via vba

A nouveau bonjour.

J'ai inséré Ceci :
Application.IgnoreRemoteRequests = True

Juste avant que l'on ne clique sur le lien permettant d'ouvrir la fenêtre "ouvrir - enregistrer sous - Annuler".

Cela me permet d'ouvrir mon fichier excel. Cependant je me heurte à un nouveau problème : le fichier est ouvert dans une nouvelle instance. Donc si je veux récupérer des données sur ce fichier, à partir de ma macro vba dans mon fichier excel parent, je ne peux pas parce qu'il ne détecte pas ce classeur...

Une idée pour me sortir de cette nouvelle impasse ?

Cdlt,

Blandine
 

blandinedau

XLDnaute Nouveau
Re : Ouvrir fichier Excel sur site intranet via vba

Bonjour,

en attendant une quelconque aide, je continue mes recherches.

Voici où j'en suis rendue :

j'ai réussi à déterminer combien d'instances d'Excel sont ouvertes (en l'occurence 2), mais le programme vba reste actif sur l'instance dans laquelle il est en train de tourner. Jamais il ne veut chercher une info dans l'autre instance...

Une idée?

Cdt,

Blandine
 

blandinedau

XLDnaute Nouveau
Re : Ouvrir fichier Excel sur site intranet via vba

Bonjour,

Personne n'aurait une idée ? J'ai contourné le problème en demandant à l'utilisateur d'enregistrer le fichier sur son bureau sous un certain nom, la macro ouvrant par la suite de fichier puis le ferme et le supprime. j'aurai cependant préféré que l'utilisateur n'ait au pire qu'à cliquer sur le bouton ouvrir, voir rien à faire du tout...

Cdlt,

Blandine
 

Pierrot93

XLDnaute Barbatruc
Re : Ouvrir fichier Excel sur site intranet via vba

Bonjour,

Juste avant que l'on ne clique sur le lien permettant d'ouvrir la fenêtre "ouvrir - enregistrer sous - Annuler".

Cela me permet d'ouvrir mon fichier excel. Cependant je me heurte à un nouveau problème : le fichier est ouvert dans une nouvelle instance.
petite remarque au passage, plutôt que de l'ouvrir, pourquoi ne pas faire un "enregistrer sous", ensuite tu l'ouvres via vba, tu fais ton traitement et tu le fermes....

bon après midi
@+
 

blandinedau

XLDnaute Nouveau
Re : Ouvrir fichier Excel sur site intranet via vba

C'est ce que je fais justement (ce que j'explique dans mon dernier message) :
J'ai contourné le problème en demandant à l'utilisateur d'enregistrer le fichier sur son bureau sous un certain nom, la macro ouvrant par la suite de fichier puis le ferme et le supprime.

Malheureusement ça ne conviendrait pas à mes chefs : les membres de leurs équipes respectives préfèrent les choses (TRES) simples. Alors s'ils pouvaient juste avoir à cliquer sur le bouton qui lance le traitement... ça serait parfait ! Le nombre d'utilisateurs potentiels est assez grand, et leur expliquer qu'ils ont un certain temps imparti pour enregistrer le fichier sur le bureau n'est pas vraiment pratique...
 

Pierrot93

XLDnaute Barbatruc
Re : Ouvrir fichier Excel sur site intranet via vba

Re,

regade ceci, la fin d'une procédure que j'utilise sur un intranet, en espérant que cela puisse t'aider à avancer :

Code:
IE.document.all("btn_telecharger").Click
With Application
    .SendKeys "+{TAB}{ENTER}"
    .SendKeys "monfichier"
    .SendKeys "{ENTER}"
End With
Workbooks.OpenText ("monfichier")
 

blandinedau

XLDnaute Nouveau
Re : Ouvrir fichier Excel sur site intranet via vba

J'ai essayé ton code sans succès : avec "btn_telecharger", "Ouvrir", "Enregistrer" et même en testant le titre de la fameuse fenêtre "Téléchargement de fichier". Rien à faire.

Et même en mettant un AppActivate "Internet Explorer" juste avant, il considère que l'application à utiliser est "Microsoft Excel"...
 

Pierrot93

XLDnaute Barbatruc
Re : Ouvrir fichier Excel sur site intranet via vba

Re,

attention, "btn_telecharger" est le nom du bouton chez moi... pas forcement le même... et sans pouvoir tester directmenent avec ton site pas facile de t'aider plus.... A noter tout demême que l'appli IE doit être visible et active...
 

Discussions similaires

Réponses
1
Affichages
146

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 845
Messages
2 092 770
Membres
105 529
dernier inscrit
StarExcel