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

Macros et VBA Excel Discussion :

Ouvrir directement un doc XL depuis un intranet (sans passer par exporter)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    PMO
    Inscrit en
    Août 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : PMO
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 66
    Par défaut Ouvrir directement un doc XL depuis un intranet (sans passer par exporter)
    Bonjour,
    Pour remplir automatiquement un tableau XL, J'ai besoin d'ouvrir des documents XL directement depuis l'intranet de mon entreprise (via vba XL) afin de faire des des copier coller de colonnes entières
    Grâce à la discussion " Automatiser l'ouverture d'un fichier compatible Excel depuis le Web (téléchargement) " de ce forum je peux obtenir le fenêtre windows Ouvrir-Enregistrer-Enregistrer sous.
    Ce qui m’intéresse c'est d'ouvrir le doc XL, pas passer par l'enregistrement (accès réseau trop longs)
    Mon problème est que tant que ma macro est en cours d'exécution, même si je mets un wait time, l'ouverture du document XL ne peut pas se faire. Concrètement tant que le processus VBA est en fonctionnement, l'ouverture d'un nouveau doc est impossible. En dehors d'enregistrer il n'y a vraiment pas de possibilité ??
    Merci

    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
    Sub SID_Dépenses(NumProj, LignErr, feuilleDIS, label, URLdép, IEdép, HTMLdoc, FeuilleSAP_Inter, BaseSAP, FeuilleDepRé, os(), NumOS(), NBOS)
     
        Dim SaisiNumProj As HTMLInputElement
        Dim Generic As HTMLGenericElement
        Dim Image As HTMLGenericElement
        Application.ScreenUpdating = True
        Application.StatusBar = "Ouverture et téléchargement depuis l'intranet des dépenses du projet " & NumProj & " en cours"
        NbXL = Workbooks.Count
        Application.ScreenUpdating = False
        Set feuilleDIS = ThisWorkbook.ActiveSheet
        feuilleDIS.Activate
        With IEdép
            While .Busy Or .readyState <> READYSTATE_COMPLETE: DoEvents: Wend
            Set HTMLdoc = .document
        End With
     
        Set SaisiNumProj = HTMLdoc.all("_paramsProjet")
        SaisiNumProj.Value = NumProj ' on entre le numéro de projet dans le champs dont le nom est _paramsProjet dans le codage HTML
    'click sur le bouton valider à vide
        Set Generic = HTMLdoc.all("xdo:parameters")
        Set GenericStop = Generic.getElementsByClassName("button")
        Set anch = HTMLdoc.all("xdo:viewFormatLink")
        Set Image3 = anch.Children
        Set image4 = Image3(2)
        image4.Click 'affiche le menu déroulant
     
        Set HTMLdoc = IEdép.document
        Set menu3 = IEdép.document.getElementsByTagName("div")
        Set menu5 = menu3(76)
        Set Menu6 = menu5.all(0)
     
    ' click sur image XL
        With Menu6.all(31): .Focus: .Click: End With
        Application.Wait Now + 0.00008
        CreateObject("WScript.Shell").SendKeys "{Tab 2}~"
     
    End Sub
    Images attachées Images attachées  

  2. #2
    Expert éminent
    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
    Par défaut
    Bonjour,

    de toute manière quelle que soit la méthode utilisée les temps d'accès réseau sont exactement les mêmes !
    Si c'est long manuellement via Internet Explorer, ce sera presque aussi long via un code VBA …

    Cette contribution n'ayant aucun rapport avec une éventuelle accélération de l'accès aux données en réseau,
    mais juste l'automatisation de l'ouverture d'un fichier depuis le Web.

    Le clic sur le bouton Ouvrir enregistrant déjà localement le classeur dans le dossier système affecté aux fichiers d'IE,
    le temps d'exécution restant donc aussi long !

    Et concernant ses deux premières étapes, le code principal doit se terminer dès la confirmation du téléchargement,
    le code secondaire étant activé via un évènement au niveau du classeur …

    La troisième étape utilise une requête et dans le cas d'un fichier Excel ce sera en mode binaire
    afin de sauvegarder les données dans un fichier local avec la bonne extension Excel avant de pouvoir l'ouvrir
    et là encore, si les temps d'accès réseau sont longs, ne pas espérer un résultat instantané …

    Et j'en profite pour rappeler si l'URL pointe directement sur un fichier compatible Excel la méthode la plus simple
    reste encore le B-A-BA d'Excel, à savoir l'ouverture normale comme pour un fichier local en une unique ligne de code !

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    Membre confirmé
    Homme Profil pro
    PMO
    Inscrit en
    Août 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : PMO
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 66
    Par défaut
    Ok, je vais donc bien relire comment tu procèdes à l'étape 2 pour voir où je peux placer mon code secondaire.
    Car en effet mon code principal se trouve dans un classeur XL (regroupant l'ensemble des projets, une ligne= un projet) qui va donc chercher projet par projet les données depuis l'intranet, puis j'enregistre les détails (d'où les copier-coller) sur un second tableau (1 par projet) et le tableau téléchargé est "quitté" sans enregistrer.

    Ta méthode m’intéresse pas tant par le coté gain de temps (je suis d'accord avec toi sur la durée de téléchargement) mais parce mon tableau principal comporte en fonctions des mois entre 70 et 100 projets, pour chacun de ces projet je dois récupérer des infos sur 2 bases intranet différentes (donc téléchargement de 2 feuilles XL différentes par projets) chaque téléchargement dure en moyenne 1mn, 1mn30 mais en réalité cela varie de 30 secondes à plus de 5 minutes. Donc jusqu'à présent je suis obligé de rester devant la machine pendant plusieurs heures, je cherche donc surtout à limiter les actions manuelles.
    C'est pour ça que s'il le faut, je peux automatiser via enregistrer puis ouvrir le doc XL dans la zone de téléchargement du PC mais si je peux l'ouvrir directement depuis le module vba qui télécharge je gagne en codage !

  4. #4
    Expert éminent
    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
    Par défaut

    Je ne comprends pas particulièrement la dernière phrase car pour justement pouvoir accéder à des données Web
    il faut forcément ajouter du code lorsque l'ouverture directe comme pour un classeur local n'est pas possible …

    Le code secondaire n'est pas dans la procédure appelée pilotant Internet Explorer et simulant des touches
    mais dans un évènement du classeur.

    Beaucoup m'ont demandé de revenir en arrière avec la version semi-automatique à la place du tout automatique
    à cause des fluctuations des connexions réseau, les pauses n'étant pas assez fiables !

    L'idéal étant la troisième voie si une requête est utilisée dans la page source
    et facilement vérifiable via l'outil d'inspection intégrée au navigateur …

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/10/2011, 13h24
  2. Réponses: 3
    Dernier message: 06/06/2008, 16h54
  3. Réponses: 16
    Dernier message: 06/06/2007, 12h42
  4. Réponses: 5
    Dernier message: 09/05/2007, 10h00
  5. CR10 : ouvrir rapport sans passer par concepteur
    Par manunam80 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 23/03/2005, 15h46

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