Changer de série de textbox si listbox modifiée

Bonjour

je dispose de plusieurs séries de 7 textbox, numérotées de 1 à 7, puis de 7 à 14, ..., alimentées par la sélection d'une listbox1

Si je change le contenu de ma lisbox1 et que je sélectionne une ligne de ma lisbox1 modifiée, j’aimerais que la série suivante de textbox se remplisse sans effacer la ou les séries précédentes.

Voici le code qui me permet d'alimenter la première série de textbox

Sub ListBox1_Click()
Dim I As Byte
Dim J
Dim Lr As Long

Lr = Cells(Rows.Count, 4).End(xlUp).Row

'boucle sur les éléments de la listbox1
For I = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(I) = True Then
        TextBox1.Value = ListBox1.Value
        'boucle sur les textbox
        For J = 2 To Lr
            If Cells(J, 4) = TextBox1.Value Then
                TextBox3 = Cells(J, 5)
                TextBox4 = Cells(J, 7)
                TextBox5 = Cells(J, 8)
                TextBox6 = Cells(J, 9)
                TextBox7 = Cells(J, 10)
            End If
        Next J
    End If
Next I

ListBox1.Clear

'si lisbox1 change et série textbox1 à 7 <>"" alors remplir textbox8 à 14
'si lisbox1 change et série textbox8 à 14 <>"" alors remplir textbox8 à 14
' ....

Bonjour Dan, bonjour le forum,

J'ai commencé à bosser sur ton problème mais tes explications ne sont pas claires et pour tester il nous faut recréer ton UserForm avec des 7 TextBoxes de 1 à 7 puis 7 autres de 7 (???) à 14... Bref, c'est trop le b***el pour y voir clair. je te propose donc de nous joindre le fichier qui va bien.

Bonjour dan67, ThauThème ,

un essai si j'ai compris :

déclarer en tête de module une variable gobale au module:

Dim LigTB As Integer

puis apporter les modifications au code :

.../...
'boucle sur les éléments de la listbox1
For I = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(I) = True Then
        Me("TextBox" & LigTB + 1) = ListBox1.Value
        'TextBox1.Value = ListBox1.Value
        'boucle sur les textbox
        For J = 2 To Lr
            If Cells(J, 4) = TextBox1.Value Then
                Me("TextBox" & LigTB + 3) = Cells(J, 5) 'TextBox3 = Cells(J, 5)
                Me("TextBox" & LigTB + 4) = Cells(J, 7)  'TextBox4 = Cells(J, 7)
                .../...
            End If
        Next J
        LigTB = LigTB + 7
        'prévoir un controle pour ne pas dépasser le nombre de lignes de textbox
    End If
Next I
.../...

A tester A+

Merci pour vos réponses

Je ne pourrai plus tester le code aujourd'hui.

Je vous répondrai demain

Bonjour,

j'ai testé le code proposé mais les 7 premiers textbox sont effacés et remplacé par le nouveau choix, après un 2e choix de liste déroulante.

Exemple

choix 1 : produits céréaliers + pains et assimilés+ pain

choix 2 : matière grasses + beurres + beurre doux

Voir fichier.

13v2-aliments.zip (1.13 Mo)

Vous constaterez également qu'un nouveau choix de listes déroulantes n'efface pas la liste du choix précédent. Je n'ai pas encore cherché à résoudre cet autre Pb.

Un peu normal puisqu'on spécifie TextBox1.Value = ListBox1.Value

Or il faudrait que si la textbox1 n'est pas vide, on passe à la textbox8

Bonjour le fil, bonjour le forum,

En pièce jointe ton fichier modifié.

13dan-ep-v01.zip (1.19 Mo)

Waouh ThauTheme

je vois que vous vous êtes éclaté. Chapeau bas.

Merci beaucoup.

Je vais continuer et finaliser le fichier, le but étant de faire la somme des valeurs énergétiques, ainsi que la composition en G, P, L et sucres d'un plat complet, en tenant compte des quantités de chaque ingrédient, d'où la textbox2qu'il faudra renseigner.

J'ai supprimé la dernière combobox (puisque j'en ai pas besoin) et les lignes de code qui la concerne. Tout fonctionne.

Rechercher des sujets similaires à "changer serie textbox listbox modifiee"