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 :

Récupérer des informations sur le site web [XL-2019]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut Récupérer des informations sur le site web
    Bonjour à tous,

    Je fais appel à vos connaissance pour un petit fichier qui me simplifiera beaucoup la vie :

    Autoentrepreneur, je dois réaliser des devis pour mes clients. Pour établir ces devis, je dois chiffrer le prix des matériaux que je vais utiliser. Pour ce faire, j'utilise les catalogues de mes fournisseurs (par exemple Gédimat). Le problème du papier, c'est que ça ne se met pas à jour ... Et compte tenu du contexte actuel, comme vous le savez, les prix fluctuent énormément.

    Je dois donc, pour chaque référence, aller rechercher sur le site de mon fournisseur (gedimat.fr par exemple) si le prix à beaucoup évolué ou pas. Vous imaginez que c'est laborieux ...

    J'aimerai donc, que sous Excel, je puisse saisir la référence d'un article et qu'il soit afficher automatiquement la désignation de celui-ci et son prix.

    J'ai recherché un moyen en passant par données/données externes/à partir du web et "importer" une page web dans une nouvelle feuille de mon fichier excel, mais je n'arrive pas à ce que la page importée ait une adresse dynamique (correspondant à la référence que j'aurai saisie).

    J'imagine qu'il me faudra passer par VBA, mais se sont bien là mes limites sous excel ...

    Quelqu'un pourrait m'aider ?

    Je vous joins un petit fichier qui vous aidera certainement à comprendre.

    Merci beaucoup par avance pour votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 951
    Points : 9 280
    Points
    9 280
    Par défaut
    Hello,
    As-tu beaucoup de fournisseurs ? Le souci c'est que les sites web ne sont bâtis sur le même modèle et donc que pour aller chercher des informations cela risque fort d'être différent suivant le fournisseur. Et quand dans les pages d'infos il n'y a pas de tableau (comme celles de Gedimat) cela est aussi plus compliqué.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut
    Bonsoir,
    Merci de t'intéresser à mon problème.
    J'ai principalement 2 fournisseurs : Gédimat et Point P. Sachant que Gédimat représente 90% de mes commandes.
    Si j'ai un code qui fonctionne pour Gédimat, je pense que j'arriverai à l'adapter à Point P. Au pire, ce ne sera pas trop grave.

  4. #4
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 951
    Points : 9 280
    Points
    9 280
    Par défaut
    Hello,
    dans un premier temps tu peux tester ce code pour voir si il te retourne le bon prix pour la référence demandée :
    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
    Sub RecupGedimat(Reference As String)
    Dim HTMLDoc As Object
    Dim eleCol As Object
    Set HTMLDoc = CreateObject("htmlfile")
    Url = "https://www.gedimat.fr/produitListe.php?searchString=" & Reference
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", Url, False
        .send
          If .readyState = 4 Then
            If .Status <> 200 Then
               MsgBox "Erreur HTTP : " & .Status
            Else
               HTMLDoc.body.innerHTML = .responseText
               Set eleCol = HTMLDoc.querySelector(".prixEuro")
               Debug.Print "Prix ref " & Reference & " : " & eleCol.innerText
               Set HTMLDoc = Nothing
               Set eleCol = Nothing          
            End If
          Else
               MsgBox "Erreur Etat : " & .readyState
          End If
    End With
    End Sub
     
     
    Sub TestRecupFournisseur()
      RecupGedimat "26955315"
      RecupGedimat "27546048"
      RecupGedimat "21244681"
    End Sub
    Résultat :
    Prix ref 26955315 : 54,90 € TTC
    Prix ref 27546048 : 2,80 € TTC
    Prix ref 21244681 : 14,87 € TTC
    A vérifier que c'est la bonne information qui est prise en compte.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  5. #5
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut
    Bonsoir,
    Merci beaucoup pour ton aide.
    Les prix que tu indiques sont bien ceux que je trouve également quand je recherche ces références.
    Cependant, j'ai fait copier/coller ton code dans Excel et j'ai voulu lancer le Sub TestRecupFournisseur mais rien ne se passe ... J'ai du loupé quelque chose.

  6. #6
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 951
    Points : 9 280
    Points
    9 280
    Par défaut
    Hello,
    Citation Envoyé par djedje-08 Voir le message
    Cependant, j'ai fait copier/coller ton code dans Excel et j'ai voulu lancer le Sub TestRecupFournisseur mais rien ne se passe ... J'ai du loupé quelque chose.
    Les résultats sont affichés avec les Debug.Print dans la fenêtre Exécution de l'éditeur VBA. Normalement il devrait y avoir une fenêtre affichée si cela se passe mal (erreur de connexion).

    Ami calmant,J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  7. #7
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2022
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2022
    Messages : 141
    Points : 219
    Points
    219
    Par défaut
    Voici ton ficher Excel adapté pour Gedimat (donc 90% de ton volume)
    Bien lire les remarques pour que ça fonctionne
    Je vais voir ce que l'on peut faire pour le 2è fournisseur.

    Djedje_20220516.xlsm

  8. #8
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 951
    Points : 9 280
    Points
    9 280
    Par défaut
    Hello,
    il y a plusieurs soucis avec le site PointP :
    1 - Il y a une protection contre les robots qui posent des questions quand le site détecte leurs présences ce qui semble le cas en utilisant du code VBA.
    2 - La page source du produit recherché ne semble pas contenir les informations. Il faut que les scripts javascript qui sont dans cette page source soit exécutés donc lus par un navigateur pour retrouver les informations.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  9. #9
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut
    Bonjour à vous deux et merci beaucoup pour votre aide.
    Ce n'est pas grave pour Point P.
    Rien qu'avec Gedimat c'est déjà une très bonne chose !

    J'ai cependant un petit problème avec le fichier proposé par Begla16 :
    J'ai bien activé " MicroSoft Win Http Services 5.1" comme indiqué, mais lorsque je veux lancer la macro "crtl M" j'ai un message d'erreur qui apparait.
    Invraisemblable il semblerait qu'il y ait une erreur dans la conversion de décimale à virgule et à point.
    Comme je ne veux pas faire n'importe quoi en triturant le code, je préfère m'en remettre à vos conseils avant de faire une bêtise.
    Je vous joins quelques capture d'écran.

    Je pense qu'il n'y a pas grand-chose à modifier.

    Merci d'avance pour vos réponses.

    Bonne journée et bon week-end
    Images attachées Images attachées    

  10. #10
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2022
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2022
    Messages : 141
    Points : 219
    Points
    219
    Par défaut
    Vous pouvez mettre la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c.Offset(0, 4) = CalculMontant(prix) * c.Offset(0, -1)
    en commentaire, en la précédent d'une apostrophe
    comme ceci: 'c.Offset(0, 4) = CalculMontant(prix) * c.Offset(0, -1); c'est aux environs de la ligne 50.
    Apparemment, Windows utilise la virgule comme point décimal sur votre PC.
    De toute façon, il ne s'agit que du calcul du montant total (prix x quantité) que vous pouvez ajouter manuellement.

    Autre possibilité:
    Remplacer la ligne 50 par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c.Offset(0, 4) = CDbl(prix) * c.Offset(0, -1)  ' à essayer

  11. #11
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut
    Super ! ça fonctionne !
    Merci beaucoup !

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

Discussions similaires

  1. [Débuter] Récupérer des données sur un site Web via une requête HTTP
    Par sauvezmoi dans le forum Réseau
    Réponses: 1
    Dernier message: 29/04/2015, 16h03
  2. [Débutant] Récupérer des informations sur une page web
    Par Jules24 dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 24/04/2012, 10h55
  3. automate pour récupérer des données sur un site web
    Par castor75 dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2008, 19h59
  4. Récupérer des informations sur un site
    Par Invité dans le forum Langage
    Réponses: 8
    Dernier message: 11/02/2008, 00h06
  5. Récupérer des informations sur un site web
    Par JnewB dans le forum Langage
    Réponses: 11
    Dernier message: 08/04/2007, 19h44

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