Listbox ne correspond pas aux données d'un champ texte
Bonjour, voilà je vous explique mon petit souci.
J'ai un fichier excel répertoriant un ensemble de recettes (nom de la recette, libellé des ingrédients, type de plat etc)
J'ai une listbox (listbox1) alimentée par un champ texte dans mon formulaire (textbox5.text dont la source est la liste des ingrédients).
J'arrive à faire un split de ce champ texte et à afficher les valeurs de ce champ dans ma listbox.
j'ai également un bouton précédent et suivant qui me permet de naviguer entre les différents enregistrements de mon fichier excel.
Or pour chaque enregistrement j'ai un problème d'indice que je n'arrive pas à résoudre.
exemple: sur la deuxième ligne de mon tableau excel (la première étant ma ligne d'entête: j'ai les ingrédients suivants: "saumon;Oeufs;Sel;Pâte feuilletée"
sur la ligne suivante: j'ai "jambon; pâte feuilletée; tomate"
Quand j'initialise mon formulaire, le nom de ma recette du premier enregistrement (donc ligne2) s'affiche bien sauf la liste qui n'affiche rien.
En revanche quand je clique sur le bouton suivant (ligne 3 de mon tableau) , il m'affiche dans mon textbox5.text la valeur "saumon;Oeufs;Sel;Pâte feuilletée" soit la valeur de ma ligne 2.
Tout est décalé de 1 à chaque fois.
En fichier joint mon fichier excel contenant les macros visual basic.
S'il vous plaît, par contre, comme j'aimerais bien comprendre mon "erreur" de raisonnement, merci de m'expliquer en détail pourquoi çà n'affiche pas ce qui devrait être sans toutefois corriger le fichier d'origine.
Merci de votre compréhension.
extrait de mon code
Private Sub Bouton_Precedent_Click()
chaine = Cells(iR, 2).Text
varc = Split(chaine, ";")
ListBox1.Clear
If iR > 2 Then
iR = iR - 1
TextBox1.Text = Cells(iR, 1)
TextBox2.Text = Cells(iR, 3)
TextBox3.Text = Cells(iR, 4)
TextBox4.Text = Cells(iR, 5)
TextBox5.Text = Cells(iR, 2)
For i = 0 To UBound(varc)
ListBox1.AddItem varc(i)
Next i
Else
MsgBox "Premier enregistrement", vbCritical
End If
End Sub
Private Sub Bouton_Suivant_Click()
chaine = Cells(iR, 2).Text
varc = Split(chaine, ";")
ListBox1.Clear
If iR < iLR Then
iR = iR + 1
TextBox1.Text = Cells(iR, 1).Text
TextBox2.Text = Cells(iR, 3).Text
TextBox3.Text = Cells(iR, 4).Text
TextBox4.Text = Cells(iR, 5).Text
TextBox5.Text = Cells(iR, 2).Text
For i = 0 To UBound(varc)
ListBox1.AddItem varc(i)
Next i