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

Entrée/Sortie Java Discussion :

Fichiers CSV et Java


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 28
    Points : 3
    Points
    3
    Par défaut Fichiers CSV et Java
    Bonjour à tous,

    Je suis actuellement en stage pour ma première année de bts sio et je dois réaliser une application java étant donné que pendant l'année scolaire nous avons étudié java. Je débute et donc nous n'avons pas tout vu en cours j'ai donc quelques soucis c'est pour cela que je fais appel à vous.

    Mon application doit faire la chose suivante :
    -Téléchargement d'un fichier CSV (liste d'article d'un fournisseur) sur un ftp
    -Lecture et récupération de certaines lignes (on repère grâce aux ref)
    -Dans ces lignes on récupère que certaines informations (je pensais stocker le tout dans un autre tableau)
    -Une fois les informations qui nous intéressent sont récupérées, création d’un nouveau fichier CSV et on écrit dedans toutes les informations.

    En cherchant sur le net je suis tombé sur un tuto du site : http://thierry-leriche-dessirier.dev.../csv-avec-java
    J’ai adapté le tuto pour qu’il réponde à mes exigences (enfin je pense avoir réussi, n’étant pas un expert ^^’ ). Mais maintenant j’ai quelques soucis pour faire « l’algorithme » décrit ci-dessus.
    J’ai une classe qui me fait la connexion au ftp, télécharge le fichier mais pour l’exploiter je m’y perds un peu car il y a beaucoup de fichier dans le tuto (l’habitude en cours on a notre code + la classe toute belle toute simple ça change !).

    Je comptais dans mon idée de base tout stocker dans un tableau puis récupérer ce qui m’intéresse pour le mettre dans un autre mais dans les méthodes fournies par le tuto il n’y a pas de tableau mais des « données mapées » chose que je ne connaissais pas avant et j’ai du mal avec ça… J’aimerais si possible avoir des exemples pour utiliser ces méthodes.

    Pour ceux qui connaissent le tuto j’ai créé un objet CsvFile12, le code en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    File file;
    file = CsvFileHelper.getResource(leChemin+leFichier);	    //leChemin et leFichier amène à mon fichier que je dois exploiter
    CsvFile12 csvFile = new CsvFile12(file);


    Voilà excusez moi pour mon niveau faible mais si vous pouvez me débloquer ça serait super ! Et je m’excuse pour la longueur du post.

    Merci d’avance pour vos réponses !

  2. #2
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    796
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 796
    Points : 1 686
    Points
    1 686
    Par défaut Complément
    Un petit exemple mais je suis pas sur : (rien ne vaux de tester)

    Pour un csv du genre :
    id;code;libelle
    101;F;France
    102;UK;Royaume Unis
    103;D;Allemagne
    104;I;Italie
    105;US;Etat-Unis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    csvFile.getMappedData().get(0).get("id") // doit te retourner 101   
    csvFile.getMappedData().get(2).get("libelle") // doit te retourner Allemagne
    Vu que tu auras besoin d'une itération le code à utiliser sera du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(int i=0;i < csvFile.getMappedData().size();i++){
      Map<String , String> ligne =csvFile.getMappedData().get(i);
      System.out.println( ligne.get("code") ); // ici affichage des codes
    }
    A dispo,
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 28
    Points : 3
    Points
    3
    Par défaut
    Merci de ta réponse

    Donc si je comprends bien quand j'applique getMappedData() j'obtiens une sorte de tableau et je navigue dedans à l'aide des get(indice,clé etc).

    Je charge le fichier et j'effectue tout mes tests sur cette "map" (je ne sais pas comment appeler correctement cet élément)

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 57
    Points : 76
    Points
    76
    Par défaut
    J'ai moi même utilisé ce tuto il n'y a pas très longtemps et pour moi ça marche alors je me permets de poster ce que j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    public class CsvFileReader {
     
        //<editor-fold defaultstate="collapsed" desc="Variables">
    	private static final String FILE_NAME = "test.csv";
    	private File file;
            private char SEPARATOR = ',';
            private List<String> lines;
     
            /*Chaque objet de cette liste contient toutes les informations que t'as
            récupéré pour une ligne*/
            private List<maClasse>data;
     
        //</editor-fold>
     
     
     
        //<editor-fold defaultstate="collapsed" desc="Constructeurs">
     
        public CsvFileReader() {
            this.file=new File(FILE_NAME);
            init();
        }
     
     
        public CsvFileReader(File file) {
            if(file!=null)
                 this.file = file;
            else
                 this.file=new File(FILE_NAME);
     
            init();
        }
     
        private void init(){
            /*Toutes les lignes du fichier sont stockées dans l'objet lines*/
            lines = readFile(file);
            /*On supprime les entetes*/
            lines.remove(0);
            data = new ArrayList<>();
            String sep = new Character(SEPARATOR).toString();
     
            for(String line: lines){
                /*Je me suis rendu compte que lorsque deux séparateurs se suivent il 
                ne compte pas le champ entre les deux,alors je met un espace entre                         
                chaque doublon de séparateurs*/
                String lineTemp = line.replace(SEPARATOR+""+SEPARATOR,SEPARATOR+" "+SEPARATOR);
                lineTemp = line.replace(""+SEPARATOR+SEPARATOR,SEPARATOR+" "+SEPARATOR);
     
                String[] oneData = lineTemp.split(sep);
                data.add(new maClasse(oneData[0],oneData[1],...);
            }
        }
     
        /* Quant à mon readFile il s'agit tout simplement de celui du CsvFileHelper */
     
        public static List<String> readFile(File file) {
     
            List<String> result = new ArrayList<String>();
     
            FileReader fr = new FileReader(file);
            BufferedReader br = new BufferedReader(fr);
     
            for (String line = br.readLine(); line != null; line = br.readLine()) {
                result.add(line);
            }
     
            br.close();
            fr.close();
     
            return result;
        }

    En espérant t'avoir aidé,
    Cordialement,

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 28
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Portugues13 Voir le message
    J'ai moi même utilisé ce tuto il n'y a pas très longtemps et pour moi ça marche alors je me permets de poster ce que j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    public class CsvFileReader {
     
        //<editor-fold defaultstate="collapsed" desc="Variables">
    	private static final String FILE_NAME = "test.csv";
    	private File file;
            private char SEPARATOR = ',';
            private List<String> lines;
     
            /*Chaque objet de cette liste contient toutes les informations que t'as
            récupéré pour une ligne*/
            private List<maClasse>data;
     
        //</editor-fold>
     
     
     
        //<editor-fold defaultstate="collapsed" desc="Constructeurs">
     
        public CsvFileReader() {
            this.file=new File(FILE_NAME);
            init();
        }
     
     
        public CsvFileReader(File file) {
            if(file!=null)
                 this.file = file;
            else
                 this.file=new File(FILE_NAME);
     
            init();
        }
     
        private void init(){
            /*Toutes les lignes du fichier sont stockées dans l'objet lines*/
            lines = readFile(file);
            /*On supprime les entetes*/
            lines.remove(0);
            data = new ArrayList<>();
            String sep = new Character(SEPARATOR).toString();
     
            for(String line: lines){
                /*Je me suis rendu compte que lorsque deux séparateurs se suivent il 
                ne compte pas le champ entre les deux,alors je met un espace entre                         
                chaque doublon de séparateurs*/
                String lineTemp = line.replace(SEPARATOR+""+SEPARATOR,SEPARATOR+" "+SEPARATOR);
                lineTemp = line.replace(""+SEPARATOR+SEPARATOR,SEPARATOR+" "+SEPARATOR);
     
                String[] oneData = lineTemp.split(sep);
                data.add(new maClasse(oneData[0],oneData[1],...);
            }
        }
     
        /* Quant à mon readFile il s'agit tout simplement de celui du CsvFileHelper */
     
        public static List<String> readFile(File file) {
     
            List<String> result = new ArrayList<String>();
     
            FileReader fr = new FileReader(file);
            BufferedReader br = new BufferedReader(fr);
     
            for (String line = br.readLine(); line != null; line = br.readLine()) {
                result.add(line);
            }
     
            br.close();
            fr.close();
     
            return result;
        }

    En espérant t'avoir aidé,
    Cordialement,
    Je viens de voir ta réponse, je vais regarder tout ça ! Merci

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 28
    Points : 3
    Points
    3
    Par défaut
    Tout d'abord merci Portugues13 pour ton code il m'est bien utile pour comprendre mais j'ai quelques questions (encore et oui).

    J'arrive pas à cerner le fonctionnement d'une arrayList c'est comme un tableau associatif ? Je demande ça car la méthode readFile(File file) retourne ça.

    Ensuite dans ton code que j'ai essayé d'adapter j'ai des erreurs.

    Voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    public class CsvFileReader {
     
        //<editor-fold defaultstate="collapsed" desc="Variables">
    	private static final String FILE_NAME = "test.csv";
    	private File file;
            private char SEPARATOR = ',';
            private List<String> lines;
     
            /*Chaque objet de cette liste contient toutes les informations que t'as
            récupéré pour une ligne*/
            private List<Article>data;
     
        //</editor-fold>
     
     
     
        //<editor-fold defaultstate="collapsed" desc="Constructeurs">
     
        public CsvFileReader() {
            this.file=new File(FILE_NAME);
            init();
        }
     
     
        public CsvFileReader(File file) {
            if(file!=null)
                 this.file = file;
            else
                 this.file=new File(FILE_NAME);
     
            init();
        }
     
        private void init(){
            /*Toutes les lignes du fichier sont stockées dans l'objet lines*/
            lines = readFile(file);
            /*On supprime les entetes*/
            lines.remove(0);
            data = new ArrayList<>();
            String sep = new Character(SEPARATOR).toString();
     
            for(String line: lines){
                /*Je me suis rendu compte que lorsque deux séparateurs se suivent il 
                ne compte pas le champ entre les deux,alors je met un espace entre                         
                chaque doublon de séparateurs*/
                String lineTemp = line.replace(SEPARATOR+""+SEPARATOR,SEPARATOR+" "+SEPARATOR);
                lineTemp = line.replace(""+SEPARATOR+SEPARATOR,SEPARATOR+" "+SEPARATOR);
     
                String[] oneData = lineTemp.split(sep);
                data.add(new Article(oneData[0],oneData[1],oneData[7],oneData[15],oneData[14],oneData[23],oneData[22]));
            }
        }
     
        /* Quant à mon readFile il s'agit tout simplement de celui du CsvFileHelper */
     
        public static List<String> readFile(File file) {
     
            List<String> result = new ArrayList<String>();
     
            FileReader fr = new FileReader(file);
            BufferedReader br = new BufferedReader(fr);
     
            for (String line = br.readLine(); line != null; line = br.readLine()) {
                result.add(line);
            }
     
            br.close();
            fr.close();
     
            return result;
        }
    }
    Ligne 50 : j'ai une erreur concernant mon objet de la classe Article (classe créée par moi) et je ne vois pas trop pourquoi il ne veut pas le créer..

    Ligne 60 à fin : Diverses erreurs concernant FileReader(file), readLine, etc. Eclipse me propose de corrections mais je ne connais pas leur signification. Il s'agit de "Add throws declaration" et "Surround with try/catch". Les 2 cas m'ajoutent du code mais je suis incapable de savoir lequel est bon pour moi (car sinon c'est bien Eclipse qui dit plus d'erreur mais autant comprendre pourquoi)

    Voilà, merci d'avance pour votre aide actuelle et vos futures réponses

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 57
    Points : 76
    Points
    76
    Par défaut
    Salut

    Voilà une fonction readFile qui a priori n'a plus d'erreurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
        public static List<String> readFile(File file) {
     
            List<String> result = new ArrayList<>();
     
            FileReader fr;
            try {
                fr = new FileReader(file);
                try {
                    BufferedReader br = new BufferedReader(fr);
                    try{
                        for (String line = br.readLine(); line != null; line = br.readLine()) {
                            result.add(line);
                        }
                    }
                    finally{
                        br.close();
                        fr.close();
                    }
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
     
            } catch (FileNotFoundException ex) {
                    ex.printStackTrace();
            }
     
     
            return result;
        }
    Le fait est que lors de l'utilisation des Classes FileReader et BufferedReader des exceptions peuvent être levées, il faut donc entourer ces dernières d'un try catch. (plus d'infos sur les exceptions ici)

    Pour le ArrayList il s'agit juste d'un tableau contenant des objets. donc si t'as un ArrayList<String> tu vas avoir un tableau où chaque case contient un objet String. Avec la méthode add(TonObjet) tu ajoutes un nouvel élèment à la fin de ton tableau.

    Sinon concernant l'erreur à la ligne 50, peux tu nous donner le code de ta classe Article ainsi que l'exception que t'as eu?

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 28
    Points : 3
    Points
    3
    Par défaut
    Merci pour les précisions et corrections je vais regarder tout ça mais avant je te post ma classe Article

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    public class Article {
    	private String id;
    	private String nom;
    	private float prix;
    	private String sku;
    	private String image;
    	private String codeEAN;
    	private String type;
    	private int status;
    	private String description;
    	private String short_description;
    	private int visibility;
    	private float poids;
    	private int tax_class_id;
    	private String allow_open_amount;
    	private String product_website;
     
    	public Article(String id, String nom, float prix, String image, String codeEAN, String description,float poids){
    		this.id=id;
    		this.nom=nom;
    		this.prix=prix;
    		this.image="url"+image;
    		this.codeEAN=codeEAN;
    		this.description=description;
    		this.poids=poids;
    		this.sku=nom.substring(0, 2)+"-"+codeEAN;
    		this.type="configurable";
    		this.product_website="url";
    		this.status=1;
    		this.visibility=4;
    		this.tax_class_id=1;
    		this.allow_open_amount="non";
    		this.short_description=description;
    	}
     
    	public String getId() {
    		return id;
    	}
     
    	public void setId(String id) {
    		this.id = id;
    	}
     
    	public String getNom() {
    		return nom;
    	}
     
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
     
    	public float getPrix() {
    		return prix;
    	}
     
    	public void setPrix(float prix) {
    		this.prix = prix;
    	}
     
    	public String getSKU(){
    		return sku;
    	}
     
    	public void setSKU(String sku){
    		this.sku=sku;
    	}
     
    	public String getImage(){
    		return image;
    	}
     
    	public void setImage(String image){
    		this.image=image;
    	}
     
    	public String getCodeEAN(){
    		return codeEAN;
    	}
     
    	public void setCodeEAN(String codeEAN){
    		this.codeEAN=codeEAN;
    	}
     
    	public String getType(){
    		return type;
    	}
     
    	public void setType(String type){
    		this.type=type;
    	}
     
    	public int getStatus(){
    		return status;
    	}
     
    	public void setStatus(int status){
    		this.status=status;
    	}
     
    	public String getDescription(){
    		return description;
    	}
     
    	public void setDescription(String laDescription){
    		this.description=laDescription;
    	}
     
    	public String getShortDescription(){
    		return short_description;
    	}
     
    	public void setShortDescription(String shortdesc){
    		this.short_description=shortdesc;
    	}
     
    	public int getVisibility(){
    		return visibility;
    	}
     
    	public void setVisibility(int visib){
    		this.visibility=visib;
    	}
     
    	public float getPoids(){
    		return poids;
    	}
     
    	public void setPoids(float poids){
    		this.poids=poids;
    	}
     
    	public int getTaxClassID(){
    		return tax_class_id;
    	}
     
    	public void setTaxClassID(int taxClassID){
    		this.tax_class_id=taxClassID;
    	}
     
    	public String getAllowOpenAmount(){
    		return allow_open_amount;
    	}
     
    	public void setAllowOpenAmount(String allowOpenAmount){
    		this.allow_open_amount=allowOpenAmount;
    	}
     
    	public String getProductWebsite(){
    		return product_website;
    	}
     
    	public void setProductWebsite(String productWebsite){
    		this.product_website=productWebsite;
    	}	
    }
    L'idéal pour mon arrayList c'est qu'il contienne uniquement des objets de ma classe Article pour faire mes traitements si j'ai bien compris ?

Discussions similaires

  1. Génération des fichiers CSV en Java
    Par Lolitaaa dans le forum Général Java
    Réponses: 3
    Dernier message: 18/06/2010, 09h07
  2. Générer un fichier .csv en java
    Par makia42 dans le forum Documents
    Réponses: 2
    Dernier message: 23/04/2010, 11h52
  3. [Java DB]comment lire un fichier csv en Java
    Par ttttnht dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 11/02/2010, 12h38
  4. lecture fichier csv en java
    Par c+cool dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 04/09/2009, 09h24
  5. exporter données sql dans un fichier csv en java
    Par pinkemma dans le forum JDBC
    Réponses: 2
    Dernier message: 07/03/2007, 09h23

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