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 :

Insérer du java script en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 46
    Par défaut Insérer du java script en VBA
    Bonjour à tous,

    Je cherche depuis un certain temps à réaliser une tâche mais ne trouve pas de réponse. Je vous remercie par avance si vous pouvez m'aider.
    Je souhaite sur Excel rentrer une information dans une cellule (un code à 8 chiffres) et grâce à un code VBA remplir deux cellules à côté. (Exemple je tape 56205630 et j'obtiens à côté : ce même numéro, et la catégorie du produit (ex: savon) et son odeur (ex: lavande).)
    Cependant la correspondance des numéros avec les informations que je souhaite rajouter ne se trouvent que sur un site internet de mon entreprise.
    Donc je voulais faire un import de la page internet sur excel et choisir les informations que je souhaitais. Cependant cela ne marche pas car on me dit que le lien est top long.
    Cependant un javascript permet d'exporter la page au format excel (sur le site, c'est cliquer sur un bouton). Cela me convient mais comment intégrer cela dans mon code VBA?

    En espérant que vous pourrez m'aider. Ou n'hésitez pas si vous avez d'autres idées pour me permettre de faire ce que je veux.

    Rose

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    le plus pertinent serait dans ce cas de cliquer sur le bouton a partir du VBA :
    une lecture principale
    http://qwazerty.developpez.com/tutor...-et-vba-excel/
    et le clic bouton
    http://qwazerty.developpez.com/tutor...a-excel/#LIV-D
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 46
    Par défaut
    Citation Envoyé par Jean-Philippe André Voir le message
    Salut,

    le plus pertinent serait dans ce cas de cliquer sur le bouton a partir du VBA :
    une lecture principale
    http://qwazerty.developpez.com/tutor...-et-vba-excel/
    et le clic bouton
    http://qwazerty.developpez.com/tutor...a-excel/#LIV-D

    Merci pour votre réponse, mais cela ne me convient pas bien je pense car je peux avoir 200 lignes, donc le clic sur bouton n'est pas adapté.

  4. #4
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 226
    Par défaut
    Salut,

    J'avais déjà utilisé ce code pour aider des personnes dans le même cas que toi. A adapter en fonction de ton besoin. Tu dois pas utiliser de javascript, uniquement du vba.

    Le javascript peut servir pour localiser ton tableau de données à récupérer.

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Sub extraction()
     
    On Error GoTo sortie:
    'Dim url As String: url = "adresse url de ton site"
    Dim element As Object, souselement As Object
     
    Dim IEDoc As HTMLDocument
    Dim IE As New InternetExplorer
     
    IE.navigate url
    IE.Visible = True
     
    'patienter pour lancer l'extraction
    Application.Wait Time + TimeSerial(0, 0, 5)
     
    Do While IE.readyState <> READYSTATE_COMPLETE
        DoEvents
    Loop
     
    Set IEDoc = IE.document
    'a voir ou se trouve le tableau
    'Il suffit d'aller sur le site, de faire ctrl+maj+i (sous chrome) pour ouvrir la fenetre de développement.
    'dans l 'onglet "Elements" tu as le code source,
    'dans l 'onglet "console" tu as la console (là où tu pourras écrire du code javascript)
     
    'et tu tapes : document.getElementsByTagName("tbody")
     
    'Pour trouver la ligne javascript qui fonctionnera, c'est à taton.
    'Rq: Il faut faire attention aux commandes utilisées:
    'getElements.... -> renverra une collection d'éléments
    'getElement... -> renverra un seul élément (dans mon exemple je prends le premier elements, l'index demarre  0)
     
    Set element = IEDoc.getElementsByTagName("tbody").Item(0)
     
    Dim numLigne As Integer, numColonne As Integer
     
    For numLigne = 0 To element.Children.Length - 1
        Debug.Print numLigne
        Set souselement = element.Children.Item(numLigne)
        For numColonne = 0 To souselement.Children.Length - 1
            Cells(numLigne + 1, numColonne + 1).Value = souselement.Children.Item(numColonne).innerText
        Next numColonne
    Next numLigne
     
     
    'libération de la mémoire
    Set IEDoc = Nothing
    IE.Quit
    Set IE = Nothing
    MsgBox "Import web terminé sans erreur"
    Exit Sub
     
    sortie:
    Set IEDoc = Nothing
    IE.Quit
    Set IE = Nothing
    MsgBox "Erreur. Vérifiez votre connexion à Internet"
    End Sub

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 46
    Par défaut
    Citation Envoyé par nonesofar Voir le message
    Salut,

    J'avais déjà utilisé ce code pour aider des personnes dans le même cas que toi. A adapter en fonction de ton besoin. Tu dois pas utiliser de javascript, uniquement du vba.

    Le javascript peut servir pour localiser ton tableau de données à récupérer.

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Sub extraction()
     
    On Error GoTo sortie:
    'Dim url As String: url = "adresse url de ton site"
    Dim element As Object, souselement As Object
     
    Dim IEDoc As HTMLDocument
    Dim IE As New InternetExplorer
     
    IE.navigate url
    IE.Visible = True
     
    'patienter pour lancer l'extraction
    Application.Wait Time + TimeSerial(0, 0, 5)
     
    Do While IE.readyState <> READYSTATE_COMPLETE
        DoEvents
    Loop
     
    Set IEDoc = IE.document
    'a voir ou se trouve le tableau
    'Il suffit d'aller sur le site, de faire ctrl+maj+i (sous chrome) pour ouvrir la fenetre de développement.
    'dans l 'onglet "Elements" tu as le code source,
    'dans l 'onglet "console" tu as la console (là où tu pourras écrire du code javascript)
     
    'et tu tapes : document.getElementsByTagName("tbody")
     
    'Pour trouver la ligne javascript qui fonctionnera, c'est à taton.
    'Rq: Il faut faire attention aux commandes utilisées:
    'getElements.... -> renverra une collection d'éléments
    'getElement... -> renverra un seul élément (dans mon exemple je prends le premier elements, l'index demarre  0)
     
    Set element = IEDoc.getElementsByTagName("tbody").Item(0)
     
    Dim numLigne As Integer, numColonne As Integer
     
    For numLigne = 0 To element.Children.Length - 1
        Debug.Print numLigne
        Set souselement = element.Children.Item(numLigne)
        For numColonne = 0 To souselement.Children.Length - 1
            Cells(numLigne + 1, numColonne + 1).Value = souselement.Children.Item(numColonne).innerText
        Next numColonne
    Next numLigne
     
     
    'libération de la mémoire
    Set IEDoc = Nothing
    IE.Quit
    Set IE = Nothing
    MsgBox "Import web terminé sans erreur"
    Exit Sub
     
    sortie:
    Set IEDoc = Nothing
    IE.Quit
    Set IE = Nothing
    MsgBox "Erreur. Vérifiez votre connexion à Internet"
    End Sub
    Merci pour votre réponse
    Cependant je ne comprends pas bien comment importer exactement la tableau que je veux sur mon excel.
    Merci de m'aider

  6. #6
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 226
    Par défaut
    Hello,

    Pas de problèmes, juste qu'il me faut le lien du site web. Je sais pas si je peux y accéder.

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 46
    Par défaut
    je ne sais pas si vous pouvez y accéder.
    Ensuite essayer avec le code : 82472496 et en cliquant sur tabular view; J'aimerai extraire le tableau.

    Merci

  8. #8
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 226
    Par défaut
    Je n'y arrive pas, c'est un site interne à ta boîte.

    Si tu peux faire les manipulations suivantes.

    'Il suffit d'aller sur le site, de faire ctrl+maj+i (sous chrome) pour ouvrir la fenetre de développement.
    'dans l 'onglet "Elements" tu as le code source,
    'dans l 'onglet "console" tu as la console (là où tu pourras écrire du code javascript)

    tape document.getElementsByTagName("tbody")

    regarde sur la capture écran ce que cela donne?

    Tu dois avoir un numero avec ton tableau.

    Nom : capture jscript.png
Affichages : 1986
Taille : 52,9 Ko

Discussions similaires

  1. IE et restriction des Java Script
    Par /dev/null dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/04/2006, 14h30
  2. [Info] java script dans eclipse
    Par bf83 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 29/03/2006, 14h19
  3. [Java Script] Lien avec infobulle...
    Par greg1386 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/02/2006, 21h15
  4. Java script + JSP : Passage de données
    Par Rastapwalu dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 12/12/2005, 15h58
  5. info bulles en java script
    Par romjel dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 24/08/2005, 01h47

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