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 :

Réutilisation possible d'un code VBA pour une application VB ?


Sujet :

VBA Word

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 2
    Par défaut Réutilisation possible d'un code VBA pour une application VB ?
    Bonjour à tous,

    Je ne connais pas très bien le VB : je suis avocat...

    Je vous explique le contexte global de ma demande d'infos.

    J'utilise un logiciel professionnel qui s'appelle CICERON, qui a été compilé avec PowerBuilder et qui, via ODBC, gère une base de données SQL hébergée sur notre serveur.

    Dans ce logiciel, chaque dossier est accessible grâce à l'interface graphique, avec une partie "Documents" qui liste les documents du dossier (.doc, .pdf, etc.).

    Ce logiciel professionnel est génial, mais il lui manque une fonction primordiale : pouvoir enregistrer *simplement* (le mot est important) dans cette liste de documents des documents stockés ailleurs que sur le serveur (sur les ordinateurs de chaque avocat du cabinet).

    La procédure d'enregistrement existe bien, mais elle suppose de faire les opérations suivantes :
    - vous avez un fichier .pdf sur votre ordinateur (envoyé par un client par mail par ex.)
    - vous trouvez le numéro du dossier auquel le rattacher
    - vous ouvrez CICERON
    - vous tapez le numéro du dossier dans la fenêtre de recherche et ouvrez le dossier
    - vous accédez à la liste des documents
    - vous cliquez sur nouveau
    - une fenêtre d'explorateur apparaît : elle explore en priorité le serveur, ce qui est logique
    - vous coupez/collez le document .pdf d'origine dans le dossier correspondant sur le serveur,
    - ce document apparaît et vous pouvez cliquer sur enregistrer pour l'intégrer à la liste de documents du dossier.

    Je cherche donc à concevoir un moyen d'intégrer plus rapidement ces documents à la base de données.

    Les créateurs de CICERON ont conçu une macro qui permet de faire toutes ces opérations en un seul clic pour les documents Word, Excel et les mails quand Word est l'éditeur du message.

    Cette macro est écrite en VBA et la voici :

    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
    Public Sub EnregistrerSousCICERONW()
        Dim dossier As String
        Dim numDossier As Long
     
        dossier = get_user_property("COLDossier")
        DossierCiceron.rb_document.Caption = "Dossier du document (" + dossier + ")"
        If Trim(dossier) <> "" Then
            DossierCiceron.rb_document.Value = True
        Else
            DossierCiceron.rb_actif.Value = True
        End If
     
        DossierCiceron.Show
     
        If DossierCiceron.rb_document.Value = True Then
            'dossier = dossier
        ElseIf DossierCiceron.rb_actif.Value = True Then
            dossier = "0"
        Else
            'dossier = DossierCiceron.sle_dossier.Text
            'on ouvre la recherche multi critére
            numDossier = cherche_dossier(numDossier)
            dossier = CStr(numDossier)
     
        End If
     
        Enregistrer "sous", dossier
    End Sub
    Function cherche_dossier(ByRef dossier As Long)
        Dim w_main_handle As Long
        Dim ret As Long, ret1 As Long
        Dim s_dossier As String
        Dim r As String
     
        w_main_handle = val(ReadRegistry(HKEY_CURRENT_USER, "Software\Ciceron\CICERON WINDOWS", "w_main.handle"))
     
        'MsgBox "cherche_dossier"
        ret = SendMessage(w_main_handle, WM_USER + 2, 1, 0)
     
        'MsgBox "cherche_dossier :" & Str(ret)
        If ret = 1 Then
            r = Space(250)
            ret1 = GetWindowsDirectory(r, 251)
            r = Split(r, Chr$(0))(0)
            s_dossier = Space(200)
            GetPrivateProfileString "MulticritereDossier", "dossier", "", s_dossier, 200, r + "\cic_retour.ini"
            'OutputDebugString ("cherche_dossier :" & s_dossier)
            dossier = val(s_dossier)
            cherche_dossier = dossier
            'MsgBox "2: " & dossier
        End If
     
     End Function
    J'ai pensé pouvoir créer un fichier exécutable à base VB qui serait appelé par un item du menu contextuel Windows (j'ai ajouté une entrée "Enregistrer sous CICERON" dans la base de registre Windows, et je peux y joindre une commande vers un exécutable).

    Le principe serait : on clique droit sur le fichier à importer dans notre base de données, on sélectionne "Enregistrer sous CICERON", s'ouvre une fenêtre demandant le n° du dossier et idéalement après avoir cliqué sur "Ok", le fichier serait enregistré dans la BDD.

    J'ai commencé à travailler sur le code avec Visual Studio 2010 Express, et ça donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    Public Class CICERON
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            'Sortie du programme
            End
        End Sub
        Public Sub EnregistrerSousCICERONW()
            Dim dossier As String
            Dim numDossier As Long
     
            dossier = get_user_property("COLDossier")
            DossierCiceron.rb_document.Caption = "Dossier du document (" + dossier + ")"
            If Trim(dossier) <> "" Then
                DossierCiceron.rb_document.Value = True
            Else
                DossierCiceron.rb_actif.Value = True
            End If
     
            DossierCiceron.Show()
     
            If DossierCiceron.rb_document.Value = True Then
                'dossier = dossier
            ElseIf DossierCiceron.rb_actif.Value = True Then
                dossier = "0"
            Else
                'dossier = DossierCiceron.sle_dossier.Text
                'on ouvre la recherche multi critére
                numDossier = cherche_dossier(numDossier)
                dossier = CStr(numDossier)
     
            End If
     
            Enregistrer(sous, dossier)
        End Sub
        Function cherche_dossier(ByRef dossier As Long)
            Dim w_main_handle As Long
            Dim ret As Long, ret1 As Long
            Dim s_dossier As String
            Dim r As String
     
            w_main_handle = val(ReadRegistry(HKEY_CURRENT_USER, "Software\Ciceron\CICERON WINDOWS", "w_main.handle"))
     
            'MsgBox "cherche_dossier"
            ret = SendMessage(w_main_handle, WM_USER + 2, 1, 0)
     
            'MsgBox "cherche_dossier :" & Str(ret)
            If ret = 1 Then
                r = Space(250)
                ret1 = GetWindowsDirectory(r, 251)
                r = Split(r, Chr$(0))(0)
                s_dossier = Space(200)
                GetPrivateProfileString(MulticritereDossier, "dossier", "", s_dossier, 200, r + "\cic_retour.ini")
                'OutputDebugString ("cherche_dossier :" & s_dossier)
                dossier = val(s_dossier)
                cherche_dossier = dossier
                'MsgBox "2: " & dossier
            End If
     
        End Function
        End Class
    J'ai conçu une form très simple pour entrer le n° du dossier.

    Bien entendu, j'ai bien conscience que le code de la macro VBA ne peut être transposé directement dans un projet VB, et que mes arguments ne sont pas tous définis car... mes connaissances s'arrêtent là.

    J'ai bien entendu appelé mon éditeur de logiciel pro, mais ses techniciens ne semblent pas vouloir me répondre. Ils sont d'ailleurs de moins en moins à développer ce logiciel, qui va être remplacé d'ici un an ou deux. Mais mon cabinet continuera à utiliser le logiciel actuel pour une question de coût.

    Je suis preneur de toute aide, mais je n'attends bien entendu pas que le code me tombe tout chaud dans la bouche. Je suis volontaire pour apprendre, mais je ne sais pas par où commencer.

    A bientôt, et merci d'avance,

    Jeff

  2. #2
    Expert confirmé
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Par défaut
    Salut Jeff,

    Citation Envoyé par JeffCarter Voir le message
    Bonjour à tous,

    Je ne connais pas très bien le VB : je suis avocat...
    Personne n'est parfait


    Je vous explique le contexte global de ma demande d'infos.

    J'utilise un logiciel professionnel qui s'appelle CICERON, qui a été compilé avec PowerBuilder et qui, via ODBC, gère une base de données SQL hébergée sur notre serveur.
    Heureusement que tu dis ne pas connaître

    Dans ce logiciel, chaque dossier est accessible grâce à l'interface graphique, avec une partie "Documents" qui liste les documents du dossier (.doc, .pdf, etc.).

    Ce logiciel professionnel est génial, mais il lui manque une fonction primordiale : pouvoir enregistrer *simplement* (le mot est important) dans cette liste de documents des documents stockés ailleurs que sur le serveur (sur les ordinateurs de chaque avocat du cabinet).

    La procédure d'enregistrement existe bien, mais elle suppose de faire les opérations suivantes :
    - vous avez un fichier .pdf sur votre ordinateur (envoyé par un client par mail par ex.)
    - vous trouvez le numéro du dossier auquel le rattacher
    - vous ouvrez CICERON
    - vous tapez le numéro du dossier dans la fenêtre de recherche et ouvrez le dossier
    - vous accédez à la liste des documents
    - vous cliquez sur nouveau
    - une fenêtre d'explorateur apparaît : elle explore en priorité le serveur, ce qui est logique
    - vous coupez/collez le document .pdf d'origine dans le dossier correspondant sur le serveur,
    - ce document apparaît et vous pouvez cliquer sur enregistrer pour l'intégrer à la liste de documents du dossier.

    Je cherche donc à concevoir un moyen d'intégrer plus rapidement ces documents à la base de données.

    Les créateurs de CICERON ont conçu une macro qui permet de faire toutes ces opérations en un seul clic pour les documents Word, Excel et les mails quand Word est l'éditeur du message.

    Cette macro est écrite en VBA et la voici :

    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
    Public Sub EnregistrerSousCICERONW()
        Dim dossier As String
        Dim numDossier As Long
     
        dossier = get_user_property("COLDossier")
        DossierCiceron.rb_document.Caption = "Dossier du document (" + dossier + ")"
        If Trim(dossier) <> "" Then
            DossierCiceron.rb_document.Value = True
        Else
            DossierCiceron.rb_actif.Value = True
        End If
     
        DossierCiceron.Show
     
        If DossierCiceron.rb_document.Value = True Then
            'dossier = dossier
        ElseIf DossierCiceron.rb_actif.Value = True Then
            dossier = "0"
        Else
            'dossier = DossierCiceron.sle_dossier.Text
            'on ouvre la recherche multi critére
            numDossier = cherche_dossier(numDossier)
            dossier = CStr(numDossier)
     
        End If
     
        Enregistrer "sous", dossier
    End Sub
    Function cherche_dossier(ByRef dossier As Long)
        Dim w_main_handle As Long
        Dim ret As Long, ret1 As Long
        Dim s_dossier As String
        Dim r As String
     
        w_main_handle = val(ReadRegistry(HKEY_CURRENT_USER, "Software\Ciceron\CICERON WINDOWS", "w_main.handle"))
     
        'MsgBox "cherche_dossier"
        ret = SendMessage(w_main_handle, WM_USER + 2, 1, 0)
     
        'MsgBox "cherche_dossier :" & Str(ret)
        If ret = 1 Then
            r = Space(250)
            ret1 = GetWindowsDirectory(r, 251)
            r = Split(r, Chr$(0))(0)
            s_dossier = Space(200)
            GetPrivateProfileString "MulticritereDossier", "dossier", "", s_dossier, 200, r + "\cic_retour.ini"
            'OutputDebugString ("cherche_dossier :" & s_dossier)
            dossier = val(s_dossier)
            cherche_dossier = dossier
            'MsgBox "2: " & dossier
        End If
     
     End Function
    Attention, surtout en tant qu'avocat, tu dois savoir qu'il n'est pas possible de réexploiter la propriété intellectuelle telle qu'elle est définie pour les logiciels sans accord de son propriétaire. Le fait d'avoir acheté un logiciel ne t'en donne qu'un droit d'exploitation, pas plus.

    J'ai pensé pouvoir créer un fichier exécutable à base VB qui serait appelé par un item du menu contextuel Windows (j'ai ajouté une entrée "Enregistrer sous CICERON" dans la base de registre Windows, et je peux y joindre une commande vers un exécutable).
    Super niveau (sans aucune ironie ). Si tu es aussi doué en droit que tu l'es en informatique, en cas de procès je préfère être de ton côté.

    Le principe serait : on clique droit sur le fichier à importer dans notre base de données, on sélectionne "Enregistrer sous CICERON", s'ouvre une fenêtre demandant le n° du dossier et idéalement après avoir cliqué sur "Ok", le fichier serait enregistré dans la BDD.

    J'ai commencé à travailler sur le code avec Visual Studio 2010 Express, et ça donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    Public Class CICERON
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            'Sortie du programme
            End
        End Sub
        Public Sub EnregistrerSousCICERONW()
            Dim dossier As String
            Dim numDossier As Long
     
            dossier = get_user_property("COLDossier")
            DossierCiceron.rb_document.Caption = "Dossier du document (" + dossier + ")"
            If Trim(dossier) <> "" Then
                DossierCiceron.rb_document.Value = True
            Else
                DossierCiceron.rb_actif.Value = True
            End If
     
            DossierCiceron.Show()
     
            If DossierCiceron.rb_document.Value = True Then
                'dossier = dossier
            ElseIf DossierCiceron.rb_actif.Value = True Then
                dossier = "0"
            Else
                'dossier = DossierCiceron.sle_dossier.Text
                'on ouvre la recherche multi critére
                numDossier = cherche_dossier(numDossier)
                dossier = CStr(numDossier)
     
            End If
     
            Enregistrer(sous, dossier)
        End Sub
        Function cherche_dossier(ByRef dossier As Long)
            Dim w_main_handle As Long
            Dim ret As Long, ret1 As Long
            Dim s_dossier As String
            Dim r As String
     
            w_main_handle = val(ReadRegistry(HKEY_CURRENT_USER, "Software\Ciceron\CICERON WINDOWS", "w_main.handle"))
     
            'MsgBox "cherche_dossier"
            ret = SendMessage(w_main_handle, WM_USER + 2, 1, 0)
     
            'MsgBox "cherche_dossier :" & Str(ret)
            If ret = 1 Then
                r = Space(250)
                ret1 = GetWindowsDirectory(r, 251)
                r = Split(r, Chr$(0))(0)
                s_dossier = Space(200)
                GetPrivateProfileString(MulticritereDossier, "dossier", "", s_dossier, 200, r + "\cic_retour.ini")
                'OutputDebugString ("cherche_dossier :" & s_dossier)
                dossier = val(s_dossier)
                cherche_dossier = dossier
                'MsgBox "2: " & dossier
            End If
     
        End Function
        End Class
    J'ai conçu une form très simple pour entrer le n° du dossier.

    Bien entendu, j'ai bien conscience que le code de la macro VBA ne peut être transposé directement dans un projet VB, et que mes arguments ne sont pas tous définis car... mes connaissances s'arrêtent là.

    J'ai bien entendu appelé mon éditeur de logiciel pro, mais ses techniciens ne semblent pas vouloir me répondre. Ils sont d'ailleurs de moins en moins à développer ce logiciel, qui va être remplacé d'ici un an ou deux. Mais mon cabinet continuera à utiliser le logiciel actuel pour une question de coût.

    Je suis preneur de toute aide, mais je n'attends bien entendu pas que le code me tombe tout chaud dans la bouche. Je suis volontaire pour apprendre, mais je ne sais pas par où commencer.

    A bientôt, et merci d'avance,

    Jeff
    Si tu ne te te sers du code VB de ton soft que pour t'en inspirer, on peut sans problème te donner un coup de main. Mais tu es déjà bien armé.

    Le VBA ne se transpose pas directement en VB mais VB permet d'utiliser directement le VBA en passant par les bibliothèques (de code) fournies par les éditeurs (enfin pour nous par Microsoft). Le principe est le suivant :
    VBA est un sous-langage de Visual Basic simplifié (au niveau de la syntaxe) couplé au modèle objet de l'application Office qui expose son modèle et met à disposition des propriétés et des fonctions pour manipuler l'application. Il existe plusieurs tuto sur le sujet chez DVP.com, comme celui sur le VBA d'Excel de bidou, celui de silkyroad sur les lectures/écritures des propriétés des classeurs, la FAQ VB sur la Liaison VB-Office > Word et surtout tous les tuto de Heureux-Oli sur Word.

    Lorsque tu auras lu ces tuto, tu verras que tu es proche (voire très proche) d'aboutir et nous serons plus à même de t'aider de façon efficace. N'hésite pas à poster sur ce forum (de toute façon tu es proche de ton but).

    @+

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 2
    Par défaut
    Bonjour Sepia,

    Merci beaucoup pour ta réponse super rapide.

    Ton avertissement au sujet des droits d'auteur est totalement justifié : j'en suis bien conscient.

    J'avais demandé, avant de commencer à travailler dans mon coin, à l'éditeur de me concevoir ce que je souhaitais, et j'avais proposé de payer ce qu'il fallait.

    Mais je n'ai jamais été contacté par ses techniciens.

    J'ai rappelé le service commercial pour leur indiquer que je commençais à travailler de mon côté sur une solution, et leur ai offert de leur communiquer le produit de mon travail. Ils seront libres de l'intégrer à leurs solutions : je cèderai gratuitement mes propres droits d'auteur.

    Tu as mille fois raison de rappeler que la décompilation ou l'extraction de codes ou de scripts est une contrefaçon de droits d'auteur.

    Sinon, sur le projet, je cours lire les tutos que tu m'as indiqués.

    Je te remercie vraiment beaucoup !

    Je posterai dès que j'aurai pu avancer.

    Bonnes fêtes de fin d'année !

    Jeff

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    Je pense qu'il y a des choses qu'on ne voit pas dans un tel projet.
    Il y a certainement des références à certaines bibliothèques logicielles propres à Ciceron.
    On y fait appel à des fonctions qui se trouvent dans le code.
    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 !

  5. #5
    Expert confirmé
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Par défaut
    Salut JeffCarter,

    Citation Envoyé par JeffCarter Voir le message
    Bonjour Sepia,

    Merci beaucoup pour ta réponse super rapide.

    Ton avertissement au sujet des droits d'auteur est totalement justifié : j'en suis bien conscient.

    J'avais demandé, avant de commencer à travailler dans mon coin, à l'éditeur de me concevoir ce que je souhaitais, et j'avais proposé de payer ce qu'il fallait.

    Mais je n'ai jamais été contacté par ses techniciens.

    J'ai rappelé le service commercial pour leur indiquer que je commençais à travailler de mon côté sur une solution, et leur ai offert de leur communiquer le produit de mon travail. Ils seront libres de l'intégrer à leurs solutions : je cèderai gratuitement mes propres droits d'auteur.

    Tu as mille fois raison de rappeler que la décompilation ou l'extraction de codes ou de scripts est une contrefaçon de droits d'auteur.

    Sinon, sur le projet, je cours lire les tutos que tu m'as indiqués.

    Je te remercie vraiment beaucoup !

    Je posterai dès que j'aurai pu avancer.

    Bonnes fêtes de fin d'année !

    Jeff
    Sous ces conditions (bonnes), on sera heureux de t'aider (dans la limite de nos moyens Word/VBA...)

    Bonnes fêtes

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/08/2012, 16h16
  2. [AC-2007] Exporter tout le code VBA d'une application Access
    Par zoom61 dans le forum VBA Access
    Réponses: 8
    Dernier message: 14/04/2011, 11h20
  3. Réponses: 2
    Dernier message: 14/10/2009, 08h57
  4. Code VBA pour Copier une cellule dans un filtre?
    Par Redisdead dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/02/2009, 05h48

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