none
webBrowser (2/3) comment charger une autre page par clique sur hyperlien ? RRS feed

  • Question

  • Bonjour,

    Question 2/3, depuis webBrowser1 qui affiche une page Internet, je cherche comment lancer une autre page dans le même navigateur personnel (objet de la troisième question), donc à lancer une seconde page en remplacement de la première en clique sur un hyperlien de cette dernière.
    On m'a transmis des liens de code (Patrice), mais je ne sais les exploiter et encore moins les comprendre, voici ce que ça dit, mais ça ne doit pas être complet :

    Function GetTableRowCount(ByVal TableID As String) As Integer
    
     ' charger une page Web avec une TABLE dont l'attribut ID est Table1
    
     ' Invoke()
    
     ' System.Windows.Forms.HtmlElement()
    
     ' http://msdn.microsoft.com/fr-fr/library/system.windows.forms.htmldocument.getelementbyid.aspx
    
     Dim Count As Integer = 0
    
     If (WebBrowser1.Document IsNot Nothing) Then
    
      Dim TableElem As System.Windows.Forms.HtmlElement = WebBrowser1.Document.GetElementById(TableID)
    
      If (TableElem IsNot Nothing) Then
    
      For Each RowElem As System.Windows.Forms.HtmlElement In TableElem.GetElementsByTagName("TR")
    
       Count = Count + 1
    
      Next
    
      Else
    
      Throw (New ArgumentException("No TABLE with an ID of " & TableID & " exists."))
    
      End If
    
     End If
    
     GetTableRowCount = Count
    
     End Function
    
    
    
    

    Deux questions :
    -1- Le seul problème, il est de taille, et que je ne sais ni ou ni comment charger une table ayant pour ID "Table1" en appelant mon lien ?
    -2- Je ne sais pas non plus ensuite appeler la fonction avec Invoke, et d'où et à quel moment ?

    Voici mon code en entier, ça peut servir, étant entendu que deux fontions et procédures ne tournent pas (favoris et appel autre page (fonction)).

    ' browser form1
    
    Option Explicit On
    
    
    
    Public Class Form1
    
     Dim pic As Byte ' timer
    
     Dim z As Int32 = 100 ' zoom
    
    
    
     Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
     'TextBox1.Text = "http://irolog.free.fr"
    
     TextBox1.Text = "http://reservoblige.free.fr"
    
     WindowState = 2 ' = maximum (fixe)
    
     Call Button5_Click(sender, e) ' go
    
     End Sub
    
    
    
     Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
    
     If WindowState = 1 Then Exit Sub ' réduit en barre de tâche
    
     If Me.Height < 100 Then Me.Height = 100
    
     If Me.Width < 200 Then Me.Width = 250
    
     If SplitContainer1.SplitterDistance < Button1.Top + Button1.Height + 1 Then
    
      SplitContainer1.SplitterDistance = Button1.Top + Button1.Height + 1
    
     End If
    
     SplitContainer1.SplitterDistance = Button1.Top + Button1.Height + 1
    
     Button1.Left = 1
    
     Button2.Left = Me.Width - (Button2.Width + 17) ' 17 = bordures
    
     Button5.Left = Button2.Left - (1 + Button2.Width)
    
     TextBox1.Left = Button1.Left + Button1.Width + 1
    
     TextBox1.Width = (Button5.Left - +1) - TextBox1.Left
    
     End Sub
    
    
    
     Sub WebBrowser1_Navigating(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) Handles WebBrowser1.Navigating
    
     pic = 1
    
     Timer1.Enabled = True ' cherche 
    
     End Sub
    
    
    
     Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    
     TextBox1.Text = WebBrowser1.Url.ToString() ' chargé
    
     Timer1.Enabled = False ' trouvé
    
     End Sub
    
    
    
     Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    
     Select Case pic ' terre qui tourne sur bouton Go
    
      Case 1 : Button5.Image = My.Resources.t2
    
      Case 2 : Button5.Image = My.Resources.t3
    
      Case 3 : Button5.Image = My.Resources.t4
    
      Case 4 : Button5.Image = My.Resources.t5
    
      Case 5 : Button5.Image = My.Resources.t1
    
     End Select
    
     pic = pic + 1
    
     If pic = 6 Then pic = 1
    
     End Sub
    
    
    
     Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    
     If (e.KeyCode = Keys.Enter) Then WebBrowser1.Navigate(TextBox1.Text) ' <rc> dans texteBox
    
     End Sub
    
    
    
     Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
     WebBrowser1.GoBack() ' retour
    
     End Sub
    
    
    
     Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    
     ContextMenuStrip1.Show(Windows.Forms.Cursor.Position.X, Windows.Forms.Cursor.Position.Y)
    
     ContextMenuStrip1.Visible = True
    
     End Sub
    
    
    
     Sub RafraîchirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RafraîchirToolStripMenuItem.Click
    
     WebBrowser1.Refresh() ' rafraîchit
    
     End Sub
    
    
    
     Sub StopToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StopToolStripMenuItem.Click
    
     WebBrowser1.Stop() ' ' stop rechercher
    
     End Sub
    
    
    
     Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
    
     WebBrowser1.Navigate(TextBox1.Text) ' go
    
     End Sub
    
    
    
     Sub ZoomToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ZoomToolStripMenuItem.Click
    
     ' zoom
    
     Dim r As String
    
     r = InputBox("Régler le zoom entre 25 et 400" & vbLf & vbLf & "Zoom actuel : " & z, "Réglage du zoom", "")
    
     If Len(Trim(r)) < 2 Or Len(Trim(r)) > 3 Then Exit Sub
    
     Try
    
      z = Val(r) ' z = as int32 (global)
    
      z = Fix(z)
    
      If z < 25 Or z > 400 Then Exit Sub
    
     Catch ex As Exception
    
      Exit Sub
    
     End Try
    
     WebBrowser1.ActiveXInstance.ExecWB(63, 0, CInt(z))
    
     End Sub
    
    
    
     Sub ChercherToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ChercherToolStripMenuItem.Click
    
     WebBrowser1.ActiveXInstance.ExecWB(32, 0) ' chercher
    
     End Sub
    
    
    
     Sub FavorisToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FavorisToolStripMenuItem.Click
    
     ' favoris
    
     MsgBox("future gestion de l'appel des favoris")
    
     Dim shelluihelper As Object = New ShellUIHelper()
    
     <ComImport(), Guid("64AB4BB7-111E-11D1-8F79-00C04FC2FBE1")> _
    
     ShellUIHelper.ShowBrowserUI("OrganizeFavorites", 0)
    
     If shelluihelper IsNot Nothing AndAlso System.Runtime.InteropServices.Marshal.IsComObject(shelluihelper) Then
    
      System.Runtime.InteropServices.Marshal.ReleaseComObject(shelluihelper)
    
     End If
    
     End Sub
    
    
    
     Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    
     WebBrowser1.Dispose() ' libère
    
     End
    
     End Sub
    
    
    
     Function GetTableRowCount(ByVal TableID As String) As Integer
    
     ' System.Windows.Forms.HtmlElement()
    
     ' http://msdn.microsoft.com/fr-fr/library/system.windows.forms.htmldocument.getelementbyid.aspx
    
     ' charger une page Web avec une TABLE dont l'attribut ID est Table1
    
     ' Invoke()
    
     Dim Count As Integer = 0
    
     If (WebBrowser1.Document IsNot Nothing) Then
    
      Dim TableElem As System.Windows.Forms.HtmlElement = WebBrowser1.Document.GetElementById(TableID)
    
      If (TableElem IsNot Nothing) Then
    
      For Each RowElem As System.Windows.Forms.HtmlElement In TableElem.GetElementsByTagName("TR")
    
       Count = Count + 1
    
      Next
    
      Else
    
      Throw (New ArgumentException("No TABLE with an ID of " & TableID & " exists."))
    
      End If
    
     End If
    
     GetTableRowCount = Count
    
     End Function
    
    
    
    End Class ' form1
    
    
    
    
    
    'Public Class ShellUIHelper
    
    'End Class
    
    
    
    

    En vous remerciant de donner des exemples testés, merci beaucoup, cordialement.

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Modifié EhJoe mardi 1 février 2011 12:11 correction 1
    mardi 1 février 2011 11:57

Réponses

  • Le problème est que cette page utilise sur les liens target="_blank" ce qui demande explictement l'ouverture de ce lien dans une nouvelle fenêtre. J'ai fait un test avec une page comme :

    <html>
    <body>
    <a href="http://www.microsoft.com/" target="_blank" id="ms">Microsoft</a>
    </body>
    </html>
    

    pour simuler ce comportement.

    Donc quand je clique cela ouvre effectivement une nouvelle fenêtre. Je peux supplanter ce comportement avec :

      Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        For Each element As HtmlElement In WebBrowser1.Document.GetElementsByTagName("A")
          If Not element.GetAttribute("target") Is Nothing Then
            element.SetAttribute("target", "_self")
          End If
        Next
      End Sub
    

    Donc quand le document est récupéré je parcours tous les liens et si un attribut target est présent, je le remplace par _self ce qui ouvrira la nouvelle page dans la même fenêtre. Cela pourrait suffire dans ce cas précis.

    Généralement il reste quand même préférable d'afficher des pages sur lesquels on a le contrôle (par exemple une page pourrait lancer une nouvelle fenêtre via script et ce comportement serait plus compliqué à gérer).

    J'ai lu la question 3/3 en diagonale mais en première lecture j'ai l'impression que c'est le même problème que celui là ?


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Marqué comme réponse EhJoe mercredi 2 février 2011 10:25
    mardi 1 février 2011 18:05
    Modérateur
  • A partir de l'évènement NewWindow (celui qui génère l'ouverture dans IE) on peut obtenir l'élement actif ainsi que le lien cliqué pour l'ouvrir dans le webbrowser et annuler l'ouverture dans IE :

     Private Sub WebBrowser1_NewWindow(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles WebBrowser1.NewWindow
        Dim elementActif As HtmlElement = WebBrowser1.Document.ActiveElement  'on obtient l'element actif
        WebBrowser1.Navigate(elementActif.GetAttribute("href")) 'on obtient le lien de cet élément, on navigue vers ce lien
        e.Cancel = True 'on annule l'ouverture dans IE
      End Sub
    
    Pas entièrement testé mais à priori pour l'exemple avec reservoblige ça fonctionne !


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement.
    mardi 1 février 2011 18:29
  • Bonjour Michel,

    Tout d'abord un grand merci.

    En fait la méthode fonctionne en effet avec le lien utilisé (reservoblige) mais pas si par exemple j'appelle "Google.fr" qui s'affiche, mais si ensuite je clique sur un lien, là ça blante et ça écrit dans la barre d'adresse "About-blank" et rien à l'écran, or il devrait y avoir la page du lien ...

    Je pense que je vais arrêter là, car à l'origine c'était sur conseil pour améliorer une application de recherche de lien que je m'y suis mis, avec le souvenir sur vb6 que c'était un truc infernal, la preuve. Dans mon application de recherche de lien ça fonctionne désormais très bien (pour le moment), mais je passe directement le lien au browser via une form qui sert de variable numérique au élément numériques des liens, donc aucun risque de se planter réelllement. Suite à ça j'ai voulu tenter de faire mon browser car ça évite les pertes en hauteur d'image, ça va plus vite, etc... Mais bon ... faut se rendre à l'évidence, c'est trop compliqué, trop long à mettre en oeuvre, les fonctions sont difficiles à identifier et en anglais, alors je pense que je vais laisser tomber, tant pis, je n'en ai pas un besoin absolu, je crois que le browser est davantage utilisable ponctuellement dans une application pour une tâche déterminée, mais que si on veut faire son browser personnel c'est une autre paire de manches.

    Je vais voir ce que donne, ce que propose "Patrice", et selon je verrais si je poursuis ?

    Encore chaleureusement merci.

    Cordialement.

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Marqué comme réponse EhJoe mercredi 2 février 2011 10:25
    mercredi 2 février 2011 09:52
  • Bonjour Patrice et merci beaucoup, ton code :

     Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
      TextBox1.Text = WebBrowser1.Url.ToString() ' chargé
      Timer1.Enabled = False ' trouvé
      For Each element As HtmlElement In WebBrowser1.Document.GetElementsByTagName("A") ' Patrice
       If Not element.GetAttribute("target") Is Nothing Then element.SetAttribute("target", "_self")
      Next
     End Sub
    
    

    Ce code affiche mieux, je suis resté dans mon browser sauf qu'il laisse passer les fenêtres popup (pub)... ce qui ouvre néanmoins l'IE, ce qui entraine une autre gestion, ça ne fini jamais, chaque élément en implique un autre ...

    Je vais laisser tomber ça je pense car en fait la documentation souvent en anglais n'est pas aisée, et les fonctions du browser sont trop limitées, j'ai peur de ne pas y arriver ou d'y passer un mois (ça fait déjà une semaine), hors je ne veux pas vous faire perdre votre temps (ni le mien), je crois que le browser est davantage performant pour compléter une application personnelle qu de réaliser son propre explorer, d'ailleurs dans mon application qui change les liens numériques il fonctionne très bien.

    Donc je laisse tomber la tentative de réaliser un vrai browser, on rame de trop, il est trop incomplet pour y arriver raisonnablement.

    Je te remercie beaucoup de ton aide, cordialement.

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Marqué comme réponse EhJoe mercredi 2 février 2011 10:25
    mercredi 2 février 2011 10:25

Toutes les réponses

  • Je ne suis toujours pas sûr de bien comprendre ce que tu veux dire. Si on clique sur un lien affiché dans le webbrowser, le comportement de base est de remplacer la page précédente par la nouvelle comme dans un navigateur normal. Donc rien de spécial à faire. Si le problème est que lorsqu'on clique sur un lien de la page on veut ouvrir une autre page que celle indiquée dans le lien cela donne :

      Private Sub WebBrowser1_Navigating(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) Handles WebBrowser1.Navigating
        If e.Url.ToString = "http://www.microsoft.com/" Then
          WebBrowser1.Navigate("http://www.oracle.com/")
        End If
      End Sub
    

    Donc si l'utilisateur clique dans la page vers un lien allant vers http://www.microsoft.com/ c'est la page http://www.oracle.com/ qui va s'ouvrir dans le webbrowser.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mardi 1 février 2011 12:39
    Modérateur
  • Patrice, j'ai compris où tu ne comprenais pas :o)

    Ce serait mieux si tu avais le programme, je t'envoies si tu veux, tu peux me donner ton adresse, la mienne en bas de ma signature ...

    En fait, si tu cliques sur un hyperlien internet d'une adresse de "site" différente du site appelé sur lequel est l'hyperlien, ben ça ouvre l'IE et ça lui envoie le lien, n'est-ce pas clair désormais ?

    Exemple

    J'appelle avec mon browser en premier http://irolog.free.fr (sous entendu ici = index.htm ou html), ça ouvre, ok

    Puis, depuis cette page en cliquant sur une photo hyperlien internet j'appelle l'adresse qui suit : http://irolog.free.fr/irolog_vente/tarot4_v/tarot4.htm ça ouvre, ok, car c'est la même adresse de base "irolog.free.fr"

    MAIS

    Si en premier j'appelle cette page : http://reservoblige.free.fr/ ça marche évidemment, mais si ensuite en cliquand sur un des hyprlien j'appelle cette autre page : http://www11.minefi.gouv.fr/boi/boi2005/13rcpub/textes/13i1005/13i1005.pdf ÇA NE MARCHE PLUS, c'est Internet Explorer qui s'ouvre CAR :

    irolog.free.fr est différent de 11.minefi.gouv.fr 

    C'est comme si on lui demandait d'ouvrir dans un second explorer (mais pas le mien hélas, l'IE reprend la main par défaut), sauf que je ne gère pas ça, pas encore, c'est l'objet de ma question 3 du forum ...

    Maintenant je crois que tout va être au diapason, c'est pourquoi j'ai besoin de récupérer l'hyperlien cliqué afin de le repasser dans NAVIGATE, comprends-tu :o)  ?

    Bon, je te laisse la plume, cordialement.

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    mardi 1 février 2011 13:02
  • Le problème est que cette page utilise sur les liens target="_blank" ce qui demande explictement l'ouverture de ce lien dans une nouvelle fenêtre. J'ai fait un test avec une page comme :

    <html>
    <body>
    <a href="http://www.microsoft.com/" target="_blank" id="ms">Microsoft</a>
    </body>
    </html>
    

    pour simuler ce comportement.

    Donc quand je clique cela ouvre effectivement une nouvelle fenêtre. Je peux supplanter ce comportement avec :

      Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        For Each element As HtmlElement In WebBrowser1.Document.GetElementsByTagName("A")
          If Not element.GetAttribute("target") Is Nothing Then
            element.SetAttribute("target", "_self")
          End If
        Next
      End Sub
    

    Donc quand le document est récupéré je parcours tous les liens et si un attribut target est présent, je le remplace par _self ce qui ouvrira la nouvelle page dans la même fenêtre. Cela pourrait suffire dans ce cas précis.

    Généralement il reste quand même préférable d'afficher des pages sur lesquels on a le contrôle (par exemple une page pourrait lancer une nouvelle fenêtre via script et ce comportement serait plus compliqué à gérer).

    J'ai lu la question 3/3 en diagonale mais en première lecture j'ai l'impression que c'est le même problème que celui là ?


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Marqué comme réponse EhJoe mercredi 2 février 2011 10:25
    mardi 1 février 2011 18:05
    Modérateur
  • A partir de l'évènement NewWindow (celui qui génère l'ouverture dans IE) on peut obtenir l'élement actif ainsi que le lien cliqué pour l'ouvrir dans le webbrowser et annuler l'ouverture dans IE :

     Private Sub WebBrowser1_NewWindow(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles WebBrowser1.NewWindow
        Dim elementActif As HtmlElement = WebBrowser1.Document.ActiveElement  'on obtient l'element actif
        WebBrowser1.Navigate(elementActif.GetAttribute("href")) 'on obtient le lien de cet élément, on navigue vers ce lien
        e.Cancel = True 'on annule l'ouverture dans IE
      End Sub
    
    Pas entièrement testé mais à priori pour l'exemple avec reservoblige ça fonctionne !


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement.
    mardi 1 février 2011 18:29
  • Bonjour Michel,

    Tout d'abord un grand merci.

    En fait la méthode fonctionne en effet avec le lien utilisé (reservoblige) mais pas si par exemple j'appelle "Google.fr" qui s'affiche, mais si ensuite je clique sur un lien, là ça blante et ça écrit dans la barre d'adresse "About-blank" et rien à l'écran, or il devrait y avoir la page du lien ...

    Je pense que je vais arrêter là, car à l'origine c'était sur conseil pour améliorer une application de recherche de lien que je m'y suis mis, avec le souvenir sur vb6 que c'était un truc infernal, la preuve. Dans mon application de recherche de lien ça fonctionne désormais très bien (pour le moment), mais je passe directement le lien au browser via une form qui sert de variable numérique au élément numériques des liens, donc aucun risque de se planter réelllement. Suite à ça j'ai voulu tenter de faire mon browser car ça évite les pertes en hauteur d'image, ça va plus vite, etc... Mais bon ... faut se rendre à l'évidence, c'est trop compliqué, trop long à mettre en oeuvre, les fonctions sont difficiles à identifier et en anglais, alors je pense que je vais laisser tomber, tant pis, je n'en ai pas un besoin absolu, je crois que le browser est davantage utilisable ponctuellement dans une application pour une tâche déterminée, mais que si on veut faire son browser personnel c'est une autre paire de manches.

    Je vais voir ce que donne, ce que propose "Patrice", et selon je verrais si je poursuis ?

    Encore chaleureusement merci.

    Cordialement.

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Marqué comme réponse EhJoe mercredi 2 février 2011 10:25
    mercredi 2 février 2011 09:52
  • Bonjour Patrice et merci beaucoup, ton code :

     Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
      TextBox1.Text = WebBrowser1.Url.ToString() ' chargé
      Timer1.Enabled = False ' trouvé
      For Each element As HtmlElement In WebBrowser1.Document.GetElementsByTagName("A") ' Patrice
       If Not element.GetAttribute("target") Is Nothing Then element.SetAttribute("target", "_self")
      Next
     End Sub
    
    

    Ce code affiche mieux, je suis resté dans mon browser sauf qu'il laisse passer les fenêtres popup (pub)... ce qui ouvre néanmoins l'IE, ce qui entraine une autre gestion, ça ne fini jamais, chaque élément en implique un autre ...

    Je vais laisser tomber ça je pense car en fait la documentation souvent en anglais n'est pas aisée, et les fonctions du browser sont trop limitées, j'ai peur de ne pas y arriver ou d'y passer un mois (ça fait déjà une semaine), hors je ne veux pas vous faire perdre votre temps (ni le mien), je crois que le browser est davantage performant pour compléter une application personnelle qu de réaliser son propre explorer, d'ailleurs dans mon application qui change les liens numériques il fonctionne très bien.

    Donc je laisse tomber la tentative de réaliser un vrai browser, on rame de trop, il est trop incomplet pour y arriver raisonnablement.

    Je te remercie beaucoup de ton aide, cordialement.

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Marqué comme réponse EhJoe mercredi 2 février 2011 10:25
    mercredi 2 février 2011 10:25