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 :

Va excel envoyer fichier sur page Web (input name="x" type="file")


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 44
    Par défaut Va excel envoyer fichier sur page Web (input name="x" type="file")
    Bonjour,

    sur un site, qye j'arrive à piloter saisie et déclenchement des scripts lorsqu'ils sont nécessaires (donc site pas "on window")

    Je dois importer un fichier à l'aide d'un bouton "parcourir"

    J'ai essayé, sans succès :

    -> ne fonctionne pas mais pas de message d'erreur

    -> erreur d'execution '438' : Propriété ou méthode non gérée par cet objet

    -> erreur d'execution '438' : Propriété ou méthode non gérée par cet objet

    -> erreur d'execution '438' : Propriété ou méthode non gérée par cet objet

    -> erreur d'execution '438' : Propriété ou méthode non gérée par cet objet

    Qqu'un aurait-il une idée ?

    Par avance merci

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    l'imput type file est justement bloquer pour ce genre de procedure
    1. tu ne peut donc pas entrer un nom par robot(en l'occurence "vba")dans l'imput
    2. et tu ne peux pas en retirer le chemin apres click
    3. tu a pour reponse un "fakepath"en lecture de l'imput apres click


    tu imagine bien qu'une telle demarche en js ne peut pas etre acceptable ca serait la porte ouverte a tout


    dans ta fonction JS du document essaie de te debrouiller avec "readfile" pour manipuller ton fichier

    ou utiliser une requete avec l'object
    exemple dans mon wysyiwyg perso

    ouverture d'un fichier est inscription du contenu dans un div (pour pliloter declancher le click par vba )
    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
    function ouvrirfichier() {
                choixfichier.click();
                var chemin = choixfichier.value;
                obj = new ActiveXObject("Microsoft.XMLHTTP");
                obj.open("GET", chemin, false);
                obj.send(null);
                if (obj.readyState == 4) {
                    var txt = obj.responseText.split("<cdd>")[1];
                    txt = txt.split("<PRE>")[0];
                    editeur.innerHTML = txt;
                }
                var elements = editeur.getElementsByTagName("*");
                for (var i = 0; i < elements.length; i++) {
                    if (elements[i].className === "divint" || elements[i].className === "image") {
                        elements[i].addEventListener("dragstart", dragstart, false);
                         if (elements[i].tagName==="IMG"){elements[i].addEventListener("mouseup", determineactive, false);}
                    }
                }
            }
    pour sauver soit tu utilisera un blob soit aussi la command saveAs que tu peux piloter par vba en declenchant l'evevenement click

    exemple pour sauver le document html que je viens de tapaer
    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
     
     function enregistrer() {
                 with(document) {
                    ir = createElement('iframe');
                    ir.id = 'ifr';
                    ir.location = 'about:blank';
                    ir.style.display = 'none';
                    body.appendChild(ir);
                    var doc = ir.contentWindow.document;
                    doc.write("<cdd>" + editeur.innerHTML + "<cdd>");
                    close();
                    doc.execCommand('SaveAs', true, "C:\\My Documents\\Saved Content.html");
                    close();
     
                    body.removeChild(ir);
                }
     
            }
    mais je ne garanti rien sachant que ton fichier est en reseau pour ma part mon editeur est en local
    en php tu a plus d'option mais ca reste assez compliqué a contourner

    conclusion ton soucis n'est pas VBA mais plutot Javascript ou autre tu n'est donc pas sur le bon forum

    a moins que tu decide de piloter toute la manoeuvre par vba ce qui implique que meme le inputfile sera plutot un dialog vba
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 44
    Par défaut
    Merci à nouveau pour ta reponse

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    de rien
    si j'en savais un peu plus sur tes intentions je pourrais mieux t'aider car pratiquement tout est posssible en VBA (commande et instruction) pour modifier une page web
    ce qui implique oui c'est vrai que les fonctions soit vba et pas JS rien ne t'empeche cela dit d'avoir les deux
    les commandes en JS pour une exploitation directe du document et les macro vba faisant la meme chose en vba pour quand tu utilise ta page web par vba
    rien n'empeche cela
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 44
    Par défaut
    En fait tous les jours, pour des pointages, je dois mettre à jour deux bases de données via portail Web.
    Dans un premier temps, je dois downloader depuis le 1°portail une liste de tâches qui nous ai attribuée.
    Ensuite ce fichier, je dois le remettre en forme puis uploader vers le deuxième portail (afin de déclarer les nouvelles taches).
    Je peux à ce moment là uploader à nouveau vers le deuxième portail les pointâges.
    Enfin je download un fichier réponse du deuxième portail vers le premier portail....

    Tout ce processus pourrait être automatisé en partie sauf que :
    Le premier portail est "on window"
    Pour le 2° je vais regarder côté script (comme tu m'a l'as suggéré). Je n'arrive pas pour l'instant à passer le premier upload. Je ne pense pas qu'il y ait un antirobot sur ce site car j'arrive à naviguer via vba. Ce que je n'arrive pas à faire c'est forcer le champs input name pour pouvoir ensuite utiliser le bouton importer.

    Je te fais screen shoot lundi.

    Encore merci

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour OK

    ne te meprends pas les protections "on window" sont varié et plus ou moins bien faite ,il y en a certaines que l'on peut tromper tout depend du script utilisé il y en a quelques uns

    mais pour un input file ca c'est sur est certains que tu peux pas et la cette protection elle est interne a JS et cela depuis toujours

    Javascript ne l'accorde tout simplement pas
    sachant qu'une page web s'execute coté client tu imagine bien que si on pouvait le piloter aussi facilement ca serait une catastrophe
    quand on est en local(le ficher html de la page sur DD du PC ) oui on peut
    si c'est pour telecharger un fichier puis le manipuler sur ule PC puis le réuploader sur le reseau il y a peut etre une chance
    mais il ne sagit plus simplement de pilotage VBA de la page web mais aussi du pilotage du blob de telechargement (le bandeau en bas de page (enregistrer/ annuler))
    a moins que tu connaisse le lien exact du fichier au quel cas on peut tenter une simple requete et reconstruire le fichier avec adobstream cette derniere solution serait la plus simple et instantané c'est comme ca que l'on telecharge une image ou un fichier sur le web

    un petit exemple simplifié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function telecharge_fichier(url As String, CHEMIN) As String
        Dim CHEMIN As String
        Dim ReQ As Object, oStream As Object
        On Error Resume Next    'On ne gère pas les erreurs
        Set ReQ = CreateObject("Microsoft.XMLHTTP")
        ReQ.Open "get", url, False: ReQ.send
        Set oStream = CreateObject("ADODB.Stream")
        oStream.Open: oStream.Type = 1: oStream.Write ReQ.responsebody: oStream.SaveToFile CHEMIN: oStream.Close
        telecharge_fichier= CHEMIN
        Set oStream = Nothing: Set ReQ = Nothing
    End Function
    pour tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sub test
    monfichier =telecharge_fichier ("https://....","C:\mondossier.\monfichier.extention") 'extention c'est l extention du fichier (.txt,.xls,.jpeg,.etc....)
    if dir(monfichier)<>"" then
    'si il est la c'est OK on l'utilise 
    end if 
    end sub
    il y a aussi l'api uldownload aussi
    mais sans que tu soit prevcis je ne peux t'en dire plus
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. [XL-2010] Vba copie d'une date sur page web vers excel
    Par philppe27 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/08/2013, 23h31
  2. Importer fichier texte avec mise en forme sur page Web
    Par Ditrius dans le forum Langage
    Réponses: 6
    Dernier message: 18/10/2010, 16h34
  3. Supprimer des fichiers listés sur page web
    Par Invité dans le forum Langage
    Réponses: 3
    Dernier message: 18/04/2007, 12h04
  4. Lecteur Multimedia sur page Web
    Par beegeesman dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 17/01/2006, 00h15
  5. ShellExecute - Access Denied sur page web
    Par Neilos dans le forum C++Builder
    Réponses: 7
    Dernier message: 03/10/2005, 12h04

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