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

WinDev Discussion :

Récupérer dans un enregistrement existant certaines données de l'enregistrement précédent [WD25]


Sujet :

WinDev

  1. #1
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2018
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2018
    Messages : 151
    Points : 107
    Points
    107
    Par défaut Récupérer dans un enregistrement existant certaines données de l'enregistrement précédent
    Bonjour à tous,
    je souhaiterais modifier un enregistrement existant en récupérant certaines données de l'enregistrement précédent. Si j'arrive bien à modifier la fiche, je me heurte à son enregistrement. Pour ce faire, j'ai récupéré un fichier test (Adr_Livraison) comportant 5 rubriques : ID, Client, Code Postal, Ville et Pays. Ce fichier comporte 5 enregistrements, tous remplis sauf le dernier avec les rubriques Code Postal, Ville et Pays vides. Lors de l'affichage de la table, je sélectionne l'enregistrement 5, clic sur bouton modifier mène à l'affichage de la fiche avec les champs Code postal, Ville et Pays vides et ID et Client corrects. Sur clic du BTN-Reprendre, j'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELON Dialogue("Voulez-vous recopier les éléments de la fiche précédente ?")
    	CAS 1
    		//lecture enregistrement précédent
    		HLitPrécédent(Adr_Livraison,IDAdresseLivraison)
    		//choix des champs
    		SC_Fiche.SAI_Ville = Adr_Livraison.Ville
    		SC_Fiche.SAI_CodePostal = Adr_Livraison.CodePostal
    		SC_Fiche.SAI_Pays = Adr_Livraison.Pays
     
    	CAS 2
    	// Ne rien faire	
    FIN
    Ma fiche de l'enregistrement 5 prend bien en compte les valeurs Code Postal, Ville et Pays de l'enregistrement précédent. Par contre le BTN_Valider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    EcranVersFichier()
    HEnregistre(Adr_Livraison)
    // Ferme la fenêtre
    Ferme("",Vrai)
    n'est pas opérant. Il ne prend pas en compte la modification de la fiche, les champs Code Postal, Ville et Pays restent vides dans la table et pire la rubrique Client de la fiche 4 prend la valeur de la fiche 5. Malgré mon acharnement, je n'arrive pas à trouver la solution, aussi conseils et pistes à suivre sont les bienvenus.

    Bonne journée
    Bernisch

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Dans le premier cas tu affectes les valeurs "à la main", et pas dans le deuxième cas.
    J'en déduis que les champs de saisie ne sont pas liés aux rubriques du fichier.
    Donc soit tu affectes à la main lors de l'enregistrement, soit tu lies les champs de saisie aux rubriques du fichier.

    Tatayo.

  3. #3
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2018
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2018
    Messages : 151
    Points : 107
    Points
    107
    Par défaut Précisions
    Citation Envoyé par tatayo Voir le message
    Bonjour,
    Dans le premier cas tu affectes les valeurs "à la main", et pas dans le deuxième cas.
    J'en déduis que les champs de saisie ne sont pas liés aux rubriques du fichier.
    Donc soit tu affectes à la main lors de l'enregistrement, soit tu lies les champs de saisie aux rubriques du fichier.

    Tatayo.
    je suppose que tu ne parles pas des CAS 1 et CAS 2 de SELON Dialogue. Les valeurs sont bien affectées avec le premier code dans la fiche identifiée ID5. Les champs sont bien liés aux rubriques puisqu'une modification "à la main" est prise en compte. Je ne comprends pas pourquoi le deuxième code ne s'exécute pas et surtout pourquoi il y a modification de la fiche précédente.
    Merci pour ton aide

    Bernisch

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Il faut comprendre la logique derrière les fonctions hXxxx()
    Il y a un pointeur sur chaque fichier (une flèche, un marque-page).
    Quand on exécute une instruction hEnregistre() ou hModifie(), ça modifie l'enregistrement visé par ce pointeur.

    Quand on exécute une instruction hLitSuivant, hLitPrecédent, hLitRecherchePremier () etc ..., ça déplace le pointeur.

    Du coup ici :
    Quand tu affiches la fenêtre, ton pointeur pointe vers un enregistrement (le n°5)
    Tu as besoin d'aller lire l'enregistrement n°4
    Sauf action particulière, le hEnregistre qui suit va donc modifier l'enregistrement n°4

    2 options pour corriger :

    Option n°1 : Si l'utilisateur demande à recopier les infos de l'enreg. précédent, remettre le pointeur à sa place avant de continuer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                    HLitPrécédent(Adr_Livraison,IDAdresseLivraison)
    		//choix des champs
    		SC_Fiche.SAI_Ville = Adr_Livraison.Ville
    		SC_Fiche.SAI_CodePostal = Adr_Livraison.CodePostal
    		SC_Fiche.SAI_Pays = Adr_Livraison.Pays
                    HLitSuivant(Adr_Livraison,IDAdresseLivraison)     //   <-- Pour revenir à l'enregistrement qui nous intéresse
    Option n°2 : dans le bouton Valider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    HlitRecherche( Adr_Livraison , ??? , ??? )     //   Je ne connais pas exactement ta structure,  mais se repositionner sur l'enregistrement qui nous intéresse 
    EcranVersFichier()
    HEnregistre(Adr_Livraison)
    // Ferme la fenêtre
    Ferme("",Vrai)

    Il y a peut-être une autre piste en utilisant les contextes. J'en parle au cas où, mais je viens de regarder la documentation, et a priori, ce n'est pas adapté.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2018
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2018
    Messages : 151
    Points : 107
    Points
    107
    Par défaut Merci popur les explications
    Bonsoir tbc92,

    merci pour tes explications sur le déplacement du pointeur. J'ai choisi ta première option et cela fonctionne parfaitement.

    Bonne fin de journée
    Bernisch

  6. #6
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2018
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2018
    Messages : 151
    Points : 107
    Points
    107
    Par défaut je vais trop vite
    Je suis allé trop vite, cela fonctionne parfaitement avec le fichier test. En essayant de transposer la chose dans le fichier dans lequel je veux obtenir le même résultat, je suis confronté au message suivant :
    La source de données <7220> n'est pas initialisée.
    -S'il s'agit d'un fichier de données, le fichier n'a pas été trouvé dans l'analyse <D:\Mes Projets\Mes_Oeuvres\Mes_Oeuvres_1.wdd> ou n'a pas été décrit avec les fonctions HDéclare / HDéclareExterne.
    As-tu une idée ? Comment initialiser la source, le fichier Oeuvres fait bien partie de l'analyse.
    Bernisch

  7. #7
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Aucune idée.
    Est-ce que le n° 7220 t'inspire, est-ce que l'enregistrement que tu essaies de modifier porterait ce n°7220 ?
    Et dans ce cas je ferais : HLitSuivant("Adr_Livraison","IDAdresseLivraison") au lieu de HLitSuivant(Adr_Livraison,IDAdresseLivraison)Mais il n'y a pas de raison que ce soit ça.


    Plus solide : En principe, Windev te dit sur quelle ligne du programme ça plante. C'est quelle ligne ?


    Enfin, dernière piste pour 'diagnostiquer le problème ' (après, il faudra le résoudre) :

    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
     
    b est un booleen
    b=HLitPrécédent(Adr_Livraison,IDAdresseLivraison)
    si pas b alors 
       erreur ( " Plantage hLitPrecedent", hErreurinfo() ) 
       renvoyer faux 
    fin
    //choix des champs
    SC_Fiche.SAI_Ville = Adr_Livraison.Ville
    SC_Fiche.SAI_CodePostal = Adr_Livraison.CodePostal
    SC_Fiche.SAI_Pays = Adr_Livraison.Pays
    b=HLitSuivant(Adr_Livraison,IDAdresseLivraison)     //   <-- Pour revenir à l'enregistrement qui nous intéresse 
    si pas b alors 
       erreur ( " Plantage hLitSuivant", hErreurinfo() ) 
       renvoyer faux 
    fin
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  8. #8
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2018
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2018
    Messages : 151
    Points : 107
    Points
    107
    Par défaut Réponses
    Pour répondre à tes questions:
    • le 7220 est bien l'ID de la fiche que je veux modifier
    • la ligne notée en erreur est :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      HLitPrécédent(Oeuvres.IDOeuvres)
      avec comme remarque "La source de données <7220> n'est pas initialisée, -S'il s'agit d'un fichier de données, le fichier n'a pas été trouvé dans l'analyse...."
    • Pour le diagnostique : l'erreur se situe dès la 2ème ligne
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      b=HLitPrécédent(Oeuvres,IDOeuvres)
      avec comme remarque "Aucun parcours n'a été amorcé pour la rubrique <IDOeuvres> sur le fichier <Oeuvres>.


    Bonne soirée
    Bernisch

  9. #9
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Pour pouvoir lire l'enregistrement précédent, il faut que l'enregistrement en cours soit lu. C'est cette lecture qui amorce le parcours.
    Un code du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    clLivraisonSource est CMLivraison //Instancie la lasse mappée Livraison
     
    HSauvePosition(Livraison,PK_Livraison)
    HlitRecherche(Livraison,PK_Livraison,nIDLivraisonSource) //Recherche les données à copier
    FichierVersMemoire(clLivraisonSource,Livraison)
    HRestaurePosition(Livraison,PK_Livraison)
    MémoireVersFichier(clLivraisonSource,Livraison)
    HEnregistre(Livraison)
    Devrait faire l'affaire
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  10. #10
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    C'est un peu bizarre, ton fichier s'appelait adresse_Livraison, et maintenant, il s'appelle oeuvres.

    HLitPrécédent(Oeuvres.IDOeuvres) , ça ne peut pas marcher. C'est une virgule qu'il faut et surtout pas un point. Là, oeuvres.IdOeuvres est un nombre, il vaut notre fameux 7220 ; Windev s'attend à ce qu'on lui dise quel fichier il faut lire (1er paramètre de hLitPrécédent) et au lieu de lui envoyer un nom de fichier, on lui envoie le nombre 7220.

    A propos du 2ème message : "Aucun parcours n'a été amorcé pour la rubrique <IDOeuvres> sur le fichier <Oeuvres>." , ça veut dire quoi ?
    La première lecture d'un fichier, ça doit se faire par une commande hLit() ou hLitRecherche() ou hLitRecherchePRemier() (j'en oublie peut-être 1 ou 2 variantes) ; ça ne peut pas être hLitPrecedent() ni hLitSuivant()

    Si je reprend mon histoire de marque page, on ne peut pas dire 'page précédente' ni 'page suivante' si on n'a pas d'abord dit : 'aller à la page n°X'.
    Il faut d'abord placer le pointeur à un emplacement précis (hLitRecherchePremier par exemple), et ensuite, on peut dire Suivant ou Précédent.

    Et toutes ces contraintes sont valables sur chaque fichier. Si on se positionne sur un environnement précis sur le fichier Livraison hlitPremier(Livraison, idLivraison), ça n'autorise pas à faire hLitPrécédent(Oeuvres) juste après. Il faut une commande hLitPremier sur chacun des fichiers.

    Je te laisse dans les mains de Voroltinquo, il connaît visiblement beaucoup mieux que moi les commandes hXxx()
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  11. #11
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2018
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2018
    Messages : 151
    Points : 107
    Points
    107
    Par défaut
    Bonjour tcb92,
    Passage de Ad_Livraison vers Oeuvres: Ad_livraison est un fichier faisant partie d'une base remplie de bric et de broc et dans laquelle je teste les codes avec lesquels je rencontre des difficultés. Oeuvres est le fichier dans lequel je veux appliquer ce code. À noter que le code que tu m'avais proposé fonctionne correctement avec le fichier Adr_Livraisons ce qui m'avait amené à te répondre que tout était OK. Lors de son adaptation au fichier Oeuvres, j'ai rencontré les difficultés précédemment exposées. Je n'arrive pas à comprendre la différence de réaction entre ces 2 fichiers. Seule différence notable, Adr_Livraison est en configuration 64 bits et Oeuvres en 32 bits.
    Merci encore pour ton aide.
    Bonne journée
    Bernisch

  12. #12
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2018
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2018
    Messages : 151
    Points : 107
    Points
    107
    Par défaut Problème résolu
    Bonjour à vous deux,

    j'ai résolu la chose de la façon suivante en conservant la première option proposé par tcb92; il suffisait de trier la table par l'IDOeuvres et non sur une autre clé avec doublon. Même si cela est contraignant dans l'affichage, tout semble correctement fonctionner. Pour la proposition de Voroltinquo: si tu peux avoir la patience et la gentillesse de m'expliquer, je suis preneur.
    Merci à vous deux et bonne journée.
    Bernisch

  13. #13
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Hello Bernisch,

    J'arrive après la bataille, mais je pense que tu aurais pu également t'en sortir avec des variables de type enregistrement.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  14. #14
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    Tu aurais pu également t'en sortir avec des variables de type enregistrement.
    En effet, cela évite le passage par les classes mappées.
    Citation Envoyé par bernisch Voir le message
    Si tu peux avoir la patience et la gentillesse de m'expliquer, je suis preneur.
    J'utilise 2 concepts dans mon code. Lequel veux tu que je développe ?
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  15. #15
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2018
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2018
    Messages : 151
    Points : 107
    Points
    107
    Par défaut Hello frenchsting
    Citation Envoyé par frenchsting Voir le message
    Hello Bernisch,

    J'arrive après la bataille, mais je pense que tu aurais pu également t'en sortir avec des variables de type enregistrement.
    Même si tu arrives après la bataille, content de savoir que tu es toujours là.

    Bernisch

  16. #16
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2018
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2018
    Messages : 151
    Points : 107
    Points
    107
    Par défaut Choix du concept
    Citation Envoyé par Voroltinquo Voir le message
    En effet, cela évite le passage par les classes mappées.

    J'utilise 2 concepts dans mon code. Lequel veux tu que je développe ?
    Bonjour Voroltinquo,
    je n'ai ni a priori, ni de connaissances suffisantes pour m'autoriser à faire un choix. Je te laisse le soin de décider pour celui qui est le plus facilement compréhensible pour l'amateur que je suis.
    Bonne journée
    Bernisch

  17. #17
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour Bernisch,

    Merci de ta sollicitude.

    Il n'y a pas de "meilleure" solution. Dans ce cas, il faut que tu utilises celle qui te parle le plus. Ma solution est quasi la même que celle de Voroltinquo. C'est un peu comme choisir une variable de type réel ou monétaire pour manipuler des décimaux.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/07/2016, 15h34
  2. Réponses: 4
    Dernier message: 12/04/2008, 12h42
  3. Réponses: 10
    Dernier message: 02/04/2007, 17h22
  4. Réponses: 12
    Dernier message: 21/02/2007, 09h44
  5. Réponses: 2
    Dernier message: 21/02/2006, 10h36

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