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 :

Probleme vba excel [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 66
    Par défaut Probleme vba excel
    bonjour a tous et bonne année

    voila je vous est joint un fichier car je n'ais que la première et dernière courses alors que le tableau m'indique 9 courses

    je ne trouve pas l'erreur

    et en plus pourriez-vous me dire comment je pourrais faire pour avoir la 2eime réunions je vous met l'adresse du site "http://www.turf-fr.com/"
    excuser moi j'ais oublié le principale dans la feuille accueil lorsque je sélectionne "demain" j'ais les courses du jour et pas celle du lendemain
    il faut que je change idcourse manuellement dans mon code vba pourriez-vous me dire comment gérer ces numéros de courses automatiquement car celui-ci change tous les jours

    cordialement kiss6

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 113
    Par défaut
    Salut

    il faut que je change idcourse manuellement dans mon code vba pourriez-vous me dire comment gérer ces numéros de courses automatiquement car celui-ci change tous les jours
    Comment prends tu connaissance de ce numéro ?

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 66
    Par défaut probleme vba excel
    bonjour Qwazerty

    et merci de te pencher sur mon cas

    le numeror ce trouve dans url du site "http://www.turf-fr.com/partants-pmu/18000_samedi-10-janvier-2015-vincennes.html"

    je vous l'ais mis en rouge et celui-ci change tous les jours

    si vous mettez ex: 17999 vous aurez les courses de vendredi

    si vous mettez ex: 18002 vous aurez les courses de dimanche et ainsi de suite

    je reste a votre disposition pour tous autre renseignement

    cordialement kiss6

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 113
    Par défaut
    Salut

    Oui d'accord, dans le code j'ai bien vu la concaténation avec le numéro de course, ce que je veux dire c'est où est-ce que tu le prends? Dans le sens ce numéro représente un numéro de course, au moment où tu le modifies manuellement tu as bien pris ce numéro autre part que dans l'adresse ?
    Si non, on va tourner en rond. (Construire une adresse en tenant compte d'un numéro lui-même contenu dans cette même adresse , ça fait un peu pense aux Shadok tout ça )

    De plus, si on suit ton résonnement, ce numéro se suffirait à lui-même, pourquoi avoir ajouter la date dans l'URL du site? D'autant plus que si dans l'URL je modifie uniquement ce numéro (1801 au lieu de 1800), je tombe sur des courses différentes mais toujours à la même date (celle précisé dans l'URL).

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 66
    Par défaut
    bonsoir qwazerty
    non ce numéro je l'ais pris que dans l'url du site
    après j'ai mis la date car dans la ligne du code vba connections il faut bien préciser l'adresse du site ou je me trompe
    ensuite c'est sure que situ rentre (1801 au lieu de 1800) tu auras la même date puisque sur le site aujourd'hui il y a 2 réunion de 9 courses donc (1800 et 1801) auront la même date
    mais si tu rentre 1802 tu auras la date de demain
    parce qu'il y a des jours avec 2;3;4;5;6 etc au max 8 ou 9 Réunions de 4;5;6;7;8 etc max 9 courses

    cordialement kiss6

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 113
    Par défaut
    Salut

    hum, comment t'expliquer autrement.

    Voila ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        With Selection.QueryTable
            idcourse = 18000
            .Connection = "URL;http://www.turf-fr.com/partants-pmu/" & idcourse & "_" & LaDate & "-" & "vincennes.html "
            .Refresh BackgroundQuery:=True
        End With
    Dans ce morceau de code cette ligne reconstitue l'url qui va permettre de pointer vers la réunion qui t’intéresse en fournissant un n° de réunion et une date.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "http://www.turf-fr.com/partants-pmu/" & idcourse & "_" & LaDate & "-" & "vincennes.html "
    Pour la date ok, facile aujourd'hui ou demain, mais tu nous demande de pouvoir modifier automatiquement idcourse.
    Quand je te demande ou tu trouve idcourse, tu me réponds dans l'URL de la réunion... donc ma question, pourquoi reconstituer l'url d'une page que tu connais déjà?
    A ce compte la place l'url de la réunion que tu veux rapatrier dans une cellule et utilise le contenu de la cellule en paramètre de .connection.

    Peut-être que je passe à coté de quelques choses dis moi.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 66
    Par défaut
    bonsoir qwazerty

    je te mes le fichier sans les "idcourses" j'ai juste mis dans url 18000 .
    quand je clic sur import de la page accueil pour aujourd'hui j'ai bien les courses du jour .
    mais si je passe sur demain je n'est pas les courses du lendemain mais toujours celles du jours
    "
    donc c'est pour cela que je vous demandais si on pouvais changer ce numéro de course déferrement car l'url ne ce rafraichi pas malgré qu'à la fin il y est .Refresh BackgroundQuery:=True.

    je crois que le problème vient de cela et en plus comme vous l'avez vue je n'ai pas toute les courses alors qu'il devrais en avoir 8 ou 9 suivant la réunion des hippodromes

    si cela vous pose trop de problème laisser tomber j'essaierais avec un autre site turf

    cordialement kiss6
    Fichiers attachés Fichiers attachés

  8. #8
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 113
    Par défaut
    Salut

    Bon, j'ai regardé un peu mieux le site, si je comprends, il faut que tu ailles chercher les infos sur la page d'accueil http://www.turf-fr.com/ pour avoir les adresses des différentes réunions, la difficulté c'est que les 3 onglets présents aujourd'hui contiennent uniquement une course, donc je ne sais pas comment se structure la page quand il y a plusieurs réunion prévu sur la journée.

    Pour aller les chercher, tu refais une requête QueryTable sur une autre feuille qui pointe sur la page d'accueil et tu en retire les liens des réunions (en tenant compte de la liste déroulante Aujourd'hui/Demain. Une fois que tu as les urls, tu les utilises directement avec la méthode "connection" de ta requête.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 66
    Par défaut
    C'est normal qu'il n'y ait qu' une course sur les 3
    onglets que tu site puisqu'il s'agit de la course principal de la journée et cette course est le quinté+
    pour avoir les réunion il faut positionner ta souris sur "partants ";"choisir le jour"; puis "l'hippodrome ou la réunion, ex: vincennes(R1)"

    cordialement kiss6

  10. #10
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 113
    Par défaut
    Salut

    pour avoir les réunion il faut positionner ta souris sur "partants ";"choisir le jour"; puis "l'hippodrome ou la réunion, ex: vincennes(R1)"
    Tu avoueras qu'il est quand même dommage d'avoir attendu 9 messages avant de donner cette information qui me semble être de base... bref.

    Quoiqu'il en soit, ça ne change rien au résonnement que je t'ai donné juste avant, à partir de la Requête faite sur la page d'accueil, il te faut ressortir les liens pointant vers les réunions.

    Je n'utilise jamais les requêtes QueryTable (ce qui est contenu dans la feuille Import),je ne sais pas faire un aussi bon résultat que ce que tu as fait dans l'onglet Import, je te laisse la réaliser.
    Si tu as besoin pour sélectionner les bons liens dans les données importé sur la feuille fait signe.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 66
    Par défaut
    bonjour qwazerty
    je vous met le fichier d'origine de 2011 qui fonctionnait très bien avant que le site ne change l'url
    vous verrez qu'il n'y a pas de numéro avant la date et que j'avais bien toute les courses de la réunion

    donc depuis le changement de l'url du site avec ce numéro (id) devant la date
    l'url ne ce rafraichi plus
    donc moi pour compléter l'url j'ais ajouté (id) qui correspond au numéro de la course
    mais peut être que l'ajout de (id) est mal placé dans mon code vba
    ou faudrait-il faire une boucle (for next) ou un (if then) pour que cette url ce mette a jour.

    vous me dite que vous n'utiliser jamais les requêtes Querytable que faite vous a la place c'la pourrai t mettre utile
    après pourriez-vous m'éclairer pour sélectionner les bons liens dans les données importé sur la feuille car la je patauge

    veuillez m'excuser pour tous ce désagrément que je vous fait subir mais en temps que novice et passionner d'Excel qui n'ait pas toujours simple a comprendre

    cordialement kiss6
    Fichiers attachés Fichiers attachés

  12. #12
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 113
    Par défaut
    Salut

    Je résume:
    Le site à changé son mode de fonctionnement et a ajouté le numéro de réunion dans l'url des pages de celles-ci (pour info d'ailleurs, la date qui se trouve dans l'URL n'a semble-t-il aucune sorte d'importance, seul ce numéro est pris en compte - A vérifier).
    Donc pour mettre à jour la requête il te faut le numéro de la réunion que tu souhaites afficher.
    Tu me dis que le seul endroit ou ce numéro apparait, c'est dans le lien contenu dans le menu Participant-> Date -> Lieu de la réunion

    Ma réponse:
    Vu que le seul endroit où apparait le n° de réunion se trouve dans les liens du menu Participant, il faut récupérer ces liens.

    Solution
    Si vous savez reproduire la requêtes contenu dans l'onglet import, il faut faire de même dans un autre onglet avec pour cible la page d'accueil, puis dans la feuille excel, aller chercher dans les cellules qui vont bien, les liens des courses.

    Alternative:
    J'utilise les requêtes XML, qui permette de charger la page web dans un document internet placé en mémoire. Il faut ensuite pointer les éléments de la page pour récupérer ce qu'on y cherche.

    Essai comme ça
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    Option Explicit
    Sub Import()
    'Il faut activé les références suivantes (Outils, Référence...)
    'Microsoft XML, [n° de version]
    'Microsoft HTML Object Library
     
    Dim LaDate As String
    Dim URLArchive As String
    Dim URLCourse As String
    Dim IEDoc As New HTMLDocument
    Dim Req As New MSXML2.XMLHTTP
    Dim DateReunion As Date
    Dim AnneeMois As String
    Dim Tab_Reunion As HTMLTable
    Dim TmpElem As HTMLGenericElement
    Dim TabRow As HTMLTableRow
    Dim TabRowLieu As HTMLTableRow
     
        'Initialisation
        URLArchive = "http://www.turf-fr.com/archives/courses-pmu/"
     
        'On prend en compte la date
        'Il vaut mieux utiliser les codename (ici F1, F2, ...), plutot que d'utiliser sheets("...")
        '2 avantages:
        'Si l'utilisateur modifie le nom de l'onglet, ça ne change rien
        'Si le classeur au 1er plan n'est plus celui qui contient la macro, elle continue à poiter sur celui-ci (sinon la macro utilise la classeur actif pour effectuer des modifs...
            'autre solution pour éviter cette dernière situation et si tu veux vraiment utiliser sheets("..."), il faut préciser sur quel classeur tu travail
            'ThisWorkBook.sheets("...")
        If F1.Range("E12") = "Demain" Then
            DateReunion = Date + 1
        Else
            DateReunion = Date
        End If
     
     
        'On crée le lien qui pointe vers la page récapitulative des réunion du mois
        AnneeMois = Format(DateReunion, "yyyy/mmmm/")
        URLArchive = URLArchive + AnneeMois
     
        'On charge la page d'accueil en mémoire
        With Req
            .Open "GET", URLArchive, False
            .setRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
            .setRequestHeader "Accept-Encoding", "gzip , deflate"
            '.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"  'Ajouté
            .setRequestHeader "Cache-Control", "max-age=0"  'Ajouté
            .setRequestHeader "Accept-Language", "fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3"
            .setRequestHeader "Connection", "keep-alive" 'Modifié, espace retiré "keep -alive"
            .setRequestHeader "Host", "www.turf-fr.com"
            .setRequestHeader "Referer", URLArchive
            .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.0; rv:29.0) Gecko/20100101 Firefox/29.0"
            .send
            'On place la page dans le document
            IEDoc.body.innerHTML = .responseText
        End With
     
        'On va chercher le lien vers la course (à adapter en fonction des besoins)
        'On formate la date
        LaDate = UCase(Format(DateReunion, "dddd d mmmm yyyy"))
        'On recherche cette date dans le tableau contenu sur la page
        'On pointe l'élément nommé le plus proche du tableau
        Set TmpElem = IEDoc.getElementById("result_milieu")
        'On pointe le tableau
        Set Tab_Reunion = TmpElem.Children(6)
        'On boucle sur les élément du tableau (Les Row) pour trouver les courses correspondantes à la date
        For Each TabRow In Tab_Reunion.Children(1).Children
            'Je ne sais pas si seul celles de vincennes t'interesse, il faudra peut-être adapter un peu
            If UCase(TabRow.Children(0).innerText) = LaDate Then
                'On verifie le lieu de la course
                If UCase(TabRow.Children(1).innerText) = "VINCENNES" Then
                    'C'est la reunion que l'on recherche
                    With F2.QueryTables(1)
                        'On crée le lien
                        URLCourse = Replace(TabRow.Children(3).Children(0).href, "about:/", "http://www.turf-fr.com/")
                        .Connection = "URL;" & URLCourse
                        .Refresh BackgroundQuery:=True
                        'On affiche la feuille Import
                        F2.Activate
                    End With
                    'On quite la procedure
                    Exit Sub
                End If
            End If
        Next
    End Sub
     
    'http://www.turf-fr.com/partants-pmu/18000_samedi-10-janvier-2015-vincennes.html
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  13. #13
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 66
    Par défaut
    bonsoir qwazerty

    excuser moi du retard mais je vient juste de m'apercevoir de votre code

    comme vous me le demander je l'ais essayer mais ça bloque a la ligne Dim IEDoc As New HTMLDocument erreur de compilation type défini par l'utilisateur non défini

    si toute fois l'erreur est de moi ne vous tracasser plus la tête vous m'avez déjà bien asse consacrer du temps et de la patience
    car vous savez je comprend vite mais il faut m'expliquer longtemps

    d'un bourricot vous ne pourrez pas en faire un cheval de course
    même si vous lui coupé les oreilles en pointe ca seras toujours un bourricot


    en tous cas je vous remercie pour les efforts fourni

    cordialement kiss6

  14. #14
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 113
    Par défaut
    Salut

    C'est l'expression favorite d'un collègue (cheval de course...).
    C'est à moi de m'excuser, je me suis agacé sans raison. On a tous notre rythme d’apprentissage, c'est à moi de m'adapter.
    On a tous nos limites (qui ne demandent qu'a être repoussées) et on est tous capable d'apprendre, c'est le but d'un tel forum (du moins c'est ma conception d'un tel forum).
    Bref, revenons en à nos moutons chevaux de course.

    Le "bug" est du à la non déclaration des référence auprès de VBA, il faut aller dans le menu "Outils" de VBA, puis dans "Référence...".
    Voila un tutoriel, par contre attention une des références n'est pas la même que dans l'exemple, regarde les 2 1ère ligne de mon code, en commentaire (texte vert) tu as les noms des 2 références à activer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Import()
    'Il faut activé les références suivantes (Outils, Référence...)
    'Microsoft XML, [n° de version]
    'Microsoft HTML Object Library
    ++
    Qwaz

    Ps: n'hésite pas à me tutoyer, le vouvoiement n'est pas trop mon truc (mais si ça te dérange, dis le moi)

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  15. #15
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 66
    Par défaut
    bonjour qwazerty

    d'abord pour le tutoyement cela me dérange pas car je suis un papi seul, et qui a que pour passion les courses et excel

    bon mis a part cette petite incarpade revenons à nos chevaux
    alors voila j' ais un autre bug "erreur 91" a la ligne Set Tab_Reunion = TmpElem.Children(6) Variable objet ou variable de bloc with non définie.
    apres vous me demander si il n'y a que la réunion de l'hippodrome de vincennes qui m'intéresse non puisque la premiere réunion n'est pas toujours vincennes
    vous pouvez avoir la 1° réunion a cagnes sur mer , ou a pau etc etc cela change tous les jours
    par contre la en vous écrivant je vient de rééssayer le programme il n'a pas buger j' ais remarqué que c'la fonctionnait 1 fois sur 2 ou sur 3 bizarre
    en plus cela ne me donne pas les courses , voila ce que cela me donne

    N°	Prix	Arrivée	Non partant
    1°	Affichage des partants  PRIX DE LA CAPELLE	9 - 1 - 12 - 10 - 3	
    2°	Affichage des partants  PRIX DE BRIONNE	10 - 7 - 16 - 2 - 15	
    3°	Affichage des partants  PRIX DE BOLLENE	10 - 6 - 7 - 1 - 9	
    4°	Affichage des partants  PRIX DE LA BAULE	Arrivée non connue...	5
    5°	Affichage des partants  PRIX DE CASTERA-VERDUZAN	Arrivée non connue...	
    6°	Affichage des partants  PRIX DE RIOM	Arrivée non connue...	
    7°	Affichage des partants  PRIX DE ROUBAIX	Arrivée non connue...	
    8°	Affichage des partants  PRIX DE FRESNES (GR A)	Arrivée non connue...	
    9°	Affichage des partants  PRIX DE FRESNES (GR B)	Arrivée non connue...	
    
    cordialement kiss6

  16. #16
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 113
    Par défaut
    Bonjour

    Pour ce qui est de l'erreur 91, je n'arrive pas à la provoquer chez moi, j'ai pourtant lancer l'exécution une 10ène de fois sans avoir de problème.
    Si ça persiste, je vous ferez faire les manips nécessaires pour identifier le problème. (y'aura juste un bout de code à ajouter qui sauvegardera la page web pour que vous puissiez me l'envoyer)

    Sinon pour l'erreur de mise à jour de la page import, je n'y avais pas fait attention, j'ai juste contrôlé l'URL au niveau du code et je n'ai pas vu que "partants-pmu" était remplacé par "arrivees-pmu", normalement ça devrait fonctionner en plaçant cette modification. J'ai aussi pris la 1ère réunion de la date sélectionné. Vous n'utiliser que la 1ère course de chaque jour c'est bien ça?

    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
            If UCase(TabRow.Children(0).innerText) = LaDate Then
                'On verifie le lieu de la course
                'On ne prend en compte que la 1ère réunion, celle qui vient donc en 1ère dans le tableau pour la date choisi
                'If UCase(TabRow.Children(1).innerText) = "VINCENNES" Then
                    'C'est la reunion que l'on recherche
                    With F2.QueryTables(1)
                        'On crée le lien
                        'On remplace "about:/" par la racine du site web "http://www.turf-fr.com/"
                        URLCourse = Replace(TabRow.Children(3).Children(0).href, "about:/", "http://www.turf-fr.com/")
                        'On remplace "arrivees" par "partants"
                        URLCourse = Replace(URLCourse, "arrivees", "partants")
                        .Connection = "URL;" & URLCourse
                        .Refresh BackgroundQuery:=True
                        'On affiche la feuille Import
                        F2.Activate
                    End With
                    'On quite la procedure
                    Exit Sub
                'End If
            End If
    Cordialement
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  17. #17
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 66
    Par défaut
    bonsoir qwazerty

    vous avez oublié le tutoiement ne vous gênez pas

    bon j' ais rectifié le petit problème mais après je n'ais que la course 1 et la 8 et 9 mais pas les intermédiaires 2,3,4,5,6,7
    car prend toutes les réunions et toutes les courses
    mais je ne veut pas que vous vous tracassier la tête déjà la vous avez fait beaucoup pour les autre réunions et courses je me débrouillerais
    il faut bien que j'essaiE de me dépatouiller seul
    pour l'erreur 91 je ne l'ais plus pour le moment c'la fonctionne sans bug
    après lorsque je sélectionne demain dans la feuille accueil rien ne ce passe

    je vous remercie pour tous ces effort fourni excel est vraiment un bon logiciel faut-il encore savoir sens servir

    PS: juste une question peut être bête pour vous mais je me lance " si je change l'adresse de url y aura-t-il des complications ???

    cordialement kiss6

  18. #18
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 113
    Par défaut
    Bonsoir

    Citation Envoyé par kiss6 Voir le message
    vous avez oublié le tutoiement ne vous gênez pas
    Non ça n'est pas un oubli de ma part , la réciprocité est une chose qui me semble importante.

    Pour ce qui est de me tracasser la tête, au contraire, c'est une occasion d'apprendre à me servir des requêtes!

    J'avoue être un peu perdu, j'ai testé plusieurs adresse en effectuant des requêtes sans passer par macro et les résultats sont très changeants, l'aspect obtenu n'est pas toujours identique...

    Dans le dernier fichier que vous m'avez transmis, j'ai remarqué que l'aspect était différent, j'ai donc jeté un coup d'oeil et l'adresse pointée par la requêtes est elle aussi très différente
    http://www.turf-fr.com/partants/160220071.shtml
    Comment trouver cette adresse sur le site, j'ai recherché et le seul endroit ou je l'ai trouvé, elle n'est pas réellement accessible.

    Pour la partie de code qui prend en compte aujourd'hui/demain, la date recherché dans le liste change, donc normalement ça devrait fonctionné (je n'ai pas refait d'essai, je regarderais demain, il est tard et je me lève à 6h demain :p)

    Qu'entendez-vous par changer l'url? Dans le code vous voulez dire? Quel genre de changement? (Il n'y a pas de question bête, juste des gens qui restent sans réponse)

    Bonne nuit
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  19. #19
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 66
    Par défaut
    bonjour qwazerty
    je viens de regarder aussi http://www.turf-fr.com/partants/160220071.shtml
    avez vous remarquer à la fin de l'url le ( #1 ) pour la première course ( #2 ) pour la deuxième etc etc
    c'était jus une remarque vite fait car il faut que je parte au travail

    cordialement kiss6

  20. #20
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 113
    Par défaut
    Bonsoir Kiss6

    Et comme cela?

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    Sub Import()
    'Il faut activé les références suivantes (Outils, Référence...)
    'Microsoft XML, [n° de version]
    'Microsoft HTML Object Library
     
    Dim LaDate As String
    Dim URLArchive As String
    Dim URLCourse As String
    Dim IEDoc As New HTMLDocument
    Dim Req As New MSXML2.XMLHTTP
    Dim DateReunion As Date
    Dim AnneeMois As String
    Dim Tab_Reunion As HTMLTable
    Dim TmpElem As HTMLGenericElement
    Dim TabRow As HTMLTableRow
    Dim TabRowLieu As HTMLTableRow
     
    Dim LienHy As Hyperlink
    Dim TheCell As Range
     
        'Initialisation
        URLArchive = "http://www.turf-fr.com/archives/courses-pmu/"
     
        'On prend en compte la date
        'Il vaut mieux utiliser les codename (ici F1, F2, ...), plutot que d'utiliser sheets("...")
        '2 avantages:
        'Si l'utilisateur modifie le nom de l'onglet, ça ne change rien
        'Si le classeur au 1er plan n'est plus celui qui contient la macro, elle continue à poiter sur celui-ci (sinon la macro utilise la classeur actif pour effectuer des modifs...
            'autre solution pour éviter cette dernière situation et si tu veux vraiment utiliser sheets("..."), il faut préciser sur quel classeur tu travail
            'ThisWorkBook.sheets("...")
        If F1.Range("E12") = "Demain" Then
            DateReunion = Date + 1
        Else
            DateReunion = Date
        End If
     
     
        'On crée le lien qui pointe vers la page récapitulative des réunion du mois
        AnneeMois = Format(DateReunion, "yyyy/mmmm/")
        URLArchive = URLArchive + AnneeMois
     
        'On charge la page d'accueil en mémoire
        With Req
            .Open "GET", URLArchive, False
            .setRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
            .setRequestHeader "Accept-Encoding", "gzip , deflate"
            '.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"  'Ajouté
            .setRequestHeader "Cache-Control", "max-age=0"  'Ajouté
            .setRequestHeader "Accept-Language", "fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3"
            .setRequestHeader "Connection", "keep-alive" 'Modifié, espace retiré "keep -alive"
            .setRequestHeader "Host", "www.turf-fr.com"
            .setRequestHeader "Referer", URLArchive
            .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.0; rv:29.0) Gecko/20100101 Firefox/29.0"
            .send
            'On place la page dans le document
            IEDoc.body.innerHTML = .responseText
        End With
     
        'On va chercher le lien vers la course (à adapter en fonction des besoins)
        'On formate la date
        LaDate = UCase(Format(DateReunion, "dddd d mmmm yyyy"))
        'On recherche cette date dans le tableau contenu sur la page
        'On pointe l'élément nommé le plus proche du tableau
        Set TmpElem = IEDoc.getElementById("result_milieu")
        'On pointe le tableau
        Set Tab_Reunion = TmpElem.Children(6)
        'On boucle sur les élément du tableau (Les Row) pour trouver les courses correspondantes à la date
        For Each TabRow In Tab_Reunion.Children(1).Children
            'Je ne sais pas si seul celles de vincennes t'interesse, il faudra peut-être adapter un peu
            If UCase(TabRow.Children(0).innerText) = LaDate Then
                'On verifie le lieu de la course
                'On ne prend en compte que la 1ère réunion, celle qui vient donc en 1ère dans le tableau pour la date choisi
                'If UCase(TabRow.Children(1).innerText) = "VINCENNES" Then
                    'On affiche l'ensemble des ligne de la feuille
                    Feuil3.Rows.Hidden = False
                    'C'est la reunion que l'on recherche
                    With Feuil3.QueryTables(1)
                        'On crée le lien
                        'On remplace "about:/" par la racine du site web "http://www.turf-fr.com/"
                        URLCourse = Replace(TabRow.Children(3).Children(0).href, "about:/", "http://www.turf-fr.com/")
                        'On remplace "arrivees" par "partants"
                        URLCourse = Replace(URLCourse, "arrivees", "partants")
                        .Connection = "URL;" & URLCourse
                        .FieldNames = True
                        .RowNumbers = False
                        .FillAdjacentFormulas = False
                        .PreserveFormatting = True 'False
                        .RefreshOnFileOpen = False
                        .BackgroundQuery = True
                        .RefreshStyle = xlInsertDeleteCells
                        .SavePassword = False
                        .SaveData = True
                        .AdjustColumnWidth = True
                        .RefreshPeriod = 0
                        .WebSelectionType = xlEntirePage
                        .WebFormatting = xlWebFormattingAll
                        .WebPreFormattedTextToColumns = True
                        .WebConsecutiveDelimitersAsOne = True
                        .WebSingleBlockTextImport = True 'False
                        .WebDisableDateRecognition = True 'False
                        .WebDisableRedirections = False
                        .Refresh BackgroundQuery:=False 'True
                        'On format la feuille
                        'On masque les ligne contenant des liens (pour cacher les grosses cellules qui contiennent des lien sur plusieurs lignes)
                        With Feuil3
                            'On empeche le rafraichissement de l'écran, gain de temps et plus propre
                            Application.ScreenUpdating = False
                            'On ajuste la taille de lignes
                            .UsedRange.Rows.AutoFit
                            'On boucle sur les cellule de la colonne A
                            For Each TheCell In .Range("A1", .Cells(.Rows.Count, "A").End(xlUp))
                                With TheCell
                                    'On laisse les liens qui ramènent en haut de page, on supprime les autres
                                    If (UCase(.Value) <> "HAUT DE PAGE") And (.Hyperlinks.Count > 0) Then .EntireRow.Hidden = True
                                End With
                            Next
                            Application.ScreenUpdating = True
                            'On cache les lignes de début qui sont inutiles
                            .Range("A1", Feuil3.Columns(1).Find("COURSES", , xlValues, xlWhole, xlByColumns).Offset(-1)).EntireRow.Hidden = True
     
                            'On affiche la feuille Import
                            .Activate
                        End With
                    End With
                    'On quite la procedure
                    Exit Sub
                'End If
            End If
        Next
    End Sub

    Pour les #1, #2, #..., non je n'avais (et je n'ai toujours pas) vu

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2003] Probleme VBA excel générer mail automatique avec piece jointe
    Par itshy dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/03/2012, 10h46
  2. Probleme VBA Excel Somme
    Par DoVBnet dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/06/2011, 18h12
  3. [VBA-E] probleme vba excel
    Par derayef dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 16/05/2006, 23h47
  4. [VBA excel] Probleme sur bouton commande
    Par RedBurn dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 22/11/2005, 10h10
  5. [VBA] [Excel] Probleme de rafraichissement d'un label
    Par lejert dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/11/2005, 17h09

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