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 :

Manipulation du champ traitement de texte


Sujet :

WinDev

  1. #1
    Membre à l'essai Avatar de lemagnifique20
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 64
    Points : 24
    Points
    24
    Par défaut Manipulation du champ traitement de texte
    Bonjour chers windevers,

    Je suis entrain de travailler sur un projet qui nécessite de faire du publipostage, en utilisant le champ traitement de texte.

    Et pour ce faire, j'ai 3 préoccupations :

    1. J'aimerais dans un 1er temps que l'utilisateur ne puisse pas saisir son modèle sur plusieurs pages, donc j'aimerais bloquer la possibilité pour lui de faire des sauts de page sur le champ traitement de texte.

    2. Ensuite, j'aimerais savoir comment faire du recto verso, avec un document publiposté, c-a-d que lors de l'impression du publipostage pour un même destinataire, on aura deux messages, l'un sur le recto en espagnol par ex. Et le même message sur le verso en francais.

    3. Enfin, il y a certains modèles de messages publipostés, dont on peut avoir plusieurs occurrences sur un format A4 selon la longueur du modèle. Sauf que le problème, c'est qu'il
    y a césure des fois, c-a-d que un message commence sur le bas d'une page et ne se termine que sur la page suivante. J'aimerais pouvoir déterminer la fin d'un format A4, afin de faire un saut de page si le modèle, ne peut pas tenir sur l'espace restant dans le format A4.

    Ce sont des points, sur lesquels, je sèche depuis près d'une semaine, dont je remercie d'avance ceux ou celles qui pourront me donner un coup de pouce.

    Bon dev.

  2. #2
    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,

    Je précise que je n'ai jamais utilisé le champ TT (qui d'ailleurs a pas mal évolué depuis sa création en V22). Il faut donc tester la faisabilité de mes idées
    1. J'essayerais de mettre un évènement sur le champ TT et de détecter cette tentative d'insertion.
    2. J'exporterais (imprimerais) le document dans un pdf et j'imprimerais le pdf en utilisant un ienchainementajoute().
    3. J'utiliserais un événement (clic souris) en plus de l'évènement du 1 pour détecter les manips de l'utilisateur. Et je regarderais le nombre de pages. (Il doit bien y avoir une fonction WL qui te retourne le nombre de pages du document).

    Ce sont grosso-modo mes idées mais, je n'ai rien testé du tout...
    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

  3. #3
    Membre à l'essai Avatar de lemagnifique20
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 64
    Points : 24
    Points
    24
    Par défaut
    Merci bien Frenchsting,

    Je vais tester les différentes pistes et je vous rends compte.

  4. #4
    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 info, comment cela se passe-t-il du côté utilisateur lors de la saisie du modèle en ce qui concerne l'insertion des zones concernées par le publipostage ?
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  5. #5
    Membre à l'essai Avatar de lemagnifique20
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 64
    Points : 24
    Points
    24
    Par défaut
    Slt Voroltinquo,
    Pour faire un modèle personnalisé, l'utilisateur emploie un combo où se trouve des éléments de mailing. Ainsi, a chaque sélection, d'un élément de mailing, cet élément s'insère dans le champ traitement de texte. Et sera utilisé plutard, pour réaliser le publipostage via DocRemplace().

    Par ailleurs, en ce qui concerne la proposition de FrenchSting, quant à la question 1. Je n'ai pas trouvé le code de l'événement qui correspond à un saut de page. Quelqu'un aurait il une idée ?

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2021
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2021
    Messages : 23
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par lemagnifique20 Voir le message
    Slt Voroltinquo,
    Pour faire un modèle personnalisé, l'utilisateur emploie un combo où se trouve des éléments de mailing. Ainsi, a chaque sélection, d'un élément de mailing, cet élément s'insère dans le champ traitement de texte. Et sera utilisé plutard, pour réaliser le publipostage via DocRemplace().

    Par ailleurs, en ce qui concerne la proposition de FrenchSting, quant à la question 1. Je n'ai pas trouvé le code de l'événement qui correspond à un saut de page. Quelqu'un aurait il une idée ?
    Bonjour lemagnifique20,

    Concernant ton problème de saut de page, j'ai mené ma petite enquête et voici les pistes que je peux te donner.

    Premièrement tu as la possibilité de personnaliser le ruban du champ traitement de texte.

    Grâce à cela tu vas pouvoir griser/supprimer/éditer le bouton nommé "BTN_WDFAA_SautDePage" et limiter les actions de tes utilisateurs.

    Dans un second temps on peut voir que le code derrière le bouton saut de page est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SI pChampTT = Null ALORS
    	RETOUR
    FIN
     
    f est docFragment <- pChampTT..Sélection..Fragment
    f.Texte = RC+Caract(12)+RC //"form feed" == saut de page
     
    //On se positionne sur la nouvelle page
    DocPositionne(pChampTT)
     
    ChampExécuteModification(pChampTT)
    Le saut de page serait donc la concaténation de 2 retours charriots ainsi que du caractère ASCII en 12ème position (soit form feed, saut de page)

    Ainsi tu as donc la possibilité de détecter les sauts de pages dans ton document et les modifier à ta guise !

    Cordialement

  7. #7
    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
    Une solution peut être de travailler avec un document par langue.
    Avec la propriété NombreDePage du champ TT, tu pourrais ainsi détecter si le document est sur plusieurs page et au besoin ajuster la taille de la police pour qu'il ne tienne que sur une page (lors de la fermeture du document.)
    En ce qui concerne le recto-verso il suffit d'utiliser la constante iRectoVerso dans ton iParamètre
    A la volée, le squelette du code d'impression ressemblerait à ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    iParamètre(iRectoVerso)
    iEnchainementAjouteDoc(MonDoc_Fr)
    iEnchainementAjouteDoc(MonDoc_Es)
    iEnchainementImprime
    Si tu veux toutefois tout centraliser dans un même document, tu peux par exemple créer 1 section par langue (variable docSection,) puis lors de l'impression, créer des documents temporaires à partir de ces sections
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  8. #8
    Membre à l'essai Avatar de lemagnifique20
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 64
    Points : 24
    Points
    24
    Par défaut
    Merci Arthurdnt, pour le tuyau.
    J'ai en effet personnalisé le ruban et enlever le bouton BTN_WDFAA_SautDePage, mais lorsque l'utilisateur est en bas de page et on tape un Enter, ça crée toujours un saut de page.

    J'ai créé aussi une procédure qui exploite la combinaison de touche (RC+Caract(12)+RC) et qui est appelée par la fonction événement (). Mais cela ne marche toujours pas.
    Le bout de code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Événement("BloqueSautPage", TT_Champ.nom, WM_KEYDOWN)
     
    Procédure BloqueSautPage()
    Si ToucheEnfoncé(ASC(RC)) et ToucheEnfoncé (ASC(Caract(12))) et ToucheEnfoncé (ASC(RC)) alors
    Renvoyer 0
    Fin
    Je ne sais pas si j'ai sauté ou mal fait quelque chose.

    Par ailleurs, Voroltinquo, je suis entrain de mettre en œuvre la solution comme quoi il faille tout mettre sur le même document et puis à l'impression l'utilisateur lancera lui même en recto verso. Je m'exerce encore à la manip de la variable docSection.

  9. #9
    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,

    Ton code ne peut pas fonctionner. Tu ne peux pas écrire (je grossis volontairement le trait) si 1=1 et 1=2 et 1=3...

    Je testerais ceci : si on a eu un caractère retour chariot : caractère ASCII 13 et pas RC qui est composé de 2 caractères (CR +LF) alors je teste si le nombre de pages est de 2 (ChmapTT..NombrePage = 2).
    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

  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
    Je ne suis pas d'accord avec Frenchsting, mais je suis encore moins d'accord avec ton code.
    La fonction ToucheEnfoncee() est une fonction 'temps réel' : est-ce que telle touche est actuellement enfoncée. C'est typiquement utilisé avec les touches Ctrl ou Alt ou Shift, même si on peut effectivement les utiliser avec d'autres touches.
    Si on fait si toucheenfoncée (a) _et_ toucheenfoncée (b) _et_ toucheenfoncée (c) alors alors on teste si ces 3 touches sont enfoncées 'en même temps'.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  11. #11
    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
    Dans un premier temps la suite de caractères que t'a décrite arthurdnt est celle qui se trouve dans la propriété .Texte de ta variable document.
    Pour insérer un saut de page manuel lors de la frappe, la séquence est Ctrl+Enter (code 10) comme dans Word, OpenOffice, LibreOffice (et les autres je suppose.)
    C'est donc cette séquence qu'il faut intercepter.
    Pour cela il suffit, dans le code de ton champ TT de rendre apparent l'événement "Touche appuyée" via l'option "Ajouter d'autres événements".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SI _EVE.wParam=10 ALORS
    	ToastAffiche("Saut de page manuel interdit")
            //Suppression des caractère simulant le saut de page via les propriétés de Curseur et de Sélection
    FIN
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  12. #12
    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
    Il s'avère que lors d'un saut le page manuel, le champ TT n'insère pas de caractères de contrôle mais :
    1-Ajoute un élément de type docEléméntTexte (cf documentation) de taille 1 au paragraphe en cours
    2-Crée un nouveau paragraphe
    Le document contient donc maintenant n paragraphes de c caractères.
    L'astuce consiste donc à récupérer les n-1 paragraphes qui se trouvent avant le dernier paragraphe créé par le saut de page, sans prendre en compte le dernier caracère (saut de page)
    Le code devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SI _EVE.wParam=10 ALORS
    	ToastAffiche("Saut de page manuel interdit")
           SupprimeSautDePageManuel()
    FIN
    SupprimeSautDePageManuel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PROCÉDURE SupprimeSautDePageManuel()
    fragAvantSaut est un docFragment(TT_Test)
     
    fragAvantSaut=RécupèreTexteUtile()
    RecréeDocument(fragAvantSaut)
    FinDeTexte()
    RécupèreTexteUtile()
    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
     
    // Résumé : Récupère les élément créés avant le saut de page manuel
    // Description des paramètres d'entrée/sortie de 'RécupèreTexteUtile' :
    //
    // Syntaxe :
    //[ <Résultat> = ] RécupèreTexteUtile ()
    //
    // Paramètres :
    //	Sortie :
    //	fragAvantSaut (docFragment) : Fragment contenant le texte (avec sa mise en forme) saisi avant le saut de page manuel
     
    FONCTION RécupèreTexteUtile():docFragment
    fragAvantSaut est un docFragment(TT_Test)
    docContenuTT est un Document
    nDernierParagrapheUtile est un entier	//N° du paragraphe avant le saut de page
    nPositionAvantSaut est entier	//Pour une meilleure lecture
     
    docContenuTT			= TT_Test
    //Récupère l'avant dernier paragraphe (celui qui n'est pas sur la nouvelle page)
    nDernierParagrapheUtile	= docContenuTT..Paragraphe..Occurrence-1
    //-1 représente un élément de texte vide (de taille 1 en fait,) i.e. le saut de page donc -2
    nPositionAvantSaut			= docContenuTT..Paragraphe[nDernierParagrapheUtile]..PositionFin-2
    fragAvantSaut..PositionDébut	= 1
    fragAvantSaut..PositionFin	= nPositionAvantSaut
     
    RENVOYER fragAvantSaut
    RecréeDocument
    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
     
    // Résumé : Crée et affiche un document avec le contenu d'un fragment
    // Description des paramètres d'entrée/sortie de 'RecréeDocument' :
    //
    // Syntaxe :
    //RecréeDocument (<fragAvantSaut> est docFragment)
    //
    // Paramètres :
    // Entrée :
    //	fragAvantSaut (docFragment) : Fragment contenant le texte (avec sa mise en forme) saisi avant le saut de page manuel
    // Valeur de retour :
    // 	Aucune
    //
    // 	docContenuTT : <indiquez ici le rôle de docContenuTT>
    PROCÉDURE RecréeDocument(fragAvantSaut est un docFragment(TT_Test))
    docContenuTT est un Document
    éléEnCours est un docElément
     
    docContenuTT=""
    POUR TOUT éléEnCours DE fragAvantSaut
    	DocAjoute(docContenuTT,éléEnCours)
    	//On ne contrôle pas si c'est le dernier élément car l'utilisateur voulait changer de page
    	//Un saut de paragraphe après le dernier élément n'est donc pas génant
    	DocAjoute(docContenuTT,docSautDeParagraphe) 
    FIN
    TT_Test=docContenuTT
    FinDeTexte
    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
    // Résumé : Positionne la saisie à la fin du texte en cours
    // Description des paramètres d'entrée/sortie de 'FinDeTexte' :
    //
    // Syntaxe :
    // FinDeTexte ()
    //
    // Paramètres :
    //	Aucun
    // Valeur de retour :
    // 	Aucune
    //
    PROCÉDURE FinDeTexte()
    docContenuTT est un Document
    nNbParagraphes est entier //Pour facilitation de lecture
     
    docContenuTT=TT_Test
    nNbParagraphes=docContenuTT..Paragraphe..Occurrence
    TT_Test..FinCurseur=docContenuTT..Paragraphe[nNbParagraphes]..PositionFin
    TT_Test..Curseur=TT_Test..FinCurseur
    RepriseSaisie(TT_Test)
    Reste à savoir comment l'utilisateur va indiquer que l'on change de langue (Le saut de page manuel étant maintenant impossible)
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  13. #13
    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 Dernière mouture plus rapide
    L'astuce est de considérer le document comme un tableau de paragraphes.
    Note
    Le paragraphe a beau être défini comme un tableau de docElément, on ne peut pas utiliser la même astuce (type incorrect) c'est pourcela qu'on utilise DocSupprime
    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
     
    PROCÉDURE SupprimeSautDePageManuel()
    ContenuTT est un Document
    nDernierParagraphe est entier //Pour une meilleure lecture
    nDernierElément est entier //Pour une meilleure lecture
     
    ContenuTT=TT_Test
    //On supprime le dernier paragraphe
    nDernierParagraphe=ContenuTT..Paragraphe..Occurrence
    TableauSupprime(ContenuTT..Paragraphe,nDernierParagraphe)
     
    //On supprime le dernier élément
    nDernierParagraphe=ContenuTT..Paragraphe..Occurrence //On est sur le paragraphe n-1
    nDernierElément=ContenuTT..Paragraphe[nDernierParagraphe]..Elément..Occurrence
    DocSupprime(ContenuTT..Paragraphe[nDernierParagraphe]..Elément[nDernierElément])
    DocAjoute(ContenuTT,docSautDeParagraphe)
    TT_Test=ContenuTT
    Le code de Touche appuyée devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SI _EVE.wParam=10 ALORS
            ToastAffiche("Saut de page manuel interdit")
    	SupprimeSautDePageManuel()
    	FinDeTexte()
    FIN
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

Discussions similaires

  1. [WD23] Champ traitement de texte + impression
    Par stefano dans le forum WinDev
    Réponses: 3
    Dernier message: 24/01/2019, 17h20
  2. [WD23] Champ traitement de texte et RTF
    Par regnath22 dans le forum WinDev
    Réponses: 6
    Dernier message: 03/01/2019, 10h25
  3. [WD23] Champs traitement de texte
    Par stefano dans le forum WinDev
    Réponses: 1
    Dernier message: 17/09/2018, 15h29
  4. [WD23] Champ Traitement de texte, pas de ruban sur appli migrée en 23
    Par SevenSoftware dans le forum WinDev
    Réponses: 5
    Dernier message: 24/01/2018, 15h27
  5. Réponses: 3
    Dernier message: 31/01/2017, 16h18

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