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

Requêtes et SQL. Discussion :

Problème de requête d'union en VBA [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Problème de requête d'union en VBA
    Bonjour,

    J'ai besoin d'utiliser une requête d'union mais j'ai un problème de syntaxe et je ne vois pas où il peut être.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        SQl = "SELECT " & Table_DOC & ".* " & _
        "FROM BOUton LEFT JOIN (IMPression LEFT JOIN " & Table_DOC & " ON IMPression.IMP_Doc = " & Table_DOC & ".DOC_Num_Bis) ON BOUton.BOU_Num = IMPression.IMP_Bou " & _
        "WHERE (BOUton.BOU_Nom = '" & Bimp & "' AND Impression.IMP_Actif = True AND " & Table_DOC & ".DOC_Actif = True) " & _
        "UNION " & _
        "SELECT " & Table_DOC & ".* " & _
        "FROM " & Table_DOC & " " & _
        "WHERE " & Table_DOC & ".DOC_Actif=True AND " & Table_DOC & ".DOC_Var Is Not Null AND TestVarVal(" & Table_DOC & ".DOC_Var)=True) " & _
        "ORDER BY " & Table_DOC & ".DOC_Lib;"
    Je me demande si l'appel de la fonction TestVarVal dans le dernier WHERE est possible.

    Merci de votre aide
    Les solutions les plus simples sont les plus efficaces

  2. #2
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 284
    Points : 284
    Points
    284
    Par défaut
    Bonjour,
    Peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQl = _
    "SELECT * " & _
    "FROM BOUton LEFT JOIN (IMPression LEFT JOIN Table_DOC ON IMPression.IMP_Doc=Table_DOC.DOC_Num_Bis) ON BOUton.BOU_Num=IMPression.IMP_Bou " & _
    "WHERE (BOUton.BOU_Nom =""" & Bimp & """ AND Impression.IMP_Actif=True AND Table_DOC.DOC_Actif=True) " & _
    "UNION " & _
    "SELECT * " & _
    "FROM Table_DOC " & _
    "WHERE Table_DOC.DOC_Actif=True AND Table_DOC.DOC_Var Is Not Null AND TestVarVal(Table_DOC.DOC_Var)) " & _
    "ORDER BY Table_DOC.DOC_Lib;"
    avec les deux "SELECT" qui doivent retourner le même nombre de champs.
    Un travail qui plait est à moitié fait.

  3. #3
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    Je me demande si l'appel de la fonction TestVarVal dans le dernier WHERE est possible.
    aucune raison pour que cela ne le soit pas. Par contre, si le paramètre de la fonction est de type texte il faudrait ajouter des apostrophes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "WHERE " & Table_DOC & ".DOC_Actif=True AND " & Table_DOC & ".DOC_Var Is Not Null AND TestVarVal('" & Table_DOC & ".DOC_Var')=True) " & _
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Bien vu Tee ;-)

    Bon, j'ai rectifié mais j'ai toujours une erreur de syntaxe :

    Le code actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SQl = "SELECT " & Table_DOC & ".* " & _
        "FROM BOUton LEFT JOIN (IMPression LEFT JOIN " & Table_DOC & " ON IMPression.IMP_Doc = " & Table_DOC & ".DOC_Num_Bis) ON BOUton.BOU_Num = IMPression.IMP_Bou " & _
        "WHERE (BOUton.BOU_Nom = '" & Bimp & "' AND Impression.IMP_Actif = True AND " & Table_DOC & ".DOC_Actif = True) " & _
        "UNION " & _
        "SELECT " & Table_DOC & ".* " & _
        "FROM " & Table_DOC & " " & _
        "WHERE " & Table_DOC & ".DOC_Actif=True AND " & Table_DOC & ".DOC_Var Is Not Null AND TestVarVal('" & Table_DOC & ".DOC_Var')=True) " & _
        "ORDER BY " & Table_DOC & ".DOC_Lib;"
    Nom : 2020-01-21_153529.jpg
Affichages : 383
Taille : 151,4 Ko Copie d'écran de la requête SQL composée

    Merci de votre aide
    Les solutions les plus simples sont les plus efficaces

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Merci Tortille,

    J'ai testé ton code mais j'ai toujours une erreur de syntaxe
    Les solutions les plus simples sont les plus efficaces

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Le problème est bien dans l'utilisation de la fonction.

    C'est ce bout de code qui pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ". . . AND TestVarVal('" & Table_DOC & ".DOC_Var')=True . . ."
    Les solutions les plus simples sont les plus efficaces

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Je précise que j'utilise la requête SQL avec le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms("F_Impression").Form.RecordSource = SQl
    Les solutions les plus simples sont les plus efficaces

  8. #8
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 284
    Points : 284
    Points
    284
    Par défaut
    if faut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "SELECT * FROM ..."
    ' à la place de 
    "SELECT " & Table_DOC & ".* FROM ..."
    pour la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND TestVarVal(DOC_Var)=True
    Un travail qui plait est à moitié fait.

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Testé Tortille mais toujours le même problème.

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SQl = "SELECT * " & _
        "FROM BOUton LEFT JOIN (IMPression LEFT JOIN " & Table_DOC & " ON IMPression.IMP_Doc = " & Table_DOC & ".DOC_Num_Bis) ON BOUton.BOU_Num = IMPression.IMP_Bou " & _
        "WHERE (BOUton.BOU_Nom = '" & Bimp & "' AND Impression.IMP_Actif = True AND " & Table_DOC & ".DOC_Actif = True) " & _
        "UNION " & _
        "SELECT * " & _
        "FROM " & Table_DOC & " " & _
        "WHERE " & Table_DOC & ".DOC_Actif=True AND " & Table_DOC & ".DOC_Var Is Not Null AND TestVarVal(DOC_Var)=True)" & _
        "ORDER BY " & Table_DOC & ".DOC_Lib;"
    Les solutions les plus simples sont les plus efficaces

  10. #10
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 284
    Points : 284
    Points
    284
    Par défaut
    Quand j'ai une requête UNION qui coince je teste chaque requêtes séparément dans l'assistant, dans ce cas, si c'est à cause de la fonction, l’assistant te donnera plus d'indications pour trouver l'erreur.
    Un travail qui plait est à moitié fait.

  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Bonjour,

    Il faut veillez à ce que tes deux SELECT te retourne le même nombre de champs et la même dénomination.
    Dans ton premier SELECT * il y'a une jointure qui disparait dans le deuxième.
    Amicalement

  12. #12
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    DM la jointure n'influence les champs restitués car dans les deux cas, je fais un select * from table_doc. Je me trompes pas si ?
    Les solutions les plus simples sont les plus efficaces

  13. #13
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    peut-on voir le code de TestVarVal ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  14. #14
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Merci Tortille,

    Super idée de tester les requêtes séparément car ça permet effectivement d'avoir plus d'infos sur le problème.
    Et bonne intuition Tee car le problème venais effectivement de ma fonction qui elle même, appel une autre fonction, et le tout en passant un paramètre qui dans certain cas prend la valeur Null.
    Et le problème était que mon paramètre était typé chaine donc problème avec le Null.

    Voilà, réglé, merci à vous ;-)
    Les solutions les plus simples sont les plus efficaces

  15. #15
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    J'ai réussi à faire ma requête d'union mais maintenant, elle me pose un autre problème.

    Les enregistrements listés dans le formulaire ne sont pas modifiables et ça me bloque car j'ai besoin due des case à cocher lié à des oui/non soient cliquable.

    Est-ce normal qu'une requête UNION bloque la modification ?
    Y'a t'il moyen de contourner le problème ?

    Merci de votre aide
    Les solutions les plus simples sont les plus efficaces

  16. #16
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,
    Est-ce normal qu'une requête UNION bloque la modification ?
    oui, une requête UNION ne peut pas être mise à jour. Cela se comprend vu que c'est concaténation de données d'une ou plusieurs tables.
    Y'a t'il moyen de contourner le problème ?
    cela dépend de ton besoin: tu peux faire une création de table temporaire en utilisant ta requête union, mais il faudra y mémoriser la clé unique de la table d'origine pour pouvoir la mettre à jour.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  17. #17
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Merci de ton aide Tee,

    C'est pas mal cette idée de création de table temporaire.
    Je vais explorer merci cette piste.

    Merci encore ;-)
    Les solutions les plus simples sont les plus efficaces

  18. #18
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Je te soumet mon code Tee car j'ai un doute sur la manière de faire pour créer ma table temporaire

    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
     
    Private Sub Form_Open(Cancel As Integer)
    On Error GoTo Erreur
     
        Dim Jeu As New adodb.Recordset
        Dim Con As New adodb.Connection
     
        Set Con = Application.CurrentProject.Connection
     
        'En mode test, table_doc vaut Table_Test
        If Table_DOC = "" Or Table_DOC = "DOCument_Test" Then Table_DOC = "DOCument_Locale"
     
        'On initialise la table des documents
        Call Maj_Doc
     
        'Si la variable Ent_Mail est renseignée, la case DOC_Mail est activée
        If TestMail(Ent_Mail) = True Then
            Me.DOC_Mail.Enabled = True
        Else
            Me.DOC_Mail.Enabled = False
        End If
     
        'On sélectionne les documents à afficher
        SQl = "SELECT " & Table_DOC & ".* " & _
        "FROM BOUton LEFT JOIN (IMPression LEFT JOIN " & Table_DOC & " ON IMPression.IMP_Doc = " & Table_DOC & ".DOC_Num_Bis) ON BOUton.BOU_Num = IMPression.IMP_Bou " & _
        "WHERE (BOUton.BOU_Nom = '" & Bimp & "' AND Impression.IMP_Actif = True AND " & Table_DOC & ".DOC_Actif = True) " & _
        "UNION " & _
        "SELECT " & Table_DOC & ".* " & _
        "FROM " & Table_DOC & " " & _
        "WHERE (((TestVarVal([DOC_Var])) = True) And ((" & Table_DOC & ".DOC_Actif) = True) And ((" & Table_DOC & ".DOC_Var) Is Not Null)) " & _
        "ORDER BY " & Table_DOC & ".DOC_Lib;"
     
        'On récupère le jeu d'enregistrements
        Jeu.Open SQl, Con, adOpenKeyset, adLockReadOnly
     
        'On crée la requête de création de table
        SQl = "SELECT Jeu!DOC_Num, Jeu!DOC_Lib, Jeu!DOC_Select, Jeu!DOC_Nb, Jeu!DOC_Prev, Jeu!DOC_Envoi_Mail, Jeu!DOC_Pdf " & _
        "INTO Doc_Select_Temp " & _
        "FROM Jeu;"
     
        'On exécute le code SQL de création de table
        DoCmd.RunSQL SQl
     
        'On affecte la table créée comme source du formulaire
        Forms("F_Impression").Form.RecordSource = Doc_Select_Temp
     
    Sortir:
        Exit Sub
     
    Erreur:
        MsgBox err.Description
        Resume Sortir
     
    End Sub
    Les solutions les plus simples sont les plus efficaces

  19. #19
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    on peut faire plus simple: inutile de charger le jeu de données, puisque la requête de création de table va le faire:
    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
    Private Sub Form_Open(Cancel As Integer)
    On Error GoTo Erreur
     
        'En mode test, table_doc vaut Table_Test
        If Table_DOC = "" Or Table_DOC = "DOCument_Test" Then Table_DOC = "DOCument_Locale"
     
        'On initialise la table des documents
        Call Maj_Doc
     
        'Si la variable Ent_Mail est renseignée, la case DOC_Mail est activée
        If TestMail(Ent_Mail) = True Then
            Me.DOC_Mail.Enabled = True
        Else
            Me.DOC_Mail.Enabled = False
        End If
        'Me.DOC_Mail.Enabled = TestMail(Ent_Mail) '<==== devrait fonctionner aussi ...
     
        'On sélectionne les documents à afficher
        SQl = "SELECT " & Table_DOC & ".* " & _
        "FROM BOUton LEFT JOIN (IMPression LEFT JOIN " & Table_DOC & " ON IMPression.IMP_Doc = " & Table_DOC & ".DOC_Num_Bis) ON BOUton.BOU_Num = IMPression.IMP_Bou " & _
        "WHERE (BOUton.BOU_Nom = '" & Bimp & "' AND Impression.IMP_Actif = True AND " & Table_DOC & ".DOC_Actif = True) " & _
        "UNION " & _
        "SELECT " & Table_DOC & ".* " & _
        "FROM " & Table_DOC & " " & _
        "WHERE (((TestVarVal([DOC_Var])) = True) And ((" & Table_DOC & ".DOC_Actif) = True) And ((" & Table_DOC & ".DOC_Var) Is Not Null)) " & _
        "ORDER BY " & Table_DOC & ".DOC_Lib"  ' <==== enlever le caractère de fin d'instruction du SQL (;) pour pouvoir l'utiliser plus bas en sous-requête
     
        'On exécute le code de création de table en utilisant le code SQL créé précédemment
        CurrentDb.Execute "SELECT * INTO Doc_Select_Temp FROM (" & SQl & ");", dbFailOnError
     
        'On affecte la table créée comme source du formulaire
        Forms("F_Impression").Form.RecordSource = Doc_Select_Temp
     
    Sortir:
        Exit Sub
     
    Erreur:
        MsgBox err.Description
        Resume Sortir
     
    End Sub
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  20. #20
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Super Tee,

    Merci de ton aide.
    Ça fonctionne mais il y a une petite lenteur. Je pense que c'est lié à création de la table
    Ensuite, à la 2ème fois, il me dit que la table existe déjà. Je dois la supprimer selon toi ?

    Est-ce qu'il faudrait mieux que je ne fasse que vider et remplir ma table temporaire ?

    Merci encore de ton aide ;-)
    Les solutions les plus simples sont les plus efficaces

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/12/2006, 15h19
  2. [VBA]Problème pour requête VBA
    Par clairette31 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 13/07/2006, 10h48
  3. [VBA - ACCESS 2002] Problème RecordSet/Requête SQL
    Par SamLeChiseuji dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 16/06/2006, 10h01
  4. Problème de requête en VBA
    Par otravaglini dans le forum Access
    Réponses: 2
    Dernier message: 20/04/2006, 11h19
  5. Problème requête avec UNION et ORDER BY
    Par Yann21 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/12/2003, 11h02

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