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 :

Problème insérer informations dans internet [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2019
    Messages : 12
    Par défaut Problème insérer informations dans internet
    Bonjour,

    J'ai sur un fichier excel des numéros de suivi colis UPS. Mon but est qu'automatiquement en appuyant sur un bouton sur ma feuil excel la page internet s'ouvre sur la page de tracking UPS, rentre le numéro dans la TextArea prévue à cet effet, clique sur le bouton pour obtenir les informations du tracking et récupère ces dernières pou me les renvoyer sur ma feuil excel. N'ayant jamais manipulé ce genre d'outil j'ai commencé à me renseigner.

    Pour le moment j'arrive à charger la page UPS sur lequel il faut rentrer le numéro de tracking.
    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
    If Not Application.Intersect(Target, Range("B18")) Is Nothing Then 'UPS
     
        'Déclaration des variables
        Dim shA5 As Worksheet
        Set shA5 = Sheets("Feuil1")
        Dim IE As New InternetExplorer
        Dim IEDoc As HTMLDocument
     
       'Chargement d'une page Web Google
       IE.navigate "https://www.ups.com/track?loc=fr_FR&requester=ST/"
     
       'Affichage de la fenêtre IE
       IE.Visible = True
     
       'On attend le chargement complet de la page
       WaitIE IE
     
        'On pointe le membre Document et on ajoute le tracking number dans la textArea
        Set IEDoc = IE.document
     
        MsgBox (IEDoc.getElementById("stApp_trackingNumber").Value)
     
        IEDoc.getElementById("stApp_trackingNumber").Value = shA5.Cells(20, 2)
     
        MsgBox (IEDoc.getElementById("stApp_trackingNumber").Value)
     
        IEDoc.getElementById("stApp_btnTrack").Click
     
        'On attend la fin de la recherche
        WaitIE IE
     
       'On libère les variables
       Set IE = Nothing
       Set IEDoc = Nothing
     
    End If
    Sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox (IEDoc.getElementById("stApp_trackingNumber").Value)
    , j'ai l'erreur suivante : Variable objet ou variable de bloc with non définie

    J'imagine qu'il n'arrive pas à trouver la zone de TextArea.

    Voici le code HTML :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <textarea _ngcontent-c1="" aria-describedby="trackingNumEntry_error" aria-required="true" class="ups-textArea ups-textbox_textarea ups-textarea_expanded ng-untouched ng-pristine ng-invalid" formcontrolname="trackingNumber" id="stApp_trackingNumber" required="" rows="2"></textarea>

    Merci d'avance pour votre aide.

    Cordialement,

    Martin

  2. #2
    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 : 37
    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
    Bonjour,

    Place un point d'arrêt sur ta ligne Set IEdoc, attends un peu et poursuit le code (F8), ce type d'erreur arrive lorsque la page n'est complètement chargée, ou élément dans un frame, ou elem non existant,..

    Je suppose que ta procédure WaitIE est celle issue du tutoriel de Qwazerty ?

    Il me semble avoir lu, il y a quelques semaines, sur ce forum un post traitant du même sujet, un find dans le moteur de recherche pourrait certainement te permettre de le retrouver.

    Bat,
    MFoxy

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2019
    Messages : 12
    Par défaut
    Alors en effet cela fonctionne le premier MsgBox me montre bien que la TextArea est vide puis le deuxième MsgBox me montre mon bon numéro de suivi.

    Comment faire du coup pour éviter l'erreur ?

  4. #4
    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 : 37
    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,

    Je me doutais bien qu'il s'agissait d'un souci de chargement.

    Tu pourrait boucler jusqu'à ce que l'input box de la page soit différent de rien, ou sur un autre élément spécifique de la page Web (texte ou autre) .

    Je suis sur mon smartphone, donc ne sais pas te fournir un code test, de mémoire ça devrait ressembler à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    'pour attendre qu' un Élément Id soit dispo
    On Error Resume Next
    Do While IE. Document.GetElementById("TON_ID") Is Nothing
        DoEvents
    Loop
    On Error Goto 0
     
    '.....la suite du code

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2019
    Messages : 12
    Par défaut
    Merci mfoxy pour ta réponse.

    J'ai finalement réussi à trouver la solution un peu plus tard dans la nuit.

    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
    If Not Application.Intersect(Target, Range("B18")) Is Nothing Then 'UPS
     
        'Déclaration des variables
        Dim shA5 As Worksheet
        Set shA5 = Sheets("Feuil1")
        Dim IE As New InternetExplorer
        Dim IEDoc As HTMLDocument
     
        'Chargement d'une page Web Google
        IE.navigate "https://www.ups.com/track?loc=fr_FR&requester=ST/"
     
        'Affichage de la fenêtre IE
        IE.Visible = True
     
        'On attend le chargement complet de la page
        WaitIE IE
     
        'On définit nos deux valeurs
        Set IEDoc = IE.document
        Set valeur = IEDoc.getElementById("stApp_trackingNumber")
     
        'Tant qu la page est pas chargée on continue
        Do Until Not valeur Is Nothing
            Set valeur = IEDoc.getElementById("stApp_trackingNumber")
        Loop
     
        'On met le tracking number dans la TextArea
        valeur.innerText = shA5.Cells(20, 2)
     
        'On clique sur le bouton pour continuer
        IEDoc.getElementById("stApp_btnTrack").Click
     
        'On attend la fin de la recherche
        WaitIE IE
     
        'On libère les variables
        Set IE = Nothing
        Set IEDoc = Nothing
     
    End If
    J'avais un autre problème que j'ai réussi à résoudre aussi c'est qu'une fois la TextArea remplie elle ne s'était pas actualisée donc en cliquant sur le bouton UPS la considérait comme vide. Pour pallier à ce problème j'ai utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valeur.innerText = shA5.Cells(20, 2)
    plutôt que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valeur.value= shA5.Cells(20, 2)
    Merci pour ton aide !

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

Discussions similaires

  1. Insérer informations dans un input
    Par ric009 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/06/2013, 20h49
  2. Réponses: 10
    Dernier message: 10/11/2011, 01h46
  3. Problème de redirection dans Internet Explorer seule
    Par le_misterioso dans le forum ASP.NET
    Réponses: 5
    Dernier message: 01/11/2011, 08h31
  4. Problème Enregistré informations dans fichier .
    Par Xtremmax dans le forum VB.NET
    Réponses: 9
    Dernier message: 04/04/2011, 16h31
  5. Problème affichage form avec Internet Explorer dans un menu
    Par dupard2006 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 28/03/2006, 20h26

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