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

VB 6 et antérieur Discussion :

Compactage base Access 2010 avec JRO


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Compactage base Access 2010 avec JRO
    Bonjour à tous,

    dans mon entreprise je developpe avec VB6 et Office 2003. Depuis quelques semaines nous avons migré sous Office 2010.
    Je fais donc évoluer mes applis (extention de la base accdb au lieu de mdb, chaine de connection, etc...)
    Par contre je compacte certaines de ces bases avec JRO depuis VB et après compactage, la base de données revient au format Acces 2003.
    Le problème est le même que la base soit protégée par mot de passe ou pas.

    Mon code :
    Appli.Chemin étant le chemin du dossier contenant la base données accdb
    Appli.CheminBase étant le chemin et le nom de la base données accdb
    Appli.CleCryptage étant le mot de passe de la base de données

    Dim JRO As New JRO.JetEngine

    Source = "Provider=Microsoft.ACE.OLEDB.12.0;"
    Source = Source & "Jet OLEDB:Engine Type=5;Data Source=" & Appli.CheminBase & ";"
    Source = Source & "Jet OLEDB:Database Password=" & Appli.CleCryptage & ";"

    Cible = "Provider=Microsoft.ACE.OLEDB.12.0;"
    Cible = Cible & "Jet OLEDB:Engine Type=5;Data Source =" & Appli.Chemin & "BaseTempo.accdb;"
    Cible = Cible & "Jet OLEDB:Database Password=" & Appli.CleCryptage & ";"

    JRO.CompactDatabase Source, Cible
    Set JRO = Nothing

    Kill Appli.CheminBase
    Name Appli.Chemin & "BaseTempo.accdb" As Appli.CheminBase

    Si quelqu'un a déjà résolu ce problème, il me rendrait grandement service.
    Merci d'avance et bonne journée.

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 145
    Points
    145
    Par défaut SANS REPONSE
    1 an plus tard je me trouve confronté au même problème et mes multiples recherches ne donnent rien.

    La méthode indiquée par "dany108" est celle préconisée par Microsoft mais le fichier obtenu après compactage est au format 2000/2003!
    Outre la perte des caractéristiques particulières liées au format 2010 le fichier de verrouillage reprend l'extension "mdb" au lieu de "lacccdb".

    Alors, vraiment pas d'idée ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2013
    Messages : 18
    Points : 17
    Points
    17
    Par défaut Compactage Base ACCESS 2016
    Bonjour à tous,

    Et 3 ans plus tard le problème reste entier : JRO ne fonctionne qu'avec "Provider=Microsoft.Jet.OLEDB.4.0" et pas avec "Provider=Microsoft.ACE.OLEDB.12.0;". La méthode JRO.CompactDatabase Source, Cible s'arrête avec le message "Argument non valide".

    Merci à quiconque trouvera une solution

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 145
    Points
    145
    Par défaut Moteur de données Access
    Bonjour,

    J'ai modifié mes applications VB6 et VB.net accédant à des bases Access pour utiliser le moteur "Microsoft Office 14.0 Access Database engine Object Library".
    Cette librairie me permet d'utiliser du code DAO et je compacte les bases Access (2000, 2003, 2010) protégées ou non sans problème - mais j'ai mis du temps à comprendre !

    Voici un extrait de code effectuant le compactage d'une base, les instructions varient selon qu'on utilise un fichier système (identification de l'opérateur connecté) ou pas.
    S'il on utilise un fichier système je ne prends pas en charge le cas ou la base serait elle-même protégée par mot de passe - je ne pratique pas comme ça.
    Si on n'a pas de fichier système la base peut être protégée (variable Pw renseignée) ou pas (Pw = "")

    Source = nom complet de la base à compacter
    Cible = nom complet de la base compactée
    FichierSystème = nom complet du fichier système si utilisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    '  compactage & réparation automatique
    If FichierSystème = "" Then '  pas de workgroup, vraisemblablement format 2010
       If Pw <> "" Then   '  base 2010 protégée par mot de passe contenu dans la variable Pw
          Pw = ";pwd=" & Pw
          Call DBEngine.CompactDatabase(Source, cible, Pw, , Pw)
       Else   ' pas de mot de passe
          Call DBEngine.CompactDatabase(Source, cible)
       End If '  Pw
    Else   '  utilise l'identification du fichier système; fournis dans cet exemple par les variables gUserId et gUserPwd
       DBEngine.DefaultPassword = gUserPwd
       DBEngine.DefaultUser = gUserId
       Call DBEngine.CompactDatabase(Source, cible)
    End If
    En espérant que ça serve...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2013
    Messages : 18
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Depite Voir le message
    Bonjour,

    J'ai modifié mes applications VB6 et VB.net accédant à des bases Access pour utiliser le moteur "Microsoft Office 14.0 Access Database engine Object Library".
    Cette librairie me permet d'utiliser du code DAO et je compacte les bases Access (2000, 2003, 2010) protégées ou non sans problème - mais j'ai mis du temps à comprendre !

    Voici un extrait de code effectuant le compactage d'une base, les instructions varient selon qu'on utilise un fichier système (identification de l'opérateur connecté) ou pas.
    S'il on utilise un fichier système je ne prends pas en charge le cas ou la base serait elle-même protégée par mot de passe - je ne pratique pas comme ça.
    Si on n'a pas de fichier système la base peut être protégée (variable Pw renseignée) ou pas (Pw = "")

    Source = nom complet de la base à compacter
    Cible = nom complet de la base compactée
    FichierSystème = nom complet du fichier système si utilisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    '  compactage & réparation automatique
    If FichierSystème = "" Then '  pas de workgroup, vraisemblablement format 2010
       If Pw <> "" Then   '  base 2010 protégée par mot de passe contenu dans la variable Pw
          Pw = ";pwd=" & Pw
          Call DBEngine.CompactDatabase(Source, cible, Pw, , Pw)
       Else   ' pas de mot de passe
          Call DBEngine.CompactDatabase(Source, cible)
       End If '  Pw
    Else   '  utilise l'identification du fichier système; fournis dans cet exemple par les variables gUserId et gUserPwd
       DBEngine.DefaultPassword = gUserPwd
       DBEngine.DefaultUser = gUserId
       Call DBEngine.CompactDatabase(Source, cible)
    End If
    En espérant que ça serve...
    Bonjour,
    Et merci pour votre aide mais je n'y arrive toujours pas : la méthode CompacDataBase, si elle fonctionne parfaitement avec les bases ACCESS *.mdb provoque une erreur pour les bases ACCESS *.accdb :

    "Une exception non gérée du type 'System.Runtime.InteropServices.COMException' s'est produite dans CompactDataBase.exe"
    "Informations supplémentaires*: Format de base de données ("*****************.accdb") non reconnu."

    Je pense que le problème se situe soit dans les Imports, soit dans les références, soit dans les 2

    Références :
    Nom : Captureref.JPG
Affichages : 975
Taille : 31,2 Ko

    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
    Imports System.Data
    Imports System.Runtime.InteropServices
    Imports System.IO
    Imports DAO
    'Imports DAO.LanguageConstants
     
    Public Class Form1
        Dim infoReader As System.IO.FileInfo
        Dim strSourcePath As String = ""
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            'OpenFileDialog1.Filter = "Base ACCESS 2010 (*.accdb)|*.accdb"  '   activer pour access 2010
            OpenFileDialog1.Filter = "Base ACCESS 97 (*.mdb)|*.mdb"         '   activer pour access 97
            OpenFileDialog1.ShowDialog()
            Label1.Text = OpenFileDialog1.FileName
            strSourcePath = Label1.Text
            infoReader = My.Computer.FileSystem.GetFileInfo(strSourcePath)
            Dim SizeBefore As Double = infoReader.Length
            Label4.Text = Format(SizeBefore / 1048576, "###.# Mo")
        End Sub
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim DBE As New DBEngine
     
            'Dim strDestPath As String = Replace(Label1.Text, ".accdb", "_new.accdb")  '   activer pour access 2010
            Dim strDestPath As String = Replace(Label1.Text, ".mdb", "_new.mdb")       '   activer pour access 97
            infoReader = My.Computer.FileSystem.GetFileInfo(strDestPath)
            If infoReader.Exists Then Kill(strDestPath)
     
            DBE.CompactDatabase(strSourcePath, strDestPath)
     
            infoReader = My.Computer.FileSystem.GetFileInfo(strDestPath)
            Dim SizeAfter As Double = infoReader.Length
            Label5.Text = Format(SizeAfter / 1048576, "###.# Mo")
        End Sub
    End Class
    Merci si vous pouvez m'aider

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 145
    Points
    145
    Par défaut
    ATTENTION: ce n'est pas Microsoft.Office.interop.Access.DAO que j'utilise mais "Microsoft Office 14.0 Access Database engine Object Library" comme je l'indiquais dans mon précédent Post.

    Est-ce que ça te pose un problème d'ajouter cette ressource à ton projet ?
    Elle offre l'intégralité des commandes de gestion des objets de bases de données Access 2010 en DAO dont le compactage des bases Accdb comme je le montre dans mon Post.

    A toutes fins utiles et pour qu'il n'y ait pas de confusion voici le lien de téléchargement de cette ressource:
    https://www.microsoft.com/fr-fr/down....aspx?id=13255

    Je précise encore que, bien que j'ai utilisé un extrait de code VB6 j'emploie également cette ressource dans des projets VB.net.

    Bon code!

  7. #7
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2013
    Messages : 18
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Le problème semble venir de VB.NET. En effet, j'ai créé un projet en VB6
    Premières lignes du fichier VBP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Type=Exe
    Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\Windows\SysWOW64\stdole2.tlb#OLE Automation
    Reference=*\G{4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28}#c.0#0#C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\ACEDAO.DLL#Microsoft Office 14.0 Access database engine Object Library
    Reference=*\G{420B2830-E718-11CF-893D-00A0C9054228}#1.0#0#C:\Windows\SysWOW64\scrrun.dll#Microsoft Scripting Runtime
    Object={F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0; COMDLG32.OCX
    Form=Form1.frm
    ...................................
    Code de la Form1 :

    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
    Dim objet_fso As New FileSystemObject
    Dim f As File
    Dim strSourcePath As String
    Dim strDestPath As String
     
    Private Sub btnChoisir_Click()
        Label1 = ""
        Label2 = ""
        Label3 = ""
        Label4 = ""
        If Option1 Then
            CommonDialog1.Filter = "Base ACCESS 2010 (*.accdb)|*.accdb"
        ElseIf Option2 Then
            CommonDialog1.Filter = "Base ACCESS 97 (*.mdb)|*.mdb"
        End If
        CommonDialog1.ShowOpen
        strSourcePath = CommonDialog1.FileName
        Label1.Caption = strSourcePath
        Set f = objet_fso.GetFile(strSourcePath)
        Label3.Caption = Format(f.Size / 1024, "### ### Ko")
        btnCompacter.Enabled = Len(strSourcePath) <> 0
    End Sub
     
    Private Sub btnCompacter_Click()
        If Option1 Then
            strDestPath = Replace(strSourcePath, ".accdb", "_compacted.accdb")
        ElseIf Option2 Then
            strDestPath = Replace(strSourcePath, ".mdb", "_compacted.mdb")
        End If
        If objet_fso.FileExists(strDestPath) Then
            Dim Effacer As VbMsgBoxResult
            Effacer = MsgBox("Le fichier compacté " & strDestPath & " existe déjà. Voulez-vous le remplacer ?", vbYesNo + vbDefaultButton2)
            If Effacer = vbNo Then Exit Sub
            Kill strDestPath
        End If
     
        Label2.Caption = strDestPath
        DBEngine.CompactDatabase strSourcePath, strDestPath
        Set f = objet_fso.GetFile(strDestPath)
        Label4.Caption = Format(f.Size / 1024, "### ### Ko")
        MsgBox ("Compactage terminé avec succès")
    End Sub
     
    Private Sub Form_Load()
        Set objet_fso = CreateObject("Scripting.FileSystemObject")
    End Sub
    Ce code fonctionne parfaitement et compacte toutes les bases ACCESS sans avoir intégré la référence à DAO
    AccessVersion Build Version ProjVer
    MDB 07.53 5903 3.0 Standard Jet DB
    ACCDB 08.50 6620 4.0 Standard Jet DB
    ACCDB 08.50 266 4.0 140 Standard Jet DB
    ACCDB 09.50 12.0 140 Standard ACE DB

    J'ai tenté de créer un projet similaire en VB.NET :
    Références du fichier VBPROJ :
    ........................................
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <COMReference Include="Microsoft.Office.Interop.Access.Dao">
          <Guid>{4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28}</Guid>	(identique à celle de VB6 : Reference=*\G{4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28})
          <VersionMajor>12</VersionMajor>
          <VersionMinor>0</VersionMinor>
          <Lcid>0</Lcid>
          <WrapperTool>primary</WrapperTool>
          <Isolated>False</Isolated>
          <EmbedInteropTypes>True</EmbedInteropTypes>
        </COMReference>
    ........................................

    Code de la Form :

    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
    Imports System.Data
    Imports System.Runtime.InteropServices
    Imports System.IO
    Imports DAO
     
    Public Class Form1
        Dim infoReader As System.IO.FileInfo
        Dim strSourcePath As String = ""
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            OpenFileDialog1.Filter = "Base ACCESS 2010 (*.accdb)|*.accdb"  '   activer pour access 2010
            'OpenFileDialog1.Filter = "Base ACCESS 97 (*.mdb)|*.mdb"         '   activer pour access 97
            OpenFileDialog1.ShowDialog()
            Label1.Text = OpenFileDialog1.FileName
            strSourcePath = Label1.Text
            infoReader = My.Computer.FileSystem.GetFileInfo(strSourcePath)
            Dim SizeBefore As Double = infoReader.Length
            Label4.Text = Format(SizeBefore / 1024, "### ### Ko")
        End Sub
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim DBE As New DBEngine
     
            Dim strDestPath As String = Replace(Label1.Text, ".accdb", "_new.accdb")  '   activer pour access 2010
            'Dim strDestPath As String = Replace(Label1.Text, ".mdb", "_new.mdb")       '   activer pour access 97
            infoReader = My.Computer.FileSystem.GetFileInfo(strDestPath)
            If infoReader.Exists Then Kill(strDestPath)
     
            DBE.CompactDatabase(strSourcePath, strDestPath)
     
            infoReader = My.Computer.FileSystem.GetFileInfo(strDestPath)
            Dim SizeAfter As Double = infoReader.Length
            Label5.Text = Format(SizeAfter / 1024, "### ### Ko")
            MsgBox("Compactage terminé")
        End Sub
    End Class
    Ce code fonctionne et compacte les bases ACCESS après avoir intégré la référence à DAO
    AccessVersion Build Version ProjVer
    MDB 07.53 5903 3.0 Standard Jet DB
    ACCDB 08.50 6620 4.0 Standard Jet DB
    ACCDB 08.50 266 4.0 140 Standard Jet DB

    Mais il renvoie une erreur pour les bases ACCESS
    ACCDB 09.50 12.0 140 Standard ACE DB

    Pièce jointe 239991

    Je suis donc toujours à la recherche d'une solution pour les bases ACCESS 2016

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 145
    Points
    145
    Par défaut
    Très brièvement car j'ai peu de temps pour développer ce soir voici un extrait du code VB.net où je réalise un compactage.

    Je précise que dans sa forme initiale le compactage était utilisé pour convertir une base Access 2000/2003 au format 2010. Depuis je suis également amené à utiliser ce code pour appliquer le mot de passe "MPv6" à une base qui a déjà été convertie sans mot de passe.

    Peut-être faut-il fournir nécessairement indiquer la version de format de la base cible (ici dbversion140 = 256)...

    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
    	Friend Function ConvertirBases(ByVal SourceV5 As String, ByVal DestV6 As String) As Boolean
    		Const dbversion140 As Long = 256
     
    		Try
    			Cursor.Current = Cursors.WaitCursor
    			'DBE.CompactDatabase(SourceV5, DestV6,  ";pwd=" & MPv6)
    			DBE.CompactDatabase(SourceV5, DestV6, , dbversion140, ";pwd=" & MPv6)
    			Return True
     
    		Catch ex As Exception
    			MsgBox("Echec de la conversion du fichier")
    			Return False
    		Finally
    			Cursor.Current = Cursors.Default
    		End Try
     
    	End Function

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Avec beaucoup de retard, mais la discussion n'est pas résolue, j'utilise ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub VerificationBase()
            Dim JRO As New JRO.JetEngine
     
            Dim FileSource = Application.StartupPath & "\Fichier1.accdb"
            Dim source = "Provider=Microsoft.ACE.OLEDB.16.0;Data Source=" & FileSource
     
            Dim FileCompact = Application.StartupPath & "\Fichier2.accdb"
            Dim Compact = "Provider=Microsoft.ACE.OLEDB.16.0;Data Source=" & FileCompact & ";Jet OLEDB:Engine Type=5"
     
            JRO.CompactDatabase(source, Compact)
            File.Delete(FileSource)
            File.Move(FileCompact, FileSource)
        End Sub
    En ajoutant la référence "Microsoft Jet and Replication Objects 2.6 Library"
    Si ça peut aider,

    Bonne journée,

Discussions similaires

  1. [XL-2010] Faire fonctionner une requête qui lit une base Access 2010 avec mot de passe
    Par mister red dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/03/2015, 16h39
  2. [AC-2010] Sauvegarde base Access 2010 avec scrip powershell
    Par patito1975 dans le forum Access
    Réponses: 5
    Dernier message: 03/03/2014, 13h00
  3. Réponses: 4
    Dernier message: 20/06/2012, 13h56
  4. [VB6+Base Access]probleme avec des dates calculées
    Par jam92400 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 18/01/2007, 18h26
  5. Réponses: 2
    Dernier message: 23/02/2006, 12h23

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