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 :

Gros Soucis Combobox - Impossible de définir la propriété list index [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2018
    Messages : 84
    Par défaut Gros Soucis Combobox - Impossible de définir la propriété list index
    Bonjour,
    J'ai un Userform servant à remplir et modifier un fichier Animal.
    On renseigne Nom, Famille (Chien, Chat etc..), Race, sexe, Le maitre et le Vétérinaire.
    Mis à Part le Nom, tous les autres critères sont des Combobox pour effectuer les sélection. Tout a été mis au point et fonctionnait à merveille jusqu'à ce que je vide le contenu de mes tableaux (structurés et nommés) et que je commence le test général. Chaque Tableau est une feuille distincte
    J'ai Renseigné un Client et un vétérinaire par formulaire et il n'y a aucune info dans les tableaux.

    UsfAnimal.Show, et cette procédure pour renseigner le contenu des combobox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub UserForm_Initialize()
        CboRace.List = Range("Races[Race]").Value
        CboFam.List = Range("Familles[Famille]").Value
        CboSexe.List = Range("Sexes[Sexe]").Value
        CboMaitre.ColumnCount = 2
        CboMaitre.ColumnWidths = "80;50"
        CboMaitre.List = Range("Clients[Nom]:Clients[Prénom]").Value
        CboVet.ColumnCount = 2
        CboVet.ColumnWidths = "80;50"
        CboVet.List = Range("Veterinaires[Nom]:Veterinaires[Prénom]").Value
    End Sub
    Donc Message erreur Suivant:
    Nom : Sans titre.png
Affichages : 1092
Taille : 8,6 Ko
    J'y vais à Taton pour voir quelle ComboBox plante et il s'agit de Famille, Race et Sexe. Quand je les neutralise ça marche. Alors, et après avoir vérifier 100 fois les orthographes dans tous les sens (Tableaux au pluriel et Colonne au singulier), je me suis dit que le problème venait peut être du fait que les colonnes appelées par Cboxxx.List étaient vides et à force de tourner le truc dans tous les sens j'ai pondu pas très fièrement ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      If Range("Races[ID]").ListObject.ListRows.Count >= 1 Then
        CboRace.List = Range("Races[Race]").Value
      ElseIf etc...
    Le problème est le même: Même message d'erreur

    Donc en clair, il me faut mini 2 lignes dans mes tableaux et ça marche parfaitement.

    Voilà ce qu'il y a dans la Fiche Vétérinaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'BOUTON MODIF VETERINAIRE
    Private Sub CmdModifVeto_Click()
        CboModif.Visible = True 'ComboBox Pour la sélection du Veto à modifier
        CboModif.ColumnCount = 2
        CboModif.ColumnWidths = "50"
        CboModif.List = Range("Veterinaires[Nom]:Veterinaires[Prénom]").Value
    Il y a dans le tableau un seul vétérinaire de renseigner et ça marche.

    Alors ma question est : Pourquoi ça ne veux pas sur la fiche Animal et comment est ce que je peux rattraper le tir?

    Merci d'avance

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Si un tableau structuré est vide, il me paraît normale de ne pas pouvoir alimenter un combobox.list avec. Par ailleurs, quel serait l'intérêt d'avoir des combobox qui ne contiennent pas d'items?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre confirmé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2018
    Messages : 84
    Par défaut
    Bonjour
    Ok pour vide. Mais même quand il y en a qu'un seul...!
    Et pour ai je des problèmes avec seulement 3 sur 5?
    Je sais plus la...

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Combobox.List attend un tableau.

    Si tu n'as qu'une cellule dans ta colonne, il n'y a pas de tableau créé et Range.Value correspond alors à la valeur, et non à un tableau contenant cette valeur.

    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 TestCombo()
      Dim t
     
      If Range("tableau2").ListObject.ListRows.Count > 0 Then
        With UserForm2
          If Range("tableau2").ListObject.ListRows.Count = 1 Then
            t = Array(Range("tableau2[colonne1]").Value)
          Else
            t = Range("tableau2[colonne1]").Value
          End If
          .ComboBox1.List = t
          .Show
        End With
      End If
    End Sub


    Pourquoi avec certains et pas avec d'autres?

    Tu es certain que ceux qui passent sont vides? Il faudrait voir comment est configuré ton classeur...

    PS: Dans la mesure où il est inutile d'appuyer un combobox sur une liste vide et assez peu courant de ne proposer qu'un choix (quel intérêt du combo dans ce cas), ces situations sont rarement illustrées sur les forums
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre confirmé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2018
    Messages : 84
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Combobox.List attend un tableau.
    Pourquoi avec certains et pas avec d'autres?
    Tu es certain que ceux qui passent sont vides? Il faudrait voir comment est configuré ton classeur...
    Pierre ,

    En considérant que, quand je vais donner le fichier à ma sœur, il sera vide.
    Elle va devoir renseigner les différents tableaux à l'aide des formulaires. L'intérêt est donc de tolérer une erreur (faute d'orthographe ou autre) dès la 1ère saisie. Dans ce cas, en admettant qu'on est sur Animal, il faut pouvoir récupérer l'animal saisie par Combobox

    Voilà comment sont les tableaux :
    Nom : 1Clients.png
Affichages : 926
Taille : 6,0 KoNom : 1Veterinaires.png
Affichages : 934
Taille : 5,2 KoNom : 3Animaux.png
Affichages : 951
Taille : 4,8 KoNom : 3DetAni.png
Affichages : 942
Taille : 9,1 Ko
    Dans cet configuration, ça fonctionne Car j'ai plus de 2 ligne dans "Famille Races Sexes et Animal"
    Je n'ai qu'une seule ligne dans "Clients et Veterinaires" et pourtant ça fonctionne

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Normalement, elle devrait remplir le tableau des vétérinaires et celui des clients avant de remplir le tableau animal, notamment parce que tu utilises les ID client et véto dans ta fiche animal. Il faut donc qu'ils préexistent et qu'il y en ait au moins un (un client et un véto).

    Dès lors, à la tentative d'ouverture du userform Animal, tu testes si tu as au moins un client et un véto, et si ce n'est pas le cas => message "D'abord créer un client et un véto stp ma chère soeur"

    Puis, au moment d'alimenter les combo dans le Initialize de Animal, tu testes si tu as un ou plusieurs clients et vétos et tu traites en conséquence, comme je l'ai montré dans mon code.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre confirmé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2018
    Messages : 84
    Par défaut
    Ok ton code fonctionne et règle le problème.

    C'est quand même bizarre cette histoire

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Pour ce qui est de ce qui fonctionne ou pas avec une ligne...

    Ca dépend aussi du nombre de colonnes dans le combobox et donc, de celui de la plage qui l'alimente. Je n'avais pas regardé ton code en détails mais pour Race, Famille et Sexe, tu n'envoies qu'une colonne => donc si une seule ligne, tu envoies une cellule, et donc la valeur de cette cellule dans List au lieu d'un tableau de valeurs.

    Pour Client et Véto, tu renvoies du multi-colonnes, donc même si tu envoies une ligne, tu envoies plusieurs cellules donc forcément un tableau.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre confirmé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2018
    Messages : 84
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Pour ce qui est de ce qui fonctionne ou pas avec une ligne...

    Ca dépend aussi du nombre de colonnes dans le combobox et donc, de celui de la plage qui l'alimente. Je n'avais pas regardé ton code en détails mais pour Race, Famille et Sexe, tu n'envoies qu'une colonne => donc si une seule ligne, tu envoies une cellule, et donc la valeur de cette cellule dans List au lieu d'un tableau de valeurs.

    Pour Client et Véto, tu renvoies du multi-colonnes, donc même si tu envoies une ligne, tu envoies plusieurs cellules donc forcément un tableau.
    Il me semblait avoir essayé aussi le multicolonne hier soir, mais j'ai fini à 3h du Mat' je vais ressayer tout à l'heure et je te tiens au courant.
    Avis ça à l'air d'avoir du sens

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Ta réponse a dû croiser la mienne, car lorsque l'on comprend que l'on travaille avec une cellule ou plusieurs, il n'y a plus de bizarrerie

    Une cellule d'une ligne => on convertit en tableau car Cellule.Value ne renvoie pas un tableau mais simplement la valeur
    Plusieurs cellules ou plusieurs lignes => .Value renvoie un tableau qu'on peut pousser directement dans .List

    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    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
    Private Sub UserForm_Initialize()
    'Alimenter CboFam
    CboFam.ColumnCount = 2
    CboFam.BoundColumn = 2
    CboFam.ColumnWidths = "0;50"
    Dim RangeAddress As String
    With Sheets("DetAni")
    RangeAddress = Replace(Range(.Range("A1"), .Cells(.Cells.Rows.Count, "B").End(xlUp)).Address, "$", "")
    End With
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES;"""
         CboFam.List = Application.Transpose(.Execute("select * from [DetAni$" & RangeAddress & "]").GetRows)
     
     
        .Close
    End With
    End Sub
    Private Sub CboFam_Click()
    MsgBox CboFam.List(CboFam.ListIndex, 0)
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sql "Client", Range(Sheets("Client").Range("A1"), Sheets("Client").Cells(Cells.Rows.Count, "C").End(xlUp)), CboMaitre
    *

    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
    Sub Sql(Feuille As String, plage As Range, ByRef Lst)
    Dim i As Integer, Rst As Object
    Lst.Clear
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        Set Rst = .Execute("select * from [" & Feuille & "$" & Replace(plage.Address, "$", "") & "]")
     
    Lst.ColumnCount = Rst.Fields.Count
    Dim ClnWidths As String
    ClnWidths = "0"
    Lst.BoundColumn = Rst.Fields.Count
    For i = 1 To Rst.Fields.Count
       ClnWidths = ClnWidths & ";50"
    Next
    Lst.ColumnWidths = ClnWidths
    Lst.List = Application.Transpose(Rst.GetRows)
        .Close
    End With
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CboMaitre_Click()
    MsgBox CboMaitre.List(CboMaitre.ListIndex, 0)
    End Sub
    Dernière modification par Invité ; 29/08/2018 à 13h48.

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Pour éviter le problème, et en plus obtenir directement l'ID pour famille, race et sexe, tu pourrais prendre les deux premières colonnes des tableaux. Tu aurais donc directement des tableaux à passer dans combo.list et tu récupèrerais directement la valeur à pousser dans la cellule correspondante de la table des animaux.

    En mettant ta première colonne de ces combobox (qui en contiendraient donc deux) à 0 dans columnWidths, tu masques l'ID à l'utilisatrice mais le Combo.Value utilise cette valeur. C'est tout bénef, tant sur le plan ergonomique qu'au niveau du code.

    Tu aurais donc ceci pour alimenter ton comborace, par exemple (avec columnwidths = 0;50 par exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CboRace.List = Range("Races[[id]:[Race]]").Value
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  13. #13
    Membre confirmé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2018
    Messages : 84
    Par défaut
    Tu aurais donc ceci pour alimenter ton comborace, par exemple (avec columnwidths = 0;50 par exemple)
    @ Pierre,
    Donc le problème était bien celui là. Il faut 2 Colonnes mini pour alimenter un Combobox s'il n'y a aucune donnée de renseigner. Pour le msgbox elle a le droit à ça
    Nom : 1box.png
Affichages : 908
Taille : 14,8 Ko

    @ dysorthographie,
    Je prends bonne note de la leçon. Merci
    Pour info, j'ai eu le même genre de problème dans le cas où il n'y a pas de Vétérinaire désigné pour l'animal car le Veto n'est pas obligatoirement connu. Alors j'ai retravaillé ma requête et je suis arrivé à mes fins. Puis bizarrement, 1h après, ça ne fonctionnait plus. J'ai tout repris de A à Z et rien à faire.
    J'ai ouvert SSMS pour vérifier mes clauses "Where" et tout allait bien.
    Je vais me repencher dessus en fin de journée et ce soir.

    Dans tous les cas un grand Merci à tous les deux.

    A suivre intégration d'un module de devis

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/05/2018, 18h01
  2. Réponses: 2
    Dernier message: 03/05/2016, 14h54
  3. Réponses: 5
    Dernier message: 19/08/2013, 13h08
  4. Réponses: 16
    Dernier message: 13/03/2008, 21h51
  5. Réponses: 1
    Dernier message: 21/08/2007, 15h23

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