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 :

vba IE interaction : modifier texte outerhtml [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut vba IE interaction : modifier texte outerhtml
    Bonsoir à tous,

    Petit question :

    Connaîtriez-vous une fonction , ou autre, qui me permettrait de modifier un "mot" présent sur une page HTML via vba?

    Le soucis :
    Dans la tâche que j essaie d automatiser, je dois , modifier un template ( mail) présent sur la page du site et clic sur envois.

    Je parviens à sélectionner la langue, le template,envoyer le mail.

    Cependant je dois modifier une zone de texte dans ce template en HTML.

    J'y parviens si je prends le outerhtml dans une variable ( replace (*,*,*,1)) mais pas sur la page proprement dite

    Si je remplace le outerhtml présent par le modifier, cela modifie l entièreté de la page et pas juste l' encart template mail.

    D avance merci pour votre précieuse aide.

  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
    sans code source difficile de t'aider
    cependant le dom est capricieux en VB la librairie ie n'ayant pas trop evoluer par rapport au javascript

    donc en vb(A/s) on ne peut remplacer un element.outerHTMLpar un autre outerHTML tandis qu'en JS oui

    il te faut recupérer l'entiereté de ce que tu veux transférer dans ton mail dans une variable string et faire le replace de ton element .outerHTML dans cette variable
    cela dit vu ce que tu veux replacer j'ai peur que tu confonde le outerHTML ,innerHTML,innerText,outerText

    du texte

    outerHTML=<balise style="blablabla"> <strong>du</strong> <font color=red>texte</font></balise>
    innerHTML= <strong>du</strong> <font color=red>texte</font>
    innerText=du texte
    outerText= style="blablabla"
    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 Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut re
    Merci Patrick
    toujours aussi proactif.

    Je vais vérifier au niveau des différentes variantes, innerText,outerText,inner&outer HTML

    Je reviens vers vous après test des différentes variantes.

    Pour le replace dans un string pas de souci j y suis arrivé, mais c est la réinjection sur la page web qui me pose soucis

    Au lieu de garder sa forme mais avec le contenu modifier , je me retrouve avec une page avec le outerhtml modifier mais en format "text" toutes balises apparente.

    J aurais donc espère qu' une fonction de remplacement de texte en direct sur la page web existerait. À l'instar d un find and replace sur excel



    Bat,

  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
    la réinjection:
    exemple
    dans le document

    ToTo
    mange des bannanes

    <div id="toto"><font color=red><strong>ToTo</strong> </font> <em>mange des </em> <font color="blue>bannanes</font></div>

    methode string externe(VBA)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    with ie.document
    set montoto=.getelementById("toto")
    texte=montoto.innerhtml
    texte=replace(texte,"bannanes","pommes")
    montoto.innerhtml=texte
    end with
    methode DOM 1 a l'ancienne vba commence a buguer quand on manipule en DOM 2/3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    with ie.document 
    set toto=.getElementById("toto")
    set myfont=toto.getElementsByTagName("FONT") (1)
    myfont.innerHTML="Pommes"
    end With

    edit:
    je me suis amballé on touche pas le parentelement dans cet exemple et excuse moi pour les double " == " j'ai du mal a revenir en VB je me crois toujours en JS
    mille excuse



    une petite derniere
    comme vba estr capricieux en DOM
    il y a une solution radicale pas jolie certe mais efficace si tu n'a qu'une seule occurence de ton replace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    with ie.document
    for each elem in .all
    if elem.innerHTML="bannanes" then elem.innerHTML="pommes"
    next
    end with
    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 Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut re
    Re merci ;-)

    Au pire des cas ,
    Il me serait aussi possible via les "sale" sendkey de :

    Ouvrir l outil développeur de Ie ( f12 / ctrl+maj+j) en mode console

    Coller la ligne de code JavaScript :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    document.body.innerHTML = document.body.innerHTML.replace(/ABC/g, "XYZ")

    Fermer outil développer

    Retour ie , clck send mail

  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
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    document.body.innerHTML = document.body.innerHTML.replace(/ABC/gi, "XYZ")
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Recorset VBA modifier texte en date
    Par creal dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/05/2014, 09h49
  2. [VBA-E]séparateur de texte dans une cellule
    Par desdenova dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/04/2006, 16h44
  3. [VBA-A]Insérer du texte depuis Access
    Par soad029 dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/03/2006, 15h32
  4. [VBA-Excel,VB6,Fichier texte]enregistrer un classeur excel..
    Par Tarul dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/01/2005, 13h09
  5. [VBA-E] recuperer le texte d un commentaire de cellule excel
    Par Verbal-Quint dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/07/2004, 10h27

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