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

VBA Word Discussion :

Remplissage et vidange d'une série de ComboBox automatiquement [WD-2010]


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Remplissage et vidange d'une série de ComboBox automatiquement
    Bonjour à tous,
    Je suis BigZouk, débutant en vba et voici mon problème:

    J’ai un certain nombre (exemple 3) de ComboBox (nommés ComboBox1 à ComboBox3 afin de faciliter la gestion par macro) dans une section de mon document Word.

    Dans un premier temps, je voudrais les remplir. Pour cela, j’ai écrit le code suivant (à peut-être améliorer) :

    Code Vba : 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
    Private Sub ComboBox_Section1()
     
    If ActiveDocument.ComboBox1.ListCount = 0 Then
        With ActiveDocument.ComboBox1()
            .AddItem ""
            .AddItem "texte 1.1"
            .AddItem "texte 1.2"
            .AddItem "texte 1.3"
            .Locked = False
        End With
    End If
     
    If ActiveDocument.ComboBox2.ListCount = 0 Then
        With ActiveDocument.ComboBox2()
            .AddItem ""
            .AddItem "texte 2.1"
            .AddItem "texte 2.2"
            .AddItem "texte 2.3"
            .Locked = False
        End With
    End If
     
    If ActiveDocument.ComboBox3.ListCount = 0 Then
        With ActiveDocument.ComboBox3()
            .AddItem ""
            .AddItem "texte 3.1"
            .AddItem "texte 3.2"
            .AddItem "texte 3.3"
            .Locked = False
        End With
    End If
     
    End Sub


    Dans un deuxième temps, je souhaite les vider de leur liste afin de pouvoir injecter d’autres éléments.
    Pour l’instant j’ai réussi à écrire le premier code ci-dessous (que je vais affecter à un CommandButton1 plus tard)


    Code Vba : 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
    Private Sub CommandeB_Section1()
     
    Dim j As Integer, k As Integer
     
        For j = 1 To ActiveDocument.ComboBox1().ListCount
            If ActiveDocument.ComboBox1().ListCount >= 1 Then
                If ActiveDocument.ComboBox1().ListIndex = -1 Then
                    ActiveDocument.ComboBox1().ListIndex = ActiveDocument.ComboBox1().ListCount - 1
                End If
            End If
            ActiveDocument.ComboBox1.RemoveItem (ActiveDocument.ComboBox1().ListIndex)
        Next j
     
        For j = 1 To ActiveDocument.ComboBox2().ListCount
            If ActiveDocument.ComboBox2().ListCount >= 1 Then
                If ActiveDocument.ComboBox2().ListIndex = -1 Then
                    ActiveDocument.ComboBox2().ListIndex = ActiveDocument.ComboBox2().ListCount - 1
                End If
            End If
            ActiveDocument.ComboBox2.RemoveItem (ActiveDocument.ComboBox2().ListIndex)
        Next j
     
        For j = 1 To ActiveDocument.ComboBox3().ListCount
            If ActiveDocument.ComboBox3().ListCount >= 1 Then
                If ActiveDocument.ComboBox3().ListIndex = -1 Then
                    ActiveDocument.ComboBox3().ListIndex = ActiveDocument.ComboBox3().ListCount - 1
                End If
            End If
            ActiveDocument.ComboBox3.RemoveItem (ActiveDocument.ComboBox3().ListIndex)
        Next j
     
    End Sub

    Afin d’optimiser le code ci-dessus, j’ai essayé d’utiliser des boucles « for next » en concaténant la variable d’une boucle (voir code ci-dessous) mais je n’ai que des erreurs malgré plusieurs tentatives.

    Code Vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Private Sub CommandeB_Section2()
     
    Dim i As Integer, j As Integer, k As String, l As String, m As String, n As String, LaCommande0 As Variant, LaCommande1 As Object, LaCommande2 As Object
    For i = 1 To 8
        k = "ActiveDocument.ComboBox" & i & "().ListCount"
        l = "ActiveDocument.ComboBox" & i & "().ListIndex"
        LaCommande0 = Replace(k, """", "")
     
     
        For j = 1 To LaCommande0
            If LaCommande0 >= 1 Then
                If Replace(l, """", "") = -1 Then
                    m = l & " = " & l & "-1"
                    LaCommande1 = Replace(m, """", "")
                    LaCommande1
                End If
            End If
            n = "ActiveDocument.ComboBox" & i & ".RemoveItem(ActiveDocument.ComboBox" & i & "().ListIndex)"
            LaCommande2 = Replace(n, """", "")
            LaCommande2
        Next j
     Next i
     
    End Sub

    Par ailleurs, je voudrais savoir comment faire référence (faire appel dans une procédure) à toute la collection « InlineShapes » d’une section donnée de mon document.

    Voilà mon problème qui est probablement simple à régler. Je vous remercie.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    As-tu pris en compte que le premier item de la liste a comme index 0 et pas 1.

    Pour les InlineShapes, on les retrouve aussi dans le range d'une section.

    ActiveDocument.Sections(2).Range.InlineShapes
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Bonjour Heureux-oli, et Merci pour ton aide.

    Je suis sincèrement ravi de pouvoir t’écrire et te remercier (sans oublier les autres intervenants) pour tous les tutoriels que tu mets en ligne pour les novices comme moi. Vous faites un travail remarquable car « il vaut mieux apprendre à quelqu’un à pêcher qu’au lieu de lui donner du poisson ». Donc, pour avoir eu cette occasion je dis Merci à toute l’équipe et à tous les intervenants.

    1) -
    1) – 1 : Concernant mon problème, j’ai bien pris en compte le fait que le premier item de la liste a comme index 0 et pas 1. Le problème se situe au niveau de la concaténation qui n’est plus considérer comme une commande (instruction) mais du texte.

    Donc la question réelle qui se pose est, lorsque, par concaténation, j’arrive à obtenir un texte comme ceci :
    "ActiveDocument.TextBox1.Clear", comment faire pour enlever les guillemets afin de le transformer en commande ie ActiveDocument.TextBox1.Clear (sans les guillemets)


    Pour avoir passé une demi-journée sans avancer, j’ai dû laisser tomber et réfléchir à autre chose.

    Par conséquent si tu (bien entendu quelque âme bienveillant) as une solution à me proposer, ce serait avec plaisir et par avance je vous remercie.

    1) – 2 : Pareillement, après avoir passé plus d’une journée à fouiner dans l’explorateur d’objet et l’aide de VBE j’ai finalement réussi à écrire le code ci-dessous qui fonctionnait au départ sans la ligne (ligne 15) d’instruction « On Error Resume Next ».

    Puis subitement, lors d’une n’nième exécution j’ai ce message d’erreur qui s’affiche :

    « Word Vba. Erreur d'exécution '5360'
    Application serveur, fichier source, ou élément introuvable. Assurez-vous que l'application est correctement installée, et qu'elle n'a pas été supprimée, déplacée ou renommée. »


    C’est après quelques recherches que j’ai trouvé sur le site de Microsoft l’instruction magique : « On Error Resume Next » qui a résolue mon problème.

    Donc le code ci-dessous fonctionne correctement et c’est une des solutions possibles du sujet (question de départ).

    Code Vba : 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
    Sub Test_InlineShapes()
    Dim iShape As InlineShape
     
        For Each iShape In ActiveDocument.Sections(2).Range.InlineShapes 'Boucle sur toutes les formes insérées(image,objet OLE ou contrôle ActiveX)
                                                                         'de la deuxième section du document actif.
     
            'On Error Resume Next : commande pour rechercher la ligne d'où vient l'erreur.
            If iShape.Type = wdInlineShapeOLEControlObject Then  'Si la forme insérée est un Objet de contrôle OLE (ie contrôle activex).
                With iShape.OLEFormat  'Accède aux caractéristiques OLE (autres que les caractéristiques de liaison) du contrôle ActiveX
                    .Activate  'Active l'objet en tant que tel (ie le contrôle ActiveX dans mon cas)
                    Set myObj = .Object 'Fixe la la variable myObjet en tant qu'objet (ie contrôle ActiveX)afin de permettre l'accès
                                        'aux propriétés et aux méthodes de ce dernier (ie du contrôle ActiveX)
                End With
     
                On Error Resume Next 'Ignore l'erreur générée par la (les) ligne(s) de commandes en dessous et permet même d'exécuter la commande
                If TypeName(myObj) = "ComboBox" Then   'Si l'objet est un ComboBox alors,
                                                       'C'est aussi la première Ligne qui génère l'erreur dans mon cas
                    MsgBox "Mon vrai nom est :" & myObj.Name 'Pour tester (m'assurer que cela fonctionne) le resultat
                End If
     
                If TypeName(myObj) = "ComboBox" Then 'Deuxième Ligne qui génère l'erreur dans mon cas
     
                    'myObj.Clear : cette méthode ne marche pas avec OLEFormatObject alors qu'elle marche avec le controle activex lors d'un appel
                    'conventionnel (par exemple avec ActiveDocument.TextBox1.Clear)
     
                    For j = 1 To myObj.ListCount  'Boucle pour supprimer tous les éléments de la liste du ComboBox actif qui est ici myObj
                        If myObj.ListCount >= 1 Then 'Si le nombre d'élément composant ma liste est supérieur à 1 alors,
                            If myObj.ListIndex = -1 Then 'Si aucune ligne n'est sélectionnée (élémént de la liste) alors,
                                myObj.ListIndex = myObj.ListCount - 1 'sélectionne le dernier élément de la liste
                            End If
                        End If
                        myObj.RemoveItem (myObj.ListIndex) 'Supprime l'élément de la liste actuellement sélectionné (ie le dernier dans mon cas)
                    Next j
                End If
            End If
        Next iShape
    End Sub

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Et j’aurais bien voulu clore le sujet maintenant mais, j’ai un autre problème que j’expose :

    2) –
    Une fois les procédures Sub XX () permettant de remplir et de vider mes ComboBox écrites, je voudrais les associer respectivement à l’évènement Click de deux CommandButtons (du même document) nommés CommandButton1 et CommandButton2.

    Donc j’ai fait appel (via l’instruction « Call » sinon ça ne marche pas) à chacune des procédures Sub XX () dans l’évènement Click de chacun des CommandButtons dans ThisDocument. Jusque-là tout marche bien. Cependant, au vu de la longueur de mon document et du nombre de procédures évènementielles à gérer, ThisDocument deviendrait très vite touffu et difficile de s’y retrouver (Mal organiser).

    Ainsi, après quelques recherches je suis tombé sur vos tutoriels relatifs aux Modules de Classe :
    • Débutez en VBA Word par Olivier Lebeau
    • Office et les modules de classes par Emmanuel Tissot


    2) – 1 : En suivant les tutos, j’ai réussi à écrire les 2 codes ci-dessous pour faire fonctionner mes CommandButtons mis sur un UserForm via un Module de Classe. Et, cela fonctionne correctement.

    Code du module de classe nommé : BoutonClass

    Code Vba : 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
    Public WithEvents groupebouton As MsForms.CommandButton
     
    Private Sub groupebouton_Click()
        ' !!! Si aucune action commune à toutes les instances de la class (ici BoutonClass) n'est définie, les actions spécifiques
        'à chaque instance (ici groupebouton) ne sont pas exécutées << Bizar>> !!!
     
        Dim Msg As String, k 'Défini une ction commune à toutes les instances de la class (ici BoutonClass)
        k = 4 - 8 'Action commune à toute les instances de la class (ici BoutonClass)
     
        If groupebouton.Name = "CommandButton3" Then 'Action spécifique à l'instance dont le nom est CommandButton3
            Msg = "Bienvenue "
            MsgBox "Le bouton sélectionnée est : " & groupebouton.Caption & " " & Chr(13) _
            & Chr(13) _
            & Msg
            Call TestRemplissage
        End If
    End Sub


    Code de la feuille nommée : UserForm3
    Bien entendu, pour que cela fonctione, il faut rajouter sur le UserForm au moins deux CommandBoutons dont un nommé CommandBouton3

    Code Vba : 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
    Dim Boutons As Collection
     
    Private Sub UserForm_Initialize()
     
     
    Dim Ctrl As MsForms.Control  'Déclare et Dimensionne la variable
    Dim MyNumBouton As BoutonClass 'Déclare et Dimensionne la variable
    Set Boutons = New Collection 'Crée une nouvelle collection qui est pour l'instant vide
     
        For Each Ctrl In UserForm3.Controls 'Boucle sur tous les controles de la feuille nommée UserForm3
            If TypeName(Ctrl) = "CommandButton" Then ' Si le controle est du type "CommandButton", alors,
                Set MyNumBouton = New BoutonClass 'Crée une nouvelle instance : Affectation à cette variable d'une instance
                                                  'de la classe avec le mot-clé New
                Set MyNumBouton.groupebouton = Ctrl 'Connecte la variable "groupebouton" à l'objet "Ctl" : Connexion de la variable
                                                    ' WithEvents de l'instance avec un objet existant (a faire interagir: ici chaq Ctl)
                Boutons.Add MyNumBouton 'Ajoute l'instance à la collection
                Set MyNumBouton = Nothing 'Efface la référence en cours en prévision de la suivante. Pas necessaire puisque
                                          'seule la méthode Add item est implicitement utilisée ie même si je supprime cette
                                          'ligne de commande ça ne changera rien.
            End If
        Next
     
    End Sub


    2) – 2 : Mais pour les codes (voir ci-dessous) que j’ai écrit concernant les CommandButtons situés dans mon document (Word), cela ne marche pas alors que c’est ce qui m’intéresse. Cela fait deux jours que je suis là-dessus et je commence par « déprimer ».

    Code du module de classe nommé : MaClasseTest

    Code Vba : 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
    Public WithEvents BoutonInstance As CommandButton
     
    Private Sub BoutonInstance_Click()
        Dim k  'Défini une ction commune à toutes les instances de la class (ici BoutonClass)
        k = 2 + 6 'Action commune à toute les instances de la class (ici BoutonClass)
     
        If BoutonInstance.Name = "CommandButton1" Then
            MsgBox "La sélection est : " & CommandButton1.Caption 'Action spécifique à l'instance dont le nom est CommandButton1
            Call TestRemplissage
        End If
     
    End Sub
     
    Private Sub Class_Initialize()
        Set MyInst.BoutonInstance = CommandButton 'Même si je supprime cette initialisation, ça ne fonctionne toujours pas
    End Sub


    Code d’un autre module (Standard) :


    Code Vba : 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
    Dim Boutons As Collection 'Déclare et Dimensionne la variable
     
    Public Sub ActiveEvenementsTest()
     
    Dim Ctrl As CommandButton 'Déclare et Dimensionne la variable
    Dim MyInst As MaClasseTest 'Déclare et Dimensionne la variable
    Dim iShape As InlineShape  'Déclare et Dimensionne la variable
    Set Boutons = New Collection 'Crée une nouvelle collection qui est pour l'instant vide
     
     
        'On Error Resume Next : Test de recherche d'erreur
        For Each iShape In ActiveDocument.Sections(2).Range.InlineShapes 'Boucle sur toutes les formes insérées(image,objet OLE ou contrôle ActiveX)
                                                                         'de la deuxième section du document actif.
            'On Error Resume Next : Test de recherche d'erreur
     
            If iShape.Type = wdInlineShapeOLEControlObject Then  'Si la forme insérée est un Objet de contrôle OLE (ie contrôle activex).
                                                                 'Pour choisir tous les controls activex
     
                'On Error Resume Next : Test de recherche d'erreur
     
                With iShape.OLEFormat 'Accède aux caractéristiques OLE (autres que les caractéristiques de liaison) du contrôle ActiveX
                    .Activate  'Active l'objet en tant que tel (ie le contrôle ActiveX dans mon cas)
     
                    Set myObj = .Object  'Fixe la la variable myObjet en tant qu'objet (ie contrôle ActiveX)afin de permettre l'accès
                                         'aux propriétés et aux méthodes de ce dernier (ie du contrôle ActiveX)
                End With
     
                On Error Resume Next  'Ignore l'erreur générée par la (les) ligne(s) de commandes en dessous et permet même d'exécuter la commande
     
                If TypeName(myObj) = "CommandButton" Then   'Si l'objet est un ComboBox alors,
                                                            'C'est aussi la deuxième ligne qui génère l'erreur dans mon cas
     
                    'On Error Resume Next : Test de recherche d'erreur
                    MsgBox "Mon vrai nom est :" & myObj.Name 'Pour tester (m'assurer que cela fonctionne) le resultat
     
                    With myObj
                        Set MyInst = New MaClasseTest  '[1]'Crée une nouvelle instance : Affectation à cette variable d'une instance
                                                       'de la classe avec le mot-clé New
     
                        Set MyInst.BoutonInstance = myObj '[2]Connecte la variable "BoutonInstance" à l'objet "myObj" : Connexion de la variable
                                                          'WithEvents de l'instance avec un objet existant (a faire interagir: ici chaq myObj)
     
                        Boutons.Add Item:=MyInst  '[3]Ajoute l'instance à la collection
     
                        Set MyInst = Nothing  '[4] Efface la référence en cours en prévision de la suivante. Pas necessaire puisque
                                              'seule la méthode Add item est implicitement utilisée ie même si je supprime cette
                                              'ligne de commande ça ne changera rien.
                    End With
                End If
            End If
        Next iShape
     
    End Sub

    Donc quiconque voudrais bien me donner un coup de main, me sauverais. D’avance Merci

    NB. Je soupçonne que mon instruction magique : « On Error Resume Next » ne vienne cacher d’autres erreurs que j’aurais pu corriger. Cependant, Je précise qu’avant l’apparition subite de l’ « Erreur d'exécution '5360' » précité, le code ne marchait pas non plus.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    J’ai enfin trouvé d’où venaient mes erreurs relatées dans le 2) – 2.

    En effet, d’une part, j’avais des erreurs car mon document Word contenait des contrôles de type htlm que Word ne reconnaissait plus d’où les messages d’erreur. Et, d’autre part, il y a une erreur dans le code du module de classe nommé : MaClasseTest . Une fois les contrôles de type htlm supprimés tout marche bien avec le code ci-dessous.

    Donc, la solution :

    Code du module de classe nommé : MaClasseTest

    Code Vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public WithEvents BoutonInstance As CommandButton
     
    Private Sub BoutonInstance_Click()
     
        If BoutonInstance.Name = "CommandButton1" Then
            MsgBox "La sélection est : " & BoutonInstance.Caption 'Action spécifique à l'instance dont le nom est CommandButton1
            Call TestRemplissage 'Appel d’une autre procédure
        End If
     
    End Sub

    Code d’un autre module (Standard) :

    Dans le Sub ActiveEvenementsTest() qui utilise la collection InlineShapes, supprimez la ligne 28 du code : On Error Resume Next.

    Puis cela fonctionne correctement.

    Voilà la réponse pour toute personne intéressée.

    Merci pour les tutos.

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

Discussions similaires

  1. [VB6]Remplissage du formulaire d'une page web
    Par tifosi49 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 18/08/2005, 11h13
  2. Réponses: 15
    Dernier message: 26/06/2005, 15h53
  3. Réponses: 7
    Dernier message: 03/12/2004, 10h15
  4. Compression d'une série d'images jpeg
    Par Tchello dans le forum Langage
    Réponses: 3
    Dernier message: 31/08/2003, 19h59
  5. Créer une série dans un chart
    Par cyrose dans le forum C++Builder
    Réponses: 5
    Dernier message: 28/11/2002, 11h37

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