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 :

Liste triée perturbant une recherche dichotomique


Sujet :

Macros et VBA Excel

  1. #21
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2013
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,

    Désolé de répondre tardivement.
    Je vois que le sujet a passionné certains et proposé des solutions de recherche qui me laisse perplexe, mais je vais analyser et si je peux les appliquer ....

    dysorthographie : l'extraction de la base de données Oracle et de par la construction de celle-ci par l'éditeur, me permet d'obtenir la liste des "propriétés" "classe" ou "sous-classe" "équipement" et sa valeur triés et sans doublons (contrainte oracle). Il y a quinze ans c'était oracle 7 voir 8, depuis c'est la version 12, et notre base est en 10, mais ça a bien évolué , mais les concepts sont restés.

    D'autre part mon programme permet de choisir le domaine de l'équipement, sa famille (classe) et sa sous-famille (sous-classe), de là je construis mes requêtes SQL pour interroger la base.
    Chaque classe peut-être associé à plusieurs propriétés( quelques unes à plus de cent) et des propriétés sont générales à toutes les équipements.
    Chaque propriété peut être une valeur alphabétique, numérique ou date, une liste de valeur, ou les données d'une autre table ..... et d'autres possibilités mais je ne rentre pas dans le détail.
    Dans un domaine d'équipement, plusieurs classes peuvent être utilisées, chacune ayant des propriétés communes et différentes (je sais, s'arrange pas les choses ! mais une bonne requête si ).

    Fort de tout cela, je me retrouve avec des tableaux EXCEL dont je dois extraire les données pour les afficher en tableau avec toutes les particularités citées et d'autres en plus, chaque équipement a ces propres informations, en plus de ces propriétés techniques.

    Pourquoi j'utilise la dichotomie et non Find, ce dernier est bien et rapide .... jusqu'à 3, 4 voire 8000 enregistrement au delà il perd son intérêt. Je l'utilise dans d'autres programme du même acabit.
    Etant donné que je ne sais pas quelle interrogation va faire l'utilisateur, large ou restreinte, il peut ramener quelques centaines d'enregistrements à plusieurs dizaines de millier voire centaines.
    La dichotomie reste la plus intéressante.Après il peut exister des approches plus rapide, j'en conviens.

    Je n'ai pas encore tout compris sur Dictionary mais ça m'ouvre une porte de réflexion, tout comme collection d'ailleurs..
    Tout comme je n'ai peut-être pas utilisé toutes les astuces du VBA. J'ai des lacunes mais je me soigne.

    L'origine de ce post était cet bizarrerie du tri qui me donnait un faux résultat ! mais que d'échanges.

    Cordialement Jean-Luc

  2. #22
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Juste un dernier mot pour remercier Marc_l d'avoir fait ces tests.
    Puis-je ajouter ceci ? :
    - ayant personnellement inhibé délibérément scrun.dll sur ma machine, plus question d'utiliser un objet Dictionary (ipso facto), puisque inatteignable.
    - ces tests ont montré ce qu'il fallait de ce que je sais depuis kala-kala (expression gabonaise), à savoir que l'objet Dictionary devient lourd et très lent avec un grand nombre de données.
    - pour le reste (et puisqu'il y a été fait allusion par au moins l'un des intervenants ici) : ceux qui souhaitent utiliser une collection en lieu et place d'un objet dictionary et l'exploiter de la même manière (avec les mêmes "avantages", mais pas le même "confort" de codage) pourront commencer (je les y invite) à s'intéresser à ce que peut être une collection de matrices. Voilà voilà, mais je n'irais pas plus loin à ce propos-là ici, car nous nous écarterions encore plus de l'objet de la présente discussion.

    Pour en revenir au sujet principal (le seul qui était et aurait du être à traiter) : c'est dans la comparaison-même des chaînes qu'est appliquée la norme dont j'ai parlé plus haut.
    Pour échapper à l'application de cette norme, il faut alors construire ses propres méthodes de comparaison. Ce procédé implique alors soit l'utilisation de StrConv, soit un checksum.
    Amitiés à tous
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #23
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je persiste et je signe, pour moi le problème n'est pas tant le dictionnaire ou la collection, bien que Marc nous a apporté la preuve qu'il fallait en tenir compte, mais de format d'extraction Oracle.surtout que tu nous dis au la version d'origine est Oracle 7 et quelle a évoluer vers Oracle 12 aux fils des mise à jour!

    Soit tu est capable de modifier le format Utf8 Iso par requête soit il faudra effectuer ce traitement par macro afin de ne plus avoir de caractères bizarre dans ta feuille!

  4. #24
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Conversion de l'encodage du fichier via ADODB.Stream par exemple …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #25
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2013
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Désolé dysorthographie, je parlais de ta connaissance d'Oracle, notre progiciel est en version 10 et mes requêtes s'appuient sur cette version.

    Maintenant de l'UTF8, je ne sais pas si cette norme me perturbe, mais en reprenant l'extraction effectuée et récupérée sous EXCEL, triée avec EXCEL pour être certain qu'il a un bug, mais en fait il s'agit bien de l'application de la norme AFNOR NF Z44-001 rappelé par Unparia quelque soit l'outil ! Le signe moins n'est pas un caractère bizarre, c'est soit un tiret soit un négatif, mais n'est pas intégré dans le tri.

    Ensuite j'ai appliqué un contournement du problème en analysant un par un lorsque l'écart devient inférieur à 10, les temps de réponse reste long mais correct, je ne vais pas l'alourdir auparavant avec un autre traitement. Si les utilisateurs veulent une réponse plus rapide, ils ciblent plus précisément les équipements souhaités. Un tableau de 1800 lignes sur 160 colonnes devient vite ingérable !

    Je vais faire des tests avec d'autres idées suite aux teneurs de vos réponses.
    Merci, cordialement Jean-Luc

  6. #26
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour.

    Pour effectuer un tri, Excel applique la norme AFNOR NF Z44-001. VBA aussi avec sa fonction Sort.

    Il faut donc recourir a Sort pour comparer 2 valeurs dans ton tri dichotomique.
    Cordialement

    Docmarti.

  7. #27
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour Docmarti
    Il faut donc recourir a Sort pour comparer 2 valeurs dans ton tri dichotomique
    Cà, c'est assez rigolo. Nous voilà repartis au point de départ.
    Amitiés.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  8. #28
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour.

    Citation Envoyé par unparia Voir le message

    Cà, c'est assez rigolo. Nous voilà repartis au point de départ.
    On a appris beaucoup durant cette longue et passionnante recherche.
    Cordialement

    Docmarti.

  9. #29
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bon ...
    Si l'on veut faire un tri qui ignore la norme ISO, il faut le construire en utilisant cette comparaison de chaînes là (exemple vite fait avec strconv) :
    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
    Private Sub CommandButton1_Click()
      MsgBox plus_grande(Range("A1").Text, Range("A2").Text)
    End Sub
     
    Private Function plus_grande(ch1 As String, ch2 As String) As String
       Dim t1() As Byte, t2() As Byte, nb As Integer, i as integer
       nb = Len(ch1) - 1
       If Len(ch2) - 1 < nb Then nb = Len(ch2) - 1
       t1 = StrConv(ch1, vbFromUnicode)
       t2 = StrConv(ch2, vbFromUnicode)
       For i = 0 To nb
         If t1(i) > t2(i) Then
           plus_grande = ch1: Exit Function
         End If
       Next
       plus_grande = ch2
    End Function
    EDIT : j'ai ici utilisé strconv. Cette utilisation entraîne un code plus long, mais plus rapide qu'en utilisant Mid ou Replace.
    Si l'on utilise Replace, toutefois (pour code plus court) : choisir chr(1) comme caractère de remplacement avant comparaison.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  10. #30
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2013
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Bonsoir Docmarti,

    d'une requête j'obtiens une concaténation et je compare à une concaténation de même type à partir d'information d'un équipement que j'ai aussi "requêté".

    Mais mes extractions sont triées de fait par la requête, et quel soit Oracle ou EXCEL, la norme s'applique et la recherche dichotomique compare et boucle si c'est inférieur ou supérieur, et sort avec le résultat exact ou non.
    Malheureusement la comparaison n'applique pas la norme !

    Cordialement Jean-Luc

  11. #31
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2013
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Waouh Unparia

    J'allonge mes temps de comparaison sur des chaînes quasi semblables qui est somme toute fréquent pour des équipements ayant la même propriété, classe et racine du code de l'équipement.
    Maintenant dès le premier caractère différent oui ça jette tout de suite.

    J'ai une autre idée en tête, demain je l'essaye avec celle-ci.

  12. #32
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Tu peux toujours gagner du temps d'exécution en :
    - faisant une comparaison "habituelle" da,s les cas "normaux"
    et
    - en ne faisant la comparaison "spéciale" que lorsque instr(ch1 & ch2,"-") > 0
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  13. #33
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2013
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Bonjour Unparia,

    Seulement le "spécial" c'est 99,99%.....

  14. #34
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Une solution avec Recherche Dichotomique.

    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
    Sub RechercheDichotomique_UneValeur_DansRange_Developpez()
        'Recherche dichotomique dans une colonne triee ascendant par Excel ( par Docmarti )
     
        Dim AChercher
        Dim CompareAChercher As Long
        Dim f As Worksheet
        Dim dest As Range
     
        Set f = Worksheets("Feuil1")
        Set dest = Worksheets("Feuil2").Range("B5:B6")
     
        f.Activate
        PlusPetit = 0
        PlusGrand = 1
     
        N = f.Cells(f.Rows.Count, "A").End(xlUp).Row
     
        Set r = f.Range("A2:A" & N)
     
        AChercher = r.Cells(9, 1).Value 'Rechercher la donnee r.cells(9, 1)
     
        inf = 1: sup = N
        inf = 1: sup = r.Rows.Count
     
        Do
     
            If inf > sup Then
                'Pas trouver
                Reponse = -1: Exit Do
            End If
     
            milieu = Int((inf + sup) / 2)
     
            '----------------
            'Determiner lequel est considere par la fonction SORT (TRI) comme etant le plus petit
     
            dest.Cells(1, 1) = AChercher
            dest.Cells(2, 1) = r.Cells(milieu, 1)
     
            dest.Range("A1:A2").Sort key1:=dest.Range("a1"), _
            order1:=xlAscending, Header:=xlNo
     
            If dest.Cells(1, 1) = AChercher Then
                CompareAChercher = PlusPetit
            Else
     
                CompareAChercher = PlusGrand
            End If
            '----------------
     
            If AChercher = r.Cells(milieu, 1) Then
     
                Reponse = milieu
                r.Cells(Reponse, 1).Select
                Exit Do
            End If
     
            If CompareAChercher = PlusPetit Then
     
                sup = milieu - 1
            End If
     
            If CompareAChercher = PlusGrand Then
     
                inf = milieu + 1
            End If
        Loop
     
    End Sub
    Cordialement

    Docmarti.

  15. #35
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2013
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Bonsoir Docmarti,

    je n'ai pas besoin de trier ma liste et de la recopier dans une autre feuille.

    Je recherche une valeur concaténée dans une liste et par un offset je récupère la valeur de la propriété technique de l'équipement renseignée ou non (si il n'y a pas d'occurrence).
    La recherche dichotomique est maitrisé au détail près de la norme de tri.

    Par contre des explications plus détaillés de dictionnary pour me faire une idée, je suis preneur.

    Cordialement Jean-Luc

  16. #36
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Un dictionnaire dispose d'une clé unique e une valeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dico("clé")=12
    Dico("clé")=5
    Dans cette exemple le clé porte le nom "clé" et la valeur 5 puisque c'est la dernière affecté au dictionnaire sous ce nom!

    Pour rechercher une valeur il suffit de l'appeler pr sa sa clé


  17. #37
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2013
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Bonsoir dysorthographie,

    ça m'inspire pas beaucoup, je pensais que c'était plus sioux que ça, mais je me trompe peut-être.

    J'ai tenté aujourd'hui de modifier mon algorithme de recherche en stockant dans un tableau les ruptures propriétés et familles afin de réduire l'espace de la recherche, résultat 10 secondes de plus.
    Pas concluant !

  18. #38
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour, bonjour !

    L'objet Dictionary est aisément consultable dans l'aide VBA interne …

    Sans compter les dizaines d'exemples dans les discussions de ce forum !

    Voilà, voilà !

    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  19. #39
    Invité
    Invité(e)
    Par défaut
    C'est vrai qu'exposer comme je l'ai fait, ça a. L'air simple, mais comme c'est exactement comme ça qu'on utilise un dictionnaire, ça doit l'être!

  20. #40
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Citation Envoyé par jlb91600 Voir le message
    Bonsoir Docmarti,

    Mais mes extractions sont triées de fait par la requête, et quel soit Oracle ou EXCEL, la norme s'applique et la recherche dichotomique compare et boucle si c'est inférieur ou supérieur, et sort avec le résultat exact ou non.
    Malheureusement la comparaison n'applique pas la norme !
    Ah! je croyais que tu disais que la recherche dichotomique ne fonctionnait pas car la comparaison n'applique pas la norme.
    C"est pour ca que je te proposais une comparaison qui respecte l'ordre de tri qu'utilise Excel.
    Cordialement

    Docmarti.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/04/2013, 06h41
  2. Recherche d'un élément dans une liste triée (vitesse)
    Par Rodrigue dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 18/05/2006, 09h23
  3. Réponses: 8
    Dernier message: 11/05/2006, 11h04
  4. liste deroulante pour effectuer une recherche
    Par pierrot67 dans le forum Bases de données
    Réponses: 2
    Dernier message: 29/04/2006, 09h27
  5. Trie d'une liste d'array
    Par noOneIsInnocent dans le forum Collection et Stream
    Réponses: 15
    Dernier message: 06/01/2006, 12h05

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