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 :

Exécuter une macro dans un autre classeur - Application.run avec ou sans paramètre


Sujet :

Macros et VBA Excel

  1. #1
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut Exécuter une macro dans un autre classeur - Application.run avec ou sans paramètre
    Même s'il peut être utilisé pour une procédure placée dans le classeur lui même, Application.run est essentiellement utilisé pour exécuter un procédure située dans un autre classeur ouvert.

    [VBA – Excel]
    Sans paramètre :
    Syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Application.Run "Fichier.xls!'LaMacro'"
    Exécute la procédure LaMacro située dans le fichier "Fichier.xls"

    Ligne de commande placé dans une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        LigneDeCommande = "Fichier.xls! 'LaMacro'"
        Application.Run LigneDeCommande
    Avec paramètre :
    Syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Application.Run "'Fichier.xls'!LaMacro", "LeParamètre"
    Ligne de commande placé dans une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        LigneDeCommande = "Fichier.xls!'LaMacro """ & "LeParamètre" & """'"
        Application.Run LigneDeCommande
    Ecrire la ligne de commande dans l'objet ThisWorkbook d'un classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim NomClasseur$, LeParametre$, NoLigne As Long
        NomClasseur = "UnClasseur.xls" 'Classeur ouvert <> ThisWorkbook.name
        LeParametre = "La donnée"
        With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule 'A adapter
            NoLigne = .CountOfLines
            .InsertLines NoLigne + 1, "Private Sub Workbook_Open()"
            .InsertLines NoLigne + 2, "    Application.Run """ & "'" & NomClasseur & "'!NomDeLaMacro"", """ & LeParametre & """"
            .InsertLines NoLigne + 3, "End sub"
        End With
    Correction :
    Le nom du fichier contenant la macro lancée par Application.run ne doit pas inclure le chemin

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut Utiliser Application.run pour faire appel à une fonction
    Outre les subroutines, Application.run peut être utilisé pour récupérer le résultat d'une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Result As String
        Result = Application.Run("LeClasseur.xls!'Palindrome'", "Elu par cette crapule")
        MsgBox StrReverse(Result)

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonsoir Ouskel'n'or

    Peut-on appeler une macro d'un autre classeur ?


    bonne soirée
    michel

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Bonsoir Michel,
    En effet mais ce n'est pas la même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Function Palindrome(LeMot) As String
         For i = Len(LeMot) To 1 Step -1
              Palindrome = Palindrome + Mid(LeMot, i, 1)
         Next
    End Function


    J'ai chercher à "Comment... " pour être bien certain... c'est à "Peut-on..." que j'aurais dû chercher
    De même, j'ai cherché dans la FAQ la manière la plus simple d'écrire une procédure par macro mais ne l'ai pas trouvée. Et pourtant je l'ai eu lue.

    Mais je réponds à ton "observation" :
    Citation Envoyé par SilkyRoad
    bonsoir Ouskel'n'or

    Peut-on appeler une macro d'un autre classeur ?

    bonne soirée
    michel
    Oui, mais peut-être le développement des différentes méthodes d'utilisation apporterait-il un plus.

    Edit
    Pour illustrer mon observation, tu peux toujours jeter un oeil ici

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    rebonsoir


    Oui, mais peut-être le développement des différentes méthodes d'utilisation apporterait-il un plus.
    Oui effectivement.
    dans ce cas il y a aussi un article à ce sujet:

    http://silkyroad.developpez.com/VBA/...sicEditor/#LVI


    bonne soirée
    michel

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu as raison.

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 645
    Points : 34 353
    Points
    34 353
    Par défaut
    bonjour tout le monde,
    petite question autour de ce Application.Run :
    dans la partie d'envoi des paramètres, si je connais le nombre de paramètres passés, pas de pb.
    Maintenant, dans mon cas, si je balance en paramètres d'entrée ceci :
    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
    Public Sub LancementMacro(NomMacro As String, ListeParametres As String)
    'les parametres sont séparés par des pipes |
    Dim a As Variant
    'test par le split
    a = Split(ListeParametres, "|")
    Debug.Print """" & Replace(ListeParametres, "|", """, """) & """"
    'Application.Run NomMacro, a 'plante : normal ?
     
    End Sub
     
     
    Function test(pioupi1 As String, pioupi2 As String, pioupi3 As String, pioupi4 As String, pioupi5 As String)
        Debug.Print pioupi1 & pioupi2
     
    End Function
     
    Sub test1()
    LancementMacro "test", "1|2|3|5|7"
    End Sub
    Comment puis-je transformer la liste de paramètres sous forme texte en argument ?
    y a -t-il une méthode via une boucle for et un ubound ou alors une suite de "_ &" à concaténer dans un tableau ?

    Merci pour vos idées.

  8. #8
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Bonsoir,

    'Application.Run NomMacro, a 'plante : normal ?
    Oui. a est un tableau, meme s'il comporte plusieurs elements ceux-ci sont considérés comme un seul argument par l'instruction Run. L'appel de la fonction ne correspond donc pas a sa définition. Une solution simple mais un peu lourde:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Select Case UBound(a)
        Case 0 '1 argument
            Application.Run NomMacro, a(0)
        Case 1
            Application.Run NomMacro, a(0), a(1)
        Case 2
            Application.Run NomMacro, a(0), a(1), a(2)
        Case 3
            Application.Run NomMacro, a(0), a(1), a(2), a(3)
        Case 4
            Application.Run NomMacro, a(0), a(1), a(2), a(3), a(4) 
    End Select
    Cordialement,

    Tirex28/

  9. #9
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 645
    Points : 34 353
    Points
    34 353
    Par défaut
    salut,
    certes, j'avais déjà pensé à cette solution, mais si j'ai 30 paramètres (limite d'application.run) ben je suis b**** (am i famous ? )

  10. #10
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    bonjour à tous

    à l'aide d'un objet collection ca fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test(param As Collection)
        For i = 1 To param.Count
            MsgBox param.Item(i)
        Next i
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub envoi()
        Dim gw As Collection
        Set gw = New Collection
        For i = 1 To 50
            gw.Add "Essai : " & i
        Next i
        Call test(gw)
        Set gw = Nothing
    End Sub
    Bonne journée

  11. #11
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 645
    Points : 34 353
    Points
    34 353
    Par défaut
    salut wilfried,
    j'avoue que ca me soule de dire ca, mais ca m'a pas fait avancer, dans le sens ou je suis bloqué sur la syntaxe derriere de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run NomFonction, Listeparametres
    si je passe Listeparametres en tant que collection, ca me jette avec un "argument non facultatif". Même punition avec le passage d'une chaine de caracteres issues de Listeparametres.

    Ci-dessous, les deux codes qui "plantent". :
    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
    Public Sub LancementMacro(NomMacro As String, ListeParametres As Collection)
     
    Application.Run NomMacro, ListeParametres
     
    End Sub
     
    Function test(pioupi As String, pioupi2 As String, pioupi3 As String, pioupi4 As String, pioupi5 As String)
        Debug.Print pioupi & pioupi2
    End Function
     
    Sub envoi()
        Dim gw As Collection
        Set gw = New Collection
        For i = 1 To 5
            gw.Add "Essai : " & i
        Next i
        LancementMacro "test", gw
        Set gw = Nothing
    End Sub
    et
    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
    Public Sub LancementMacro(NomMacro As String, ListeParametres As Collection)
    'les parametres sont séparés par des pipes |
    Dim a As Variant
    Dim i As Integer
    a = ListeParametres(1)
    For i = 2 To ListeParametres.Count
    a = a & "," & ListeParametres(i)
    Next i
     
    Application.Run NomMacro, a
     
    End Sub
     
     
    Function test(pioupi As String, pioupi2 As String, pioupi3 As String, pioupi4 As String, pioupi5 As String)
        Debug.Print pioupi & pioupi2
    End Function
     
    Sub envoi()
        Dim gw As Collection
        Set gw = New Collection
        For i = 1 To 5
            gw.Add "Essai : " & i
        Next i
        LancementMacro "test", gw
        Set gw = Nothing
    End Sub
    Je suis pas fier de mon code, mais j'en suis là pour le moment... Des idées ?

  12. #12
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Bonsoir,

    Ca peut t'inspirer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
        CallByName Application, "Run", VbMethod, "'Lancer 1,2'"
    End Sub
     
    Sub Lancer(NumOne As Long, NumTwo As Long)
        MsgBox NumOne + NumTwo
    End Sub
    Cordialement,

    Tirex28/

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    tu as essayé de déclarer la collection en public ?
    A tout hasard
    A la réflexion, je doute que ça change quelque chose mais bon...

  14. #14
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    re:

    Pour ma part, je ne pense pas que l'on puisse faire ce que tu cherches à faire, avec une fonction...
    Un fonction permet de renvoyer une valeur par l'intermediaire de son propre nom : Resultat = mafonction(parmetres)

    Le but de passer pas un objet collection, est en fait de ne pas passer les parametres en les nommant un a un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function mafonction( variable as collection) as double
    dim i as integer
    for i = 1 to variable.count
    mafonction = mafonction + variable.item(i)
    next i
    end function
    maintenant si tu veux utiliser des fonctions à toi pour de multiples classeurs, ecrit les dans un classeur, en enregistre les en XLA


    Edition : Oups, une ligne n'etait pas prise dans l'encadrement

  15. #15
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 645
    Points : 34 353
    Points
    34 353
    Par défaut
    salut les gens,
    bon je sens que je vais arrêter de vouloir faire la fonction top mega évolutive.
    tirex, ton code ne marche pas chez moi, il me sort une erreur 2517, "définie par l'application ou par l'objet."

    Je vais passer par le systeme de collection ou de split,et faire un select case du nom de ma macro.

  16. #16
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    re:

    Si tu veux passer à une macro ou une fonction, un nombre aleatoire de parametre, tu ne peux dans ton sub ou function, definir un nombre fixe de variables

    tu as 2 solutions, soit tu passes par des cellules avec une plage nommée evolutive, soit avec un objet collection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    resultat = mafonction(mapagle)
    Function mafonction(maplage as range) as variant
        dim i as long
        i = maplage.cells.count
        mafonction = i
    end function
    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
    sub monsub()
    dim ma_coll as collection, i as integer
    set ma_coll = new collection
    for i = 1 to int(50 * rnd) +1 ' Nombre aleatoire de parametres
        ma_coll.add (i * 10)
    next i
    call test(ma_coll)
    end sub
     
    Sub test(ma_coll as collection)
    dim i as integer
    for i = 1 to ma_coll.count
    msgbox "Essai : " & ma_coll.item(i)
    next i
    end sub
    Bonne journée

  17. #17
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 645
    Points : 34 353
    Points
    34 353
    Par défaut
    merci wilfried, je vais voir ce dont je vais vraiment avoir besoin, histoire d'arrêter de psykoter pour rien

  18. #18
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Bonjour a tous,

    Citation Envoyé par jpcheck
    tirex, ton code ne marche pas chez moi, il me sort une erreur 2517, "définie par l'application ou par l'objet."
    Peut etre une erreur dans la construction de la chaine de caractere, verifie que tu as bien les ' avant le nom de le macro et apres le dernier parametre, normalement ca doit rouler.

    Si tu veux lancer une macro d'un autre classeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
        CallByName Application, "Run", VbMethod, _
            "'NomClasseur.xls'!'Lancer 1,2'"
    End Sub
    
    'Dans un classeur nommé NomClasseur
    Sub Lancer(NumOne As Long, NumTwo As Long)
        MsgBox NumOne + NumTwo
    End Sub
    Cordialement,

    Tirex28/

  19. #19
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Bonjour, et merci aux contributeurs de cette rubrique, notamment à ouskel'n'or pour son résumé en tête

    Je me permets juste de réveiller ce vieux sujet parce que je viens de galérer pendant + de 30 minutes avec une ligne de commande 'Application.Run ...' qui ne déclenche aucune erreur mais qui n'exécute pas la macro !

    Tout le problème tenait dans les ' (guillemets simples) autour du nom de fichier. Le nom du classeur externe contenant la macro à exécuter ne contient pas d'espace, mais des caractères spéciaux comme "-" ou "_".

    Si un modo avait le temps de faire une petite mise à jour de la FAQ (http://excel.developpez.com/faq/index.php?page=VBA#Run), en ajoutant juste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Result = Application.Run("'calcul.xls'!Log10", 1.2)
    Précaution : il est vivement conseillé de mettre toujours le nom du classeur entre guillemets simples (la macro peut ne pas s'exécuter et il n'y a aucun message d'erreur)


Discussions similaires

  1. [XL-2010] Ouverture d'une macro dans un autre classeur et retour.
    Par fredoos dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/06/2015, 23h20
  2. Exécuter une macro dans un autre classeur
    Par Claire IZ dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/12/2014, 20h37
  3. copie d'une macro dans un autre classeur
    Par guypilote dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/08/2009, 17h58
  4. Exécuter une macro dans une autre macro
    Par marc56 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/02/2008, 13h17
  5. Executer une macro dans un autre classeur
    Par nautygirl dans le forum Général VBA
    Réponses: 2
    Dernier message: 30/07/2007, 15h34

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