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

VB.NET Discussion :

Optimiser le temps de chargement de données recueillies sur une page web (15 secondes c'est trop long) [Débutant]


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Optimiser le temps de chargement de données recueillies sur une page web (15 secondes c'est trop long)
    Bonjour à la communauté Developpez,
    Je sollicite votre aide afin d'améliorer la vitesse de chargement de données sur une page web http://www.pronosoft.com/fr/concours...lotofoot_7.php

    Vous l'aurez compris je souhaite obtenir la répartition et le nom des équipes de la grille courante du lotofoot7.
    Je précise que je programme avec Visual Basic 2008
    J'ai déjà créer mon Form avec des Labels stockant le nom des équipes et des radioButtons (1,N,2) que l'utilisateur cocheras
    Voir l'image ci-jointe :Nom : Répartition.jpg
Affichages : 464
Taille : 221,9 Ko

    j'ai également fait le code suivant à partir des tutos et des discussions (qui m'ont pas mal aidé) :
    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
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
     Private Sub LinkLabel1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkLabel1.Click
            'nécéssite d'activer la référence Microsoft HTML Objects Library
            'nécéssite d'activer la référence Microsoft Internet Controls
            Dim i, j, k As Integer
            Dim IE As SHDocVw.InternetExplorer
            Dim maPageHtml As MSHTML.HTMLDocument
            Dim Helem As MSHTML.IHTMLElementCollection
     
            Dim Pourcent1, PourcentN, Pourcent2 As Double
            Dim Htable As MSHTML.IHTMLElementCollection
            Dim maTable As MSHTML.IHTMLTable
            Dim TblGame(0, 0) As String
            Dim StopWatch As System.Diagnostics.Stopwatch
     
            StopWatch = New Stopwatch
            StopWatch.Start()
     
            '1.On fait patienter 
            'LinkLabel1.Cursor = Cursors.WaitCursor
     
            '2.On ouvre la page internet "http://www.pronosoft.com/fr/concours/repartition_lotofoot_7.php"
            'qui contient la répartition
     
            IE = CreateObject("internetExplorer.Application")
            IE.Visible = False
            IE.Navigate("http://www.pronosoft.com/fr/concours/repartition_lotofoot_7.php")
     
            ' System.Diagnostics.Process.Start("chrome.exe", "http://www.pronosoft.com/fr/concours/repartition_lotofoot_7.php")
            '3.On attends le chargement complet de notre page internet
            Do Until IE.ReadyState = SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE
                Application.DoEvents()
            Loop
     
            '4.On commence par récupérer le n° et la date du LotoFoot7
            maPageHtml = IE.Document
            Helem = maPageHtml.getElementsByTagName("option")
     
            For i = 0 To Helem.length - 1
     
                If Helem(i).getAttribute("selected") = True Then
                    'idLF7 = Helem(i).value
                    LblGrilleNum.Text = Helem(i).innerText 'Grille n° XXX du XX/XX/2015
                    Exit For
                End If
     
            Next
            '5.On libère les variables qui ne sont plus necessaires : Helem
            Helem = Nothing
     
            '6.On récupère le n° des matchs , le nom des équipes et la répartition dans TblGame
            '  objet type table
            Htable = maPageHtml.getElementsByTagName("table")
            '  tableau dans la page Web contenant le n° des matchs , le nom des équipes et la répartition
            maTable = Htable(3)
     
     
            ReDim TblGame(7, 5)
            '  boucle sur toutes les lignes du tableau
            For j = 1 To maTable.rows.length - 2
                'boucle sur les cellules dans chaque ligne
                For k = 1 To maTable.rows(j - 1).Cells.Length
                    TblGame(j - 1, k - 1) = maTable.rows(j - 1).Cells(k - 1).innerText
                Next k
            Next j
     
     
            'le nom des équipes
            LblTeamA.Text = TblGame(1, 1).ToString
            LblTeamB.Text = TblGame(1, 2).ToString
            LblTeamC.Text = TblGame(2, 1).ToString
            LblTeamD.Text = TblGame(2, 2).ToString
            LblTeamE.Text = TblGame(3, 1).ToString
            LblTeamF.Text = TblGame(3, 2).ToString
            LblTeamG.Text = TblGame(4, 1).ToString
            LblTeamH.Text = TblGame(4, 2).ToString
            LblTeamI.Text = TblGame(5, 1).ToString
            LblTeamJ.Text = TblGame(5, 2).ToString
            LblTeamK.Text = TblGame(6, 1).ToString
            LblTeamL.Text = TblGame(6, 2).ToString
            LblTeamM.Text = TblGame(7, 1).ToString
            LblTeamN.Text = TblGame(7, 2).ToString
     
            'la répartition
            Dim m As Integer
            Dim n As Integer = 0
            Dim TblBase(6) As Double
     
            For m = 1 To 7
     
                'Pour comparer les pourcentages : Remplacement des % par des espaces puis 
                'supression des espaces à gauche et à droite
                Pourcent1 = CDbl(Trim(Replace(TblGame(m, 3).ToString, "%", "")))
                PourcentN = CDbl(Trim(Replace(TblGame(m, 4).ToString, "%", "")))
                Pourcent2 = CDbl(Trim(Replace(TblGame(m, 5).ToString, "%", "")))
     
                If Pourcent1 > PourcentN And Pourcent1 > Pourcent2 Then
                    TblChoix(n) = "X"
                    Répartition = Répartition & "1"
                    TblBase(m - 1) = Pourcent1
     
                ElseIf PourcentN > Pourcent1 And PourcentN > Pourcent2 Then
                    TblChoix(n + 1) = "X"
                    Répartition = Répartition & "N"
                    TblBase(m - 1) = PourcentN
     
                ElseIf Pourcent2 > Pourcent1 And Pourcent2 > PourcentN Then
                    TblChoix(n + 2) = "X"
                    Répartition = Répartition & "2"
                    TblBase(m - 1) = Pourcent2
     
                End If
                n = n + 3
            Next m
     
            Dim Max As Double
     
            Max = TblBase(0)
            Base = 1
     
            For i = 1 To TblBase.GetUpperBound(0)
                If TblBase(i) > Max Then
                    Max = TblBase(i)
     
                    Base = Base + 1
                End If
            Next i
     
     
            For Each ctrl As Control In GroupBox1.Controls
                If ctrl.GetType Is GetType(Label) Then
                    If ctrl.Text = Base.ToString Then
                        ctrl.Text = "B"
                        ctrl.ForeColor = Color.White
                        ctrl.BackColor = Color.FromArgb(255, 128, 0)
                        ctrl.Font = New System.Drawing.Font("Microsoft Sans Serif", 11, FontStyle.Bold)
     
                        Exit For
                    End If
                End If
            Next
     
            Array.Sort(TblBase)
     
            '5.On libère les variables qui ne sont plus necessaires : Helem
            Helem = Nothing
            Htable = Nothing
            maTable = Nothing
            TblGame(7, 5) = Nothing
            n = 0
     
            IE.Quit()
            'LinkLabel1.Cursor = Cursors.Default
            LinkLabel1.LinkVisited = True
            LinkLabel1.LinkColor = Color.Teal
     
     
            Call Tableau_To_RadioButton(Panel1)
            Call Synthèse() ' mise à jour de la synthèse
     
            ' Activation des filtres
            BtnAucun.Enabled = True
            BtnNiv1.Enabled = True
            BtnNiv2.Enabled = True
            BtnNiv3.Enabled = True
            'LinkLabel1.Enabled = False
     
            StopWatch.Stop()
            MsgBox("Execution time in seconds: " + CStr(StopWatch.Elapsed.TotalSeconds))
        End Sub
    Le problème c'est qu'avec mon code je mets entre 13 et 18 secondes pour charger la répartition de pronosoft lotoFoot7 dans mon application.
    Pouvez-vous me dire ce que je peux optimiser dans mon code ou si il y moyen de faire plus rapide notamment au niveau de l'appel d'internet(serait-ce plus rapide en passant par Google que par IE)

    Merci d'avance

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    découpe ton stowatch pour savoir d'où ca vient réellement parce que ton code fait plein de choses
    genre déjà savoir combien de temps met ta boucle moche avec le doevents, puis chaque morceau de code

    après tu peux paralléliser certains traitements, divisant le temps par le nombre de coeur de ta machine en moyenne

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    découpe ton stowatch pour savoir d'où ca vient réellement parce que ton code fait plein de choses
    genre déjà savoir combien de temps met ta boucle moche avec le doevents, puis chaque morceau de code

    après tu peux paralléliser certains traitements, divisant le temps par le nombre de coeur de ta machine en moyenne
    Bonjour,Pol63
    Ma boucle avec le do events sert à attendre le chargement complet de ma page web
    j'obtiens entre 10 à 15 secondes(apparemment c'est ici que ça rame)

    j'obtiens environ 0.10 secondes pour obtenir le numéro et la date :
    Grille n° XXX du XX/XX/2015 (ma 1ère boucle :For i = 0 To Helem.length - 1...next)

    j'obtiens environ 0.70 secondes pour obtenir le nom des équipes :
    (ma 2ème boucle : For j = 1 To maTable.rows.length - 2...next j)

    Pour ce qui est de ma machine ce n'est pas une bête de guerre : EeeBox(cpuN270;1.6 ghz et 1.50 de ram et windows xp)
    Cordialement

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    si tu es trop long sur le chargement de la page, une des solutions envisageable est d'utiliser le httpwebrequest ou équivalent
    c'est beaucoup plus rapide que le webbrowser qui lui va charger toutes la page y compris les images, alors que le httpwebrequest ne va charger que la page http, c'est à toi ensuite de le traiter
    c'est plus complexe certes, mais ca peut te réduire le temps de chargement de la page à quelques allez retour réseau, soit quelques fois 50ms

  5. #5
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    si tu es trop long sur le chargement de la page, une des solutions envisageable est d'utiliser le httpwebrequest ou équivalent
    c'est beaucoup plus rapide que le webbrowser qui lui va charger toutes la page y compris les images, alors que le httpwebrequest ne va charger que la page http, c'est à toi ensuite de le traiter
    c'est plus complexe certes, mais ca peut te réduire le temps de chargement de la page à quelques allez retour réseau, soit quelques fois 50ms
    Alors là je vais en terrain inconnu 1ère fois que j'entends parler d'httpwebrequest
    Bon merci je vais faire des recherches
    Si t'as des liens je prends volontiers

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    à l'origine http est protocole de dialogue sur le protocole de communication tcp
    donc en théorie tu peux utiliser le tcp pour dialoguer avec le site, mais ca fait coder beaucoup de choses

    entre le tcp et webbrwoser il y a une classe intermédiaire, httpwebrequest, qui sert à dialoguer avec un site et qui s'occupe d'envoyer ce qu'il faut
    tu lui donnes le site, le type de requete (get/post), les paramètres, les cookies, des headers, bref tout ce qui peut etre utile pour du dialogue http et utilisable par des propriétés
    et tu recois le contenu de la page web en tant que string (donc les balises)

    après il doit exister des parseurs html pour te permettre de faire de la recherche par balise, ce qui sera plus pratique que de faire du indexof et du substring

  7. #7
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par taur33 Voir le message
    Alors là je vais en terrain inconnu 1ère fois que j'entends parler d'httpwebrequest
    Bon merci je vais faire des recherches
    Si t'as des liens je prends volontiers
    Bonjour,

    Lorsqu'il s'agit d'interagir avec des pages j'utilise nécessairement des webrequests.
    Il existe une classe développées par Idb qui simplifie grandement la constitution d'une requête.
    Regardes mon dernier projet et recherches sur le forum car nous avons déjà traité de webrequests :

    ---> Mon dernier projet qui interface un site de conversion en ligne : https://bitbucket.org/3dotdev/ovc-yo...3-converter-hq
    PS: Dans ce projet il y a la classe de gestion de webrequest d'Idb

    ---> 1 post instructif : http://www.developpez.net/forums/d14...te-web-vb-net/
    ---> 1 autre post très complet sur la construction d'une webrequest en réponse au post précédent : http://proghelp.fr/demande-aide-f44/...veur-t545.html

    A+

  8. #8
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    à l'origine http est protocole de dialogue sur le protocole de communication tcp
    donc en théorie tu peux utiliser le tcp pour dialoguer avec le site, mais ca fait coder beaucoup de choses

    entre le tcp et webbrwoser il y a une classe intermédiaire, httpwebrequest, qui sert à dialoguer avec un site et qui s'occupe d'envoyer ce qu'il faut
    tu lui donnes le site, le type de requete (get/post), les paramètres, les cookies, des headers, bref tout ce qui peut etre utile pour du dialogue http et utilisable par des propriétés
    et tu recois le contenu de la page web en tant que string (donc les balises)

    après il doit exister des parseurs html pour te permettre de faire de la recherche par balise, ce qui sera plus pratique que de faire du indexof et du substring
    Re-Bonjour Pol63,
    et merci encore pour ton aide
    Après quelques recherches et lectures enrichissantes sur les "webrequest " (que tu dis parfaitement adapté et que tu dois maîtriser mieux que moi)
    j'ai donc adapté le début de mon code avec ce que j'ai compris sur les "webrequest":
    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
     Private Sub LinkLabel1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkLabel1.Click
            Dim StopWatch As System.Diagnostics.Stopwatch
     
            StopWatch = New Stopwatch
            StopWatch.Start()
     
            ' Create a request for the URL. 		
            Dim request As WebRequest = WebRequest.Create("http://www.pronosoft.com/fr/concours/repartition_lotofoot_7.php")
            ' If required by the server, set the credentials.
            request.Credentials = Net.CredentialCache.DefaultCredentials
            ' Get the response.
            Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
            ' Display the status.
            Console.WriteLine(response.StatusDescription)
            ' Get the stream containing content returned by the server.
            Dim dataStream As Stream = response.GetResponseStream()
            ' Open the stream using a StreamReader for easy access.
            Dim reader As New StreamReader(dataStream)
            ' Read the content.
            Dim sourceMaPageWeb As String = reader.ReadToEnd
     
     
            'Load the the document 
            Dim doc As New XmlDocument()
            Dim temp As IList 'contiendra le contenu des balises "option"
            Dim LblGrilleNum As String 'Grille n° XXX du XX/XX/2015
     
            'les membres de XmlDocument donnent accès aux Id, noeuds,etc.. ce que ne fait pas notre
            ' StreamReader donc on charge notre String "sourceMaPageWeb" comme XmlDocument
            doc.LoadXml(sourceMaPageWeb)
     
     
            '1.On commence par récupérer le n° et la date du LotoFoot7 (balises "option")
            temp = doc.GetElementById("option")
     
            For i = 0 To temp.Count - 1
     
                If temp(i).getAttribute("selected") = True Then
     
                    LblGrilleNum = temp(i).innerText 'Grille n° XXX du XX/XX/2015
                    Exit For
                End If
     
            Next
     
            ' Cleanup the streams and the response.
            reader.Close()
            dataStream.Close()
            response.Close()
     
            StopWatch.Stop()
            MsgBox("Execution time in seconds: " + CStr(StopWatch.Elapsed.TotalSeconds))
        End Sub
    Cependant j'ai le message d'erreur suivant : "Le serveur distant a retourné une erreur : (500) Erreur interne du serveur."
    à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.LoadXml(sourceMaPageWeb)
    Je ne vois pas ce qui cloche
    Qu'en penses-tu ?

    Cordialement



    [EDIT]
    Citation Envoyé par wallace1 Voir le message
    Bonjour,

    Lorsqu'il s'agit d'interagir avec des pages j'utilise nécessairement des webrequests.
    Il existe une classe développées par Idb qui simplifie grandement la constitution d'une requête.
    Regardes mon dernier projet et recherches sur le forum car nous avons déjà traité de webrequests :

    ---> Mon dernier projet qui interface un site de conversion en ligne : https://bitbucket.org/3dotdev/ovc-yo...3-converter-hq
    PS: Dans ce projet il y a la classe de gestion de webrequest d'Idb

    ---> 1 post instructif : http://www.developpez.net/forums/d14...te-web-vb-net/
    ---> 1 autre post très complet sur la construction d'une webrequest en réponse au post précédent : http://proghelp.fr/demande-aide-f44/...veur-t545.html

    A+
    Bonjour Wallace ,
    merci pour tes liens que j'ai regardés
    Tu maîtrises les webrequest y'as pas à dire .Moi j'apprends
    Tu peux me dire ce qu'il ne va pas dans le code que j'ai refait en utilisant les "webrequest" (voir réponse à Pol63)

    Cordialement

  9. #9
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par taur33 Voir le message
    ......Tu maîtrises les webrequest y'as pas à dire .Moi j'apprends
    Il ne s'agit pas de me faire mousser ou quoique ce soit d'autre.... la programmation ce n'est pas une question de maîtrise mais je dirais plutôt de temps qu'on passe à analyser, décortiquer et se former en permanence selon le besoin du projet.
    Etre débutant, ou en apprentissage ne veut absolument rien dire dans la mesure ou même les plus chevronnés des développeurs sont perpétuellement en phase d'apprentissage pour couvrir l'intégralité du domaine de leur projet !

    Je veux dire par là qu'il n'est pas envisageable de vouloir faire des webrequests sans pour autant connaitre le fonctionnement des requêtes Web à savoir les échanges clients/serveurs et leur constitution :

    Request, ContentType, MimeType, Encoding, Cookies, Response, Headers, Body, exceptions methods "Get, Post", json, .....etc.....)

    Il n'y a pas de fumée sans feu.....

    Citation Envoyé par taur33 Voir le message
    Tu peux me dire ce qu'il ne va pas dans le code que j'ai refait en utilisant les "webrequest" (voir réponse à Pol63)
    Oui je vais te dire ce qui ne colle pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     request.Credentials = Net.CredentialCache.DefaultCredentials
    Ne sert absolument à rien puisque le contenu de ce site est disponible au publique sans notion d'autentif !
    Plus d'info ici : https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     'Load the the document 
            Dim doc As New XmlDocument()
            Dim temp As IList 'contiendra le contenu des balises "option"
            Dim LblGrilleNum As String 'Grille n° XXX du XX/XX/2015
     
            'les membres de XmlDocument donnent accès aux Id, noeuds,etc.. ce que ne fait pas notre
            ' StreamReader donc on charge notre String "sourceMaPageWeb" comme XmlDocument
            doc.LoadXml(sourceMaPageWeb)
    '....
    '......etc.....
    Pourquoi travailler avec du xml c'est du html avec des appels de scripts imbriqués !


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      Dim StopWatch As System.Diagnostics.Stopwatch
     
            StopWatch = New Stopwatch
            StopWatch.Start()
    Tu peux aussi oublier le stopWatch, ça ne te servira à rien.



    Pour récapituler :

    A titre info, en se servant d'un debugger Web (Fiddler) voilà ce qu'il faut reproduire comme requête (WebRequest) pour travailler avec la réponse (WebResponse) :

    ---> Request (Header) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    GET http://www.pronosoft.com/fr/concours/repartition_lotofoot.php HTTP/1.1
    Host: www.pronosoft.com
    Connection: keep-alive
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36
    Accept-Encoding: gzip, deflate, sdch
    Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
    Cookie: __utma=198853486.1304760361.1442248526.1442248526.1442248526.1; __utmb=198853486.4.10.1442248526; __utmc=198853486; __utmz=198853486.1442248526.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
    ---> Response (Html Content) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ' .....Il y a ici le code html de la page en retour de ta requête.......
    '..... Voici le code de la grille active, c'est ce que tu veux récupérer, donc le reste nous importe peu.....
    <option selected="selected" value="910">Grille n&deg;77 du 15/09/15</option>
    '......Il y a d'autre code après mais il nous importe aussi.......

    A+

  10. #10
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bon voilà j'ai réussi à réduire le temps d'exécution à 2 secondes
    Mon code fonctionne : j'obtiens bien la répartition de "pronosoft lotoFoot7" dans mon application
    Voici mon code :
    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
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    Private Sub LinkLabel1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkLabel1.Click
            'nécéssite d'activer la référence Microsoft HTML Objects Library
            'nécéssite d'activer la référence Microsoft Internet Controls
     
     
            Call ClearRadioButton(Panel1)                  'effacer le contenu des RadioButton  
            Call Synthèse()                                'mise à jour de la synthèse
     
            Dim i, j, k As Integer                         'Boucles servant à parcourir les "IHTMLElementCollection"
            Dim Helem As IHTMLElementCollection            'Contiendra tous les tags référencés ("option" dans notre cas)
            Dim Pourcent1, PourcentN, Pourcent2 As Double  'Pour comparer les pourcentages
            Dim Htable As IHTMLElementCollection           'Contiendra toutes les tables
            Dim maTable As IHTMLTable                      'Contiendra la table recherchée
            Dim TblGame(0, 0) As String                    'Contiendra les valeurs de la table recherchée
     
            Dim StopWatch As System.Diagnostics.Stopwatch
            StopWatch = New Stopwatch
            StopWatch.Start()
     
            ' 1.On fait patienter 
            LinkLabel1.Cursor = Cursors.WaitCursor
     
            ' 2.On ouvre la page internet "http://www.pronosoft.com/fr/concours/repartition_lotofoot_7.php"
            'qui contient la répartition
     
            '  A. Creation de la request for the URL. 		
            Dim request As WebRequest = WebRequest.Create("http://www.pronosoft.com/fr/concours/repartition_lotofoot_7.php")
     
            '  B. Get the response.
            Dim response As WebResponse = CType(request.GetResponse(), WebResponse)
     
            ' 3.On récupère le contenu de notre page internet
            Dim sr As New StreamReader(response.GetResponseStream)
            Dim content As String = sr.ReadToEnd
     
            Dim doc As New HTMLDocument()
     
            Dim odoc As IHTMLDocument = DirectCast(doc, IHTMLDocument)
     
            odoc.write(content)
     
            request.Abort()
            response.Close()
     
            ' 4.On commence par récupérer le n° et la date du LotoFoot7
            '   on les trouve entre 2 balises <option> avec l'attribut "selected" : "Grille n&deg;233 du 18/09/15"
            '   <option selected="selected" value="2031">Grille n&deg;233 du 18/09/15</option>
            Helem = odoc.getElementsByTagName("option")
     
            For i = 0 To Helem.length - 1
     
                If Helem(i).getAttribute("selected") = True Then
                    'idLF7 = Helem(i).value
                    LblGrilleNum.Text = Helem(i).innerText 'Grille n° XXX du XX/XX/2015
                    Exit For
                End If
     
            Next
            ' 5.On libère les variables qui ne sont plus necessaires : Helem
            Helem = Nothing
     
            ' 6.On récupère le n° des matchs , le nom des équipes et la répartition dans TblGame
            '  objet type table
            Htable = odoc.getElementsByTagName("table")
            '  tableau dans la page Web contenant le n° des matchs , le nom des équipes et la répartition
            maTable = Htable(3)
     
     
            ReDim TblGame(7, 5)
            '  boucle sur toutes les lignes du tableau
            For j = 1 To maTable.rows.length - 2
                'boucle sur les cellules dans chaque ligne
                For k = 1 To maTable.rows(j - 1).Cells.Length
                    TblGame(j - 1, k - 1) = maTable.rows(j - 1).Cells(k - 1).innerText
                Next k
            Next j
     
     
            'le nom des équipes
            LblTeamA.Text = TblGame(1, 1).ToString
            LblTeamB.Text = TblGame(1, 2).ToString
            LblTeamC.Text = TblGame(2, 1).ToString
            LblTeamD.Text = TblGame(2, 2).ToString
            LblTeamE.Text = TblGame(3, 1).ToString
            LblTeamF.Text = TblGame(3, 2).ToString
            LblTeamG.Text = TblGame(4, 1).ToString
            LblTeamH.Text = TblGame(4, 2).ToString
            LblTeamI.Text = TblGame(5, 1).ToString
            LblTeamJ.Text = TblGame(5, 2).ToString
            LblTeamK.Text = TblGame(6, 1).ToString
            LblTeamL.Text = TblGame(6, 2).ToString
            LblTeamM.Text = TblGame(7, 1).ToString
            LblTeamN.Text = TblGame(7, 2).ToString
     
     
            'la répartition
            Dim m As Integer
            Dim n As Integer = 0
            Dim TblBase(6) As Double
     
            For m = 1 To 7
     
                'Pour comparer les pourcentages : Remplacement des % par des espaces puis 
                'supression des espaces à gauche et à droite
                Pourcent1 = CDbl(Trim(Replace(TblGame(m, 3).ToString, "%", "")))
                PourcentN = CDbl(Trim(Replace(TblGame(m, 4).ToString, "%", "")))
                Pourcent2 = CDbl(Trim(Replace(TblGame(m, 5).ToString, "%", "")))
     
                If Pourcent1 > PourcentN And Pourcent1 > Pourcent2 Then
                    TblChoix(n) = "X"
                    Répartition = Répartition & "1"
                    TblBase(m - 1) = Pourcent1
     
                ElseIf PourcentN > Pourcent1 And PourcentN > Pourcent2 Then
                    TblChoix(n + 1) = "X"
                    Répartition = Répartition & "N"
                    TblBase(m - 1) = PourcentN
     
                ElseIf Pourcent2 > Pourcent1 And Pourcent2 > PourcentN Then
                    TblChoix(n + 2) = "X"
                    Répartition = Répartition & "2"
                    TblBase(m - 1) = Pourcent2
     
                End If
                n = n + 3
            Next m
     
            'On a besoin d'une Base qui sera le + grand pourcentage parmis les 7 matchs
            Dim Max As Double
     
            Max = 0
            Base = 0
     
            For i = 0 To TblBase.GetUpperBound(0)
                If TblBase(i) > Max Then
                    Max = TblBase(i)
     
                    Base = i + 1
                End If
            Next i
            'On remplace le n° du match par "B" (pour Base)
            For Each ctrl As Control In GroupBox1.Controls
                If ctrl.GetType Is GetType(Label) Then
                    If ctrl.Text = Base.ToString Then
                        With ctrl
                            .Text = "B"
                            .ForeColor = Color.White
                            .BackColor = Color.FromArgb(255, 128, 0)
                            .Font = New System.Drawing.Font("Microsoft Sans Serif", 11, FontStyle.Bold)
                        End With
     
                        Exit For
                    End If
                End If
            Next
     
            '5.On libère les variables qui ne sont plus necessaires : Helem
            Helem = Nothing
            Htable = Nothing
            maTable = Nothing
            TblGame(7, 5) = Nothing
            n = 0
     
            'on a finit le chargement de la réparttion
            LinkLabel1.Cursor = Cursors.Default
            LinkLabel1.LinkVisited = True
            LinkLabel1.LinkColor = Color.Teal
     
     
            Call Tableau_To_RadioButton(Panel1) ' mise à jour des RadioButton
            Call Synthèse()                     ' mise à jour de la synthèse
     
            ' Activation des filtres
            BtnAucun.Enabled = True
            BtnNiv1.Enabled = True
            BtnNiv2.Enabled = True
            BtnNiv3.Enabled = True
            'LinkLabel1.Enabled = False
     
            Stopwatch.Stop()
            MsgBox("Execution time in seconds: " + CStr(Stopwatch.Elapsed.TotalSeconds))
     
        End Sub
    Grand à wallace1 et Pol63
    Si vous avez des commentaires à faire sur mon code ,n'hésitez pas.
    Je mettrais résolu dans 2,3 jours
    Cordialement

  11. #11
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    150 lignes de code qui pourraient peut etre tenir en une vingtaine ...

    à la place de for i, tu peux utiliser for each
    ca gagne plusieurs lignes de code (déclaration de i et de Helem)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for each nomvariable in odoc.getElementsByTagName("option")

    après il y a aussi linq (sous langage fonctionnel de .net) qui permet de gagner en lignes de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim selectedElement = (from nomvariable in odoc.getElementsByTagName("option") where nomvariable.getAttribute("selected") = True select nomvariable.innerText).FirstOrDefault
    LblGrilleNum.Text = selectedElement
    (il faut que les collections soient prévues pour, sinon la syntaxe demande quelques cast en plus)


    mettre à Nothing une variable ne sert pas à grand chose dans ton cas, .net le fait automatiquement dès que la variable est hors de portée (fin de la sub)


    avec un peu plus de POO les 2 boucles For i = 0 To TblBase.GetUpperBound(0) et For Each ctrl As Control In GroupBox1.Controls pourraient là aussi se simplifier
    quand on a plein de controles pour faire un truc, on ne les pose pas à la main, on les pose par code avec une boucle, et parfois on déporte un peu de code par héritage
    les tableaux ce n'est pas ce qu'il y a de plus pratique non plus, les collections sont beaucoup plus efficaces
    sur ce point je suis moins explicite mais il faudrait connaitre le besoin et s'y attarder un peu plus pour faire un exemple ...

  12. #12
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    bonjour Pol63,
    j'ai bien noter les modifications que tu proposes :
    for each à la place de for i ;
    mettre à Nothing une variable est inutile ;
    des collections à la place de tableaux.

    je vais y travailler
    et dis moi, qu'est ce que tu veux dire par "on déporte un peu de code par héritage" ?
    Merci
    Cordialement.

  13. #13
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par taur33 Voir le message
    .....
    et dis moi, qu'est ce que tu veux dire par "on déporte un peu de code par héritage" ?
    Ce qu'il veut dire c'est que c'est dommage de coder en procédural alors que le langage est Orienté Objet et de facto avec un minimum de réflexion cela pourrait te faire gagner du temps tant par le nombre de lignes tapées que par la mise en place de portions de codes réutilisables.....

    Breff en somme lorsqu'on code avec un langage permettant de faire de la POO alors on fait de la POO !

    Cdlt.


  14. #14
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 167
    Points
    10 167
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par taur33 Voir le message
    bonjour Pol63,
    mettre à Nothing une variable est inutile ;
    Cordialement.
    Là, je suis un peu moins convaincu, même si ce n'est pas réellement faux. Mettre une variable égale à Nothing, 0 (zéro) ou string.empty au moment de la création, permet d'éviter le (maudit) message d'avertissement qui dit à peu près ceci : Tu as utilisé une variable que tu as définie sans lui medttre de valeur. Tu risques d'avoir du trouble avec l'exécutable. Évidemment, dans le style microsoftien c'est plus "Hi-Tech" que cela, mais cela veut dire ça

  15. #15
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Là, je suis un peu moins convaincu, même si ce n'est pas réellement faux. Mettre une variable égale à Nothing, 0 (zéro) ou string.empty au moment de la création, permet d'éviter le (maudit) message d'avertissement qui dit à peu près ceci : Tu as utilisé une variable que tu as définie sans lui medttre de valeur. Tu risques d'avoir du trouble avec l'exécutable.
    oui je parlais plus après utilisation, moi aussi à la déclaration je suffixe pour retirer le message d'avertissement (bien que je ne les lis plus ^^)
    et puis ca évite des problèmes en cas de déclaration dans une boucle

  16. #16
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    je n'arrives pas à réduire le temps de chargement de la répartition en dessous de 2 secondes; mais bon c'est nettement mieux que
    les 15 secondes obtenues avec mon code du début de post
    j'ai tenté de réduire le nombre de ligne du nouveau code en fonction des conseils de Pol63 (sois dit au passage j'ai compris ce que tu voulais dire par
    "on déporte un peu de code par héritage" avec les explications de Wallace )
    Pour ce qui est du Linq cela ne fonctionne pas (odoc est un IHTMLDocument donc pas IEnumerable comme une collection ou un XmlDocument si j'ai bien compris la MSDN)

    Voilà le code :
    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
     
            Call ClearRadioButton(Panel1)                  'effacer le contenu des RadioButton  
            Call Synthèse()                                'mise à jour de la synthèse
     
     
            ' 1.On ouvre la page internet "http://www.pronosoft.com/fr/concours/repartition_lotofoot_7.php"
            'qui contient la répartition
     
            '  A. Creation de la request for the URL. 		
            Dim request As WebRequest = WebRequest.Create("http://www.pronosoft.com/fr/concours/repartition_lotofoot_7.php")
     
            '  B. Get the response.
            Dim response As WebResponse = CType(request.GetResponse(), WebResponse)
     
            ' 3.On récupère le contenu de notre page internet
            Dim sr As New StreamReader(response.GetResponseStream)
            Dim content As String = sr.ReadToEnd
     
            Dim doc As New HTMLDocument()
     
            Dim odoc As IHTMLDocument = DirectCast(doc, IHTMLDocument)
     
            odoc.write(content)
     
            request.Abort()
            response.Close()
            sr.Close()
     
     
     
            ' 2.On commence par récupérer le n° et la date du LotoFoot7
            '   on les trouve entre 2 balises <option> avec l'attribut "selected" : "Grille n&deg;233 du 18/09/15"
            '   <option selected="selected" value="2031">Grille n&deg;233 du 18/09/15</option>
     
            For Each TagElement In odoc.getElementsByTagName("option")
                If TagElement.getAttribute("selected") = True Then
                    LblGrilleNum.Text = TagElement.innerText 'Grille n° XXX du XX/XX/2015
                    'idLF7 = Helem(i).value
                    Exit For
                End If
            Next
     
     
            ' 3.On récupère le  nom des équipes et la répartition 
            Dim dPourcent As Double  ' dPourcent récupère le % pour 1,N ou2
            Dim dMax As Double       ' dMax indique lequel est le + grand
            Dim k As Integer = 0
            Dim m As Integer = 0
            ' Dim Game As String
     
            ' 3.le nom des équipes et la répartition 
            For Each TableElement In odoc.getElementsByTagName("table")
                If TableElement.getAttribute("ID") = "repartition" Then
                    'Game = TableElement.innerText
     
                    'le nom des équipes
                    LblTeamA.Text = TableElement.getElementsByTagName("td")(1).innerText
                    LblTeamB.Text = TableElement.getElementsByTagName("td")(2).innerText
                    LblTeamC.Text = TableElement.getElementsByTagName("td")(13).innerText
                    LblTeamD.Text = TableElement.getElementsByTagName("td")(14).innerText
                    LblTeamE.Text = TableElement.getElementsByTagName("td")(25).innerText
                    LblTeamF.Text = TableElement.getElementsByTagName("td")(26).innerText
                    LblTeamG.Text = TableElement.getElementsByTagName("td")(37).innerText
                    LblTeamH.Text = TableElement.getElementsByTagName("td")(38).innerText
                    LblTeamI.Text = TableElement.getElementsByTagName("td")(49).innerText
                    LblTeamJ.Text = TableElement.getElementsByTagName("td")(50).innerText
                    LblTeamK.Text = TableElement.getElementsByTagName("td")(61).innerText
                    LblTeamL.Text = TableElement.getElementsByTagName("td")(62).innerText
                    LblTeamM.Text = TableElement.getElementsByTagName("td")(73).innerText
                    LblTeamN.Text = TableElement.getElementsByTagName("td")(74).innerText
     
                    'la répartition 
                    For j = 0 To 20 Step 3
                        For i = 0 To 2
     
                            dPourcent = CDbl(Trim(Replace(TableElement.getElementsByTagName("table").Item(k).innerText, "%", "")))
     
                            If dPourcent > dMax Then
                                dMax = dPourcent
                                m = i
                            End If
     
                            k = k + 1
                        Next
                        dMax = 0 : Répartition = Répartition & m
                        TblChoix(j + m) = "X"
                    Next j
     
                    Exit For
                End If
            Next
     
            ' On doit remplacer 0,1 et 2 par 1,N,2. 
            Répartition = Replace(Répartition, "1", "N")
            Répartition = Replace(Répartition, "0", "1")
     
            'on a finit le chargement de la réparttion
            LinkLabel1.LinkVisited = True
            LinkLabel1.LinkColor = Color.Teal
     
     
            Call Tableau_To_RadioButton(Panel1) ' mise à jour des RadioButton
            Call Synthèse()                     ' mise à jour de la synthèse
     
            ' Activation des filtres
            For Each ctrl As Button In GroupBoxFiltres.Controls
                CType(ctrl, Button).Enabled = True
            Next
    Cordialement.

  17. #17
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Hello,

    Pour reprendre le début, il est effectivement plus rapide de prendre les objet request plutôt que de prendre l'objet "browser", sauf bien entendu dans le cas où tu as besoin d'un contrôle qui affiche la page web à l'utilisateur. C'est très con je sais mais je voulais juste le préciser.

    Après pour la manipulation du code HTML (pour retrouver les données qui t'intéresse), je te recommande de jeter un petit coup d'œil au projet suivant sur CodePlex :

    Html Agility Pack

    Principalement parce les pages HTML sont souvent codées de façon totalement dégeulasse (Balise pas fermée correctement, etc.) et ne peuvent donc pas être traitée avec un parser XML qui lui s'attend à un minimum de rigueur sur la forme.

    Bonne chance.

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

Discussions similaires

  1. [Débutant] Exporter des données C# Sur une page Web
    Par massilia68 dans le forum C#
    Réponses: 3
    Dernier message: 16/10/2013, 00h05
  2. récupération de données sur une page web
    Par tomkiki dans le forum Web & réseau
    Réponses: 2
    Dernier message: 26/10/2009, 08h38
  3. Réponses: 2
    Dernier message: 30/09/2009, 16h43
  4. Afficher une image d'une base de données sur une page web
    Par tortuegenie dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/10/2008, 14h11
  5. Recupération de donnée sur une page web apès authentification
    Par Analfabete dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 02/01/2007, 17h10

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