Erreur d'exécution '9' : l'indice n'appartient pas à la sélection

Résolu
ptitemeuh Messages postés 83 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 8 juillet 2010 - 26 mai 2010 à 14:04
ptitemeuh Messages postés 83 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 8 juillet 2010 - 27 mai 2010 à 10:09
Bonjour à tous,

Voici un bout de mon code qui permet de rechercher dans la partie catégorie de chaque contacts (carnet d'adresses outlook). Si un contact est trouvé, alors j'extrais les chiffres de la première ligne des notes du contact et je le colle dans la listbox avec le nom du contact avec le nom de la société.

Lorsque je lance mon programme, une erreur apparaît: "Erreur d'exécution '9' : l'indice n'appartient pas à la sélection" sur la ligne
UserForm2.ListBox2.AddItem (Consult(0) & " " & objContact.FullName & " - " & objContact.CompanyName)
Plus précisément avec
Consult(0)


    For Each W In objContacts.Items             'Rechercher dans mes contacts
        If TypeName(W) = "ContactItem" Then    
            Set objContact = W
            If (InStr(1, objContact.Categories, UserForm2.TextBox2, vbTextCompare) <> 0) Then
                If UBound(Split(objContact.Body, "Objet")) <> 0 Then 'S'il existe un ou plusieurs numéro(s) de consultations
                    
                    Dim Consult As Variant
                    Consult = Split(objContact.Body, ".  ", , vbTextCompare) 'On extrait le dernier mot de consultation
                    UserForm2.ListBox2.AddItem (Consult(0) & " " & objContact.FullName & " - " & objContact.CompanyName) 'Ajouter le nom des personnes contactés
                End If
            End If
        End If
    Next W



Pourquoi me donne-t-il cette erreur ?!
A voir également:

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 mai 2010 à 09:55
Oui, cela arrive lorsque la comparaison est faite sur une chaine (String) au lieu de la valeur numérique qu'elle représente.
Si les valeurs à trier sont bien toutes des chiffres, alors il te suffit de modifier ta comparaison :
        If Val(UserForm2.ListBox2.List(i)) < Val(UserForm2.ListBox2.List(j)) Then

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3