Bonjour à tous,

J'ai un petit soucis en VBA Excel sur une macro attachée à un bouton.

En effet, j'utilise 2 ListView nommées LV_Ref et LV_Files. J'alimente LV_Ref, une ListView de 2 colonnes, à partir d'une feuille Excel contenant une liste de fichiers & n° de version. LV_Files n'est pas développée ici mais j'y reviendrai car j'ai le même problème.

J'ai créé un bouton, Btn_Edit, qui me permet d'accéder à la deuxième colonne de mes éléments de LV_Ref pour pouvoir le modifier à l'aide d'un InputBox.

Donc, quand je clique sur mon bouton Btn_Edit, tout marche parfaitement SAUF pour le deuxième élément de ma ListView qui me produit systématiquement le message d'erreur :

Run-time error : '35600'
Index out of bound

Si quelqu'un a une idée, je suis preneur...

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
 
Sub Btn_Edit_Click()
    Application.ScreenUpdating = False
    ' déclaration des variables
    Dim i As Long, ItemTest As String
        ' teste si un élément est sélectionné
        If Not LV_Ref.SelectedItem Is Nothing Then
            ' i est l'index de l'élément sélectionné
            i = LV_Ref.SelectedItem.Index
            ' là je ne sais plus de tête mais ça doit bien servir à quelque chose
            ItemTest = LV_Ref.SelectedItem
            ' le texte de mon sous-item
            LV_Ref.SelectedItem.ListSubItems.Item(1).Text = InputBox("Entrez un numéro de version pour " & LV_Ref.SelectedItem.Text, "FileVersion", LV_Ref.SelectedItem.ListSubItems.Item(1).Text)
            ' petit test pour vérifier que le texte de mon sous-item n'est pas vide
            If LV_Ref.SelectedItem.ListSubItems.Item(1).Text = "" Then
                Exit Sub
            Else
                ItemTest = LV_Ref.SelectedItem.ListSubItems.Item(1).Text
            End If
        End If
    '
    Application.ScreenUpdating = True
End Sub
Merci d'avance


Alors en fait, le message d'erreur provenait du fait que ma liste sur la feuille Excel n'était pas trié dans l'ordre alphabétique alors que j'avais spécifié à la ListView de le faire et de ce fait, l'index recherché (en réalité le 3) n'existait plus. Je ne sais franchement pas pourquoi mais c'est la solution.