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 :

Pourquoi les GOTO c'est mal ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur amateur VBA Excel
    Inscrit en
    Janvier 2013
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur amateur VBA Excel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 69
    Par défaut Pourquoi les GOTO c'est mal ?
    Bonjour,
    Je lis ça et là qu'il ne faut pas utiliser GOTO.
    Donc bêtement je fais ce qu'on me dit et essaye de ne pas l'utiliser mais ... pourquoi ?

    Merci d'avance :-)

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    je crois que l'exercice devient très intéressant quand on "inverse les rôles".

    alors je m'y colle : pourquoi as-tu besoin de GOTO dans tes projets ? Quel est l'impérieux besoin qui les nécessitât ?


  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Un à joe.levrai.
    Et pour répondre à Limace_hurlante : ce n'est pas que "c'est mal", mais que cela me "fait mal" (torticolis, maux de crâne, etc ...), comme tous les mécanismes de type "spaghettis".
    Rien ne t'empêche d'utiliser de tels mécanismes, mais comprends alors bien que rares seront les masochistes qui accepteront d'analyser et/ou maintenir ton code .

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Un code bien structuré mérite une bonne analyse. Le goto c'est utile dans le cours typique ou le jumping!

    Le

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, un débat sur la chose

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur amateur VBA Excel
    Inscrit en
    Janvier 2013
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur amateur VBA Excel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 69
    Par défaut
    Merci de toute vos réponses !

    Citation Envoyé par joe.levrai Voir le message

    alors je m'y colle : pourquoi as-tu besoin de GOTO dans tes projets ? Quel est l'impérieux besoin qui les nécessitât ?

    Poin d'impérieux besoin, mais juste un instant de temps en temps ou l'amateur novice que suis se dit devant un truc comme ca (voir ci dessous) qu'il y a forcément moyen de faire sans le goto mais est-ce-que ca vaux la peine de chercher ? Est-ce que le GOTO c'est vraiment horrible, voila voila ...

    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
        For i = 1 To FeuilleDeRecherche.Range("A" & Rows.Count).End(xlUp).Row ' on fait une boucle qui va de la preimere ligne à la dernier ligne ecrite
     
             'si (dans les 3 premiers caractère de la ligne i colone 1 il y a "PAU" ET que le code est écrit en gras alors
     
            If Len(FeuilleDeRecherche.Cells(i, 1).Value) < gandeurducode Then GoTo icI:
            If Left(FeuilleDeRecherche.Cells(i, 1).Value, grandeurDuCode) = CodeRecherche Then
                If QueLeGras = True And FeuilleDeRecherche.Cells(i, 1).Font.Bold = False Then
                    GoTo icI
                Else
                    ReDim Preserve LesControls(NVar).LaVariable(0 To j)
                    usf.Controls(BoiteARemplir).AddItem FeuilleDeRecherche.Cells(i, k).Value   'alors on inscrit ce qu'il y a dans la collne 2 de la ligne i dans la liste déroulante
                    LesControls(NVar).LaVariable(j) = i                             'on enregistre le numero i de la ligne dans la variable J
                    j = j + 1                                   ' on change de J pour le prochain tour de la boucle
     
                End If
            End If
    icI:
        Next i                                              ' on change de ligne i
    (je précise au passage que je viens tout juste de comprendre que mon code ne marchera pas car on ne pourrait sois disant pas mettre de variable tableau en public dans les module de classe


    Citation Envoyé par unparia Voir le message
    Bonjour
    Un à joe.levrai.
    Et pour répondre à Limace_hurlante : ce n'est pas que "c'est mal", mais que cela me "fait mal" (torticolis, maux de crâne, etc ...), comme tous les mécanismes de type "spaghettis".
    Rien ne t'empêche d'utiliser de tels mécanismes, mais comprends alors bien que rares seront les masochistes qui accepteront d'analyser et/ou maintenir ton code .
    Je lis partout cette histoire de spagettis, mais qu'est-ce donc ?
    De plus, les seul personne qui serait succeptible de maintenir mon code c'est moi ... j'essaie d’être clair dans mes commentaire pour me comprendre longtemps plus tard mais bon ...


    Citation Envoyé par kiki29 Voir le message
    Salut, un débat sur la chose
    MErci, j'avais cherché : "goto vba" mais j'avais omi de tenter avec d'autre langage de programmation

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Je lis partout cette histoire de spagettis, mais qu'est-ce donc ?
    Pour ne pas avoir a rédiger ce qui l'est déjà depuis kala kala :
    très exactement ceci :
    https://fr.wikipedia.org/wiki/Syndro..._de_spaghettis

    qui est entre autres le résultat de l'utilisation de cela :
    https://fr.wikipedia.org/wiki/Programmation_spaghetti

    EDIT : j'ajoute aux deux lectures ci-dessus la suivante :
    https://fr.wikipedia.org/wiki/Th%C3%A9orie_du_chaos
    Cette dernière ne concerne pas directement le sujet en lui-même, mais devrait t'aider à comprendre certains aspects (bien qu'ils puissent échapper à la perspicacité des uns ou des autres)
    Après, ce n'est qu'une question de choix personnel du risque de se retrouver un jour gêné par une "construction" dans laquelle la modification ou le déplacement d'un seul élément peut mettre en péril l'ensemble des éléments, sauf à passer un temps quelquefois fou à déterminer toutes les conséquences possibles au sein d'imbrications, de ramifications, etc ....
    Qu'un bug, un défaut, un cas particulier non prévu, etc ... intervienne et le risque devient alors grand de tenter un "rafistolage" qui ne mettrait pas en péril un autre élément, voire l'ensemble des éléments.
    Voilà. Tout le reste ne serait que baratin.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,Un programme spaghettis, est un programme linéaire d'un seule tenant. On titre sur un spaghettis et on déroule le code du sub au end sub!Un langage spaghettis c'est un train qui part de paris et s'arrête à lyon.Un goto c'est un aiguillage, si je place un changement de rail sur ma voie ferrée, je change la destination de mon train, Marseille par exemple. En soit c'est simple mais ce n'est plus le même programme. Je l'ai fait d'un claquement de doigt, mais ai'je vraiment analysé les conséquences?La modification du tracé exige une analyse et la réécriture d'une partie du code pas de jump dans toutes les directions qui rendent le code illisible et In maintenable!

    Par exemple je viens de faire un explication spaghettis!
    Dernière modification par Invité ; 31/01/2017 à 10h34.

  9. #9
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 678
    Par défaut
    Bonjour,

    sans parler des solutions qui poussent a utiliser des goto, le cas dans lequel la solution goto est la plus efficace en VBA et celle recommandée est lors de la gestion des erreurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    On Error GoTo plop
    'code
    plop:
    'code
    http://silkyroad.developpez.com/VBA/...rreurs/#LIII-A
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je reprends à mon compte la remarque de Jacques (Unparia) concernant la maintenance du code.

    Actuellement, je suis entrain de reprendre un code réalisé il y a cinq ans pour un client. A l'époque, cela me paraissait plus facile de mettre des Goto "dans tous les coins" pour atteindre et sélectionner directement des zones nommées dans un fichier aux multiples onglets. Aujourd'hui, c'est un casse-tête car il faut refaire chaque chemin pour voir à quoi correspondent les zones.

    Je trouve plus simple de travailler avec des procédures paramétriques où je lui indique notamment les informations nécessaires au traitement (onglet, etc...) On sait immédiatement quelle partie du fichier est concernée et ce qu'on traite, c'est du temps gagné.

  11. #11
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour à tous,

    J'ai du, il y a quelques temps, faire face à un code écrit à grand renforts de Goto et de conversion de caractères.
    Il s'agissait tout simplement d'un virus installant un cheval de Troie sur le pc.

    Je le cite à titre d'exemple car si, pour faire un virus, l'on utilise des Goto, c'est uniquement dans le but de "tromper" son monde en augmentant la difficulté de "lire" le code.

  12. #12
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Pour compléter l'explication de pijaku

    Le but de la méthode des Goto dans les procédures malveillantes, c'est de créer ce qu'on appelle des "codes morts". Ces portions de codes ne servent à rien, et le jeu des Goto est là pour entrer dans ces portions de code mort, qui ne servent à rien, ne font rien que d'exécuter des banalités qui n'ont aucune action ..... jusqu'à arriver sur les 3 seules lignes de code qui ont une réelle action (malveillante au demeurant).

    En gros, on noie un projet VBA avec du code obfusqué, illisible, avec des tonnes de "saut d'exécution" par le haut et par le bas ... pour rendre très compliqué la compréhension et la détection de l'infimie partie du projet qui n'est pas du code mort

  13. #13
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour Joe,

    Le but de la méthode des Goto dans les procédures malveillantes, c'est de créer ce qu'on appelle des "codes morts".
    Tout à fait.
    Dans l'exemple que je cite, le code initial (que j'ai conservé) est de 321 lignes pour, au final, un code de 19 lignes utiles.

  14. #14
    Membre confirmé
    Homme Profil pro
    Développeur amateur VBA Excel
    Inscrit en
    Janvier 2013
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur amateur VBA Excel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 69
    Par défaut
    Alors dans l'idée de faire un code le plus lisible possible, je suis confronté à un cas ou j'ai deux possibilité de codage.
    Quelle est la meilleure selon vous ? (le moins spaghetti)

    Solution 1
    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
    private sub combobox_change
     
        'bout de code ou l'on implémente pleins de text box
     
       call LancerLesVerifs
    end sub
     
    sub LancerLesVerifs
     
       'bout de code ou l'on vérifie si les text box on le bon type de donées/ne sont pas vide
       if verif = true then call faireLEsCalculs
    end sub
     
    Sub FaireLEsCalculs
       'bout de code ou l'on adiitione/multiplie etc les info qui sont dans les textbox et affiche un sous total
       call ToutCalculer
     
    end sub
     
    Sub ToutCalculer
     
       'bout de code on l'on prend tous les sous-taux, on les additionne et les affiche
     
    end sub
    Solution 2
    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
    private sub combobox1_change
     
       call Implementation
       if LancerLesVerifs = false exit sub
       Call FaireLEsCalculs
       call ToutCalculer
     
    end sub
     
    Sub Implementation
        'bout de code ou l'on implémente pleins de text box
    end sub 
     
    function LancerLesVerifs
    dim verif as boolean
       'bout de code ou l'on vérifie si les text box on le bon type de donées/ne sont pas vide
       LancerLesVerifs = verif 
    end function
     
    Sub FaireLEsCalculs
       'bout de code ou l'on adiitione/multiplie etc les info qui sont dans les textbox et affiche un sous total
    end sub
     
    Sub ToutCalculer
       'bout de code on l'on prend tous les sous-taux, on les additionne et les affiche
    end sub

  15. #15
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 678
    Par défaut
    Salut,
    La seconde solution, car tu decomposes sans avoir forcement a enchainer tes etapes de code.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  16. #16
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Je réponds quant à moi sans hésitation que je ne vois pas le rapport avec le sujet (utilisation de GOTO) de cette discussion. Je le verrais assez si cette nouvelle question était en vue de comparer un code avec GOTO et un avec de quoi ne pas utiliser GOTO, mais ne vois pas une telle comparaison dans cette dernière question posée.

  17. #17
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut la question peux toutefois se poser...
    Quand Goto est plus rapide...
    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
    Sub test()
    Dim i&, a&, n&, t As Single
     
    n = 100000000
    t = Timer
    Do
        a = a + 1
        If a = n + 10 Then Exit Do
    Loop While a <= n
    Debug.Print Timer - t
    t = Timer
    For i = 1 To n
        a = a + 1
        If i = n + 10 Then Exit For
    Next i
    Debug.Print Timer - t
    a = 0
    t = Timer
    debut:
        a = a + 1
        If a = n Then GoTo fin
    GoTo debut
    fin:
    Debug.Print Timer - t
    End Sub

  18. #18
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour à tous,

    pijaku, pourquoi avoir ajouté If i = n + 10 Then Exit xxx aux 2 premières boucles ?
    Ca biaise le test. Elles ont 2 fois plus de comparaisons à faire, le test étant déjà inclus dans le next ou loop.
    Ca aurait pu, pourquoi pas. Mais si on les commente goto repasse derrière chez moi.
    eric

    Edit :
    j'ajoute même que dans le For a = a + 1 est en trop puisqu'il se retrouve à gérer une variable supplémentaire qu'on a déjà avec i en comparaison aux 2 autres boucles. Là le For est 3 fois plus rapide que le Goto.

  19. #19
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    c'est vrai qu'avec Goto tes tests vont plus vite, car il n'y a pas de pseudo énumération (Boucle For/Next) ou de boucle conditionnelle (Do/Loop While)
    Cependant, la question qui me vient, c'est de savoir si justement ce n'est la construction de l'exemple qui est biaisée ? Comme finir par fabriquer le résultat qu'on cherche à obtenir.

    Ici, on se contente d'incrémenter des variables et de cesser "à un moment donné". Là, effectivement, on place deux Goto très proches qui sont plutôt là pour remplacer une boucle standard, que d'effectuer de réels sauts de code.

    Qu'en est-il s'il fallait également effectuer des traitements annexes, ou même si on devait imbriquer plusieurs boucles ? Ou si on devait faire de saut entre des boucles non imbriquées ?
    Je ne crois pas qu'on va plomber les performances de traitement (quoique...), mais on sera surtout obligé de monter des cascades de Goto qui là rendront toute la pertinence des arguments avancés dans cette discussion, quant à la perte de cohérence quand on lit/relit le code, ou qu'un jour on se décide à replonger dedans pour le faire évoluer.


    EDIT : eriiic pour les if qui plombent les résultats. Ici, ils sont inutiles, mais dans des cas plus concrets on met souvent dans le Do/While une issue de secours. Mais pour la boucle For/Next c'est jamais bien utile si on a déjà sécurité l'étendue du For

  20. #20
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    En soit le goto, ce n'est pas vraiment le problème !

    Après tout on revient aux prémices; notre bon vieux assembleur, qui quoique l'on dise est fortuitement d'actualité. Et oui le goto c'est son truc!

    Le problème du goto c'est la maintenance curative et évolutive. Un code découpé et module et méthode sera et réutilisable ,maintenables et compréhensible.

    Dans un programme spaghettis, je peux faire un branchement intempestif vers une autres étiquette afin d'ajouter un fonctionnalité, c'est facile mais ca peut rapporter trop gros!

    Il faut avoir l'ambition de croire que notre programme nous survivrais; et que d'autre génération auront en charge de le maintenir.

    Personnellement je garde espoirs.

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

Discussions similaires

  1. [Enigme] les soldes c'est mal..
    Par Julien59 dans le forum Enigmes
    Réponses: 57
    Dernier message: 12/06/2009, 09h32
  2. Les globales c'est le mal .. oui mais pourquoi?
    Par sloshy dans le forum Débuter
    Réponses: 4
    Dernier message: 26/02/2009, 15h45
  3. Pourquoi les GOTO ne sont pas appréciés ?
    Par Hoffa dans le forum Débuter
    Réponses: 6
    Dernier message: 29/10/2008, 12h54

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