Ajouter un element d'une listbox vers une autre listbox

Bojour j’ai le tableau suivant, je selectionne un element de la liste puis je clique sur le bouton « ajouter lame en service », l’élément se rajoute dans la liste de l’onglet « lame en service »:

J’ai rédigé ce code et j’ai rien qui se rajoute, je me suis trompée quelque part ?
Private Sub Ajout_Lame_S_Click()
Dim ws_Lame As Worksheet
Dim Modele As String
Dim dl As Integer
Modele = « Liste_Lame_ » & Me.TextBox1.Value
If Me.ListBox_Lames.ListIndex = -1 Then
MsgBox (« Veuillez choisir une lame de la liste de toutes les lames »)
Else
Set ws_Lame = ActiveWorkbook.Worksheets(Modele)
dl = ws_Lame.Range(« A65530 »).End(xlUp).Row
ws_Lame.Activate
Nom_LamesS = Me.ListBox_Lames.Value
ws_Lame.Cells(dl + 1, 5) = Nom_LamesS
'Mettre a jour la liste
For i = 2 To dl
Me.ListBox_LamesS.AddItem ws_Lame.Range(« E » & i)
Next
End If
MsgBox (« Lame ajoutée a la liste lames en Service! »)
End Sub

Gestion_Lames (2)5.xlsm (135,3 Ko)

Bonjour

Ta lame se rajoute bien dans l’onglet concerné mais en ligne

dl = ws_Lame.Range(« A65530 »).End(xlUp).Row

+1

ws_Lame.Cells(dl + 1, 5) = Nom_LamesS

Si tu veux la rajouter dans la liste de la ListBox_LamesS il faut que ta boucle qui la met à jour aille jusqu’à sa ligne soit dl+1

Or ta boucle s’arrête à dl :

For i = 2 To dl

il faut mettre :

For i = 2 To dl+1

Et la mise à jour inclura le nouvel enregistrement

De plus ne faut-il pas remplir la colonne des lames en service ligne par ligne

Avec ton code on recherche la 1° ligne qui a sa cellule colonne A vide pour mettre en colonne E la lame :

dl = ws_Lame.Range(« A65530 »).End(xlUp).Row
ws_Lame.Cells(dl + 1, 5) = Nom_LamesS

Dans ton fichier transmis la 1° ligne qui répond à ses conditions onglet « Liste_Lame_M1 » est la 91
Et d’écrire la lame en E91 (ce qui fonctionne)
Or toutes les cellules en colonne E à partir de E2 sont vides
Pourquoi ne pas écrire la lame en E2 plutôt qu’en E91
Pour cela il faut se baser sur la colonne E pour détecter la 1° ligne dont la cellule en E est libre

dl = ws_Lame.Range(« E65530 »).End(xlUp).Row
ws_Lame.Cells(dl + 1, 5) = Nom_LamesS

Et ainsi de remplir cette colonne cellule par cellule de plus si plusieurs saisies sont réalisées elles sont toutes présentes les unes en dessous des autres en colonne E et dans ta ListBox_LamesS
Tu peux ajouter autant de lame que tu veux
Sinon seule la 1° ligne dont la cellule colonne A est libre sera utilisée colonne E pour inscrire dans l’onglet concerné la dernière lame traitée elles ne pourront pas être intégrées les unes à la suite des autres sachant que la 1° ligne libre sera toujours la même se basant sur la colonne A et non sur la colonne E
J’ai modifié le traitement dans cet esprit
J’ai rajouté pour la mise à jour de la ListBox_LamesS une instruction de nettoyage de celle-ci avant l’insertion des nouveaux items :

Me.ListBox_LamesS.Clear
For i = 2 To dl + 1
If ws_Lame.Range(« E » & i) <> «  » Then
Me.ListBox_LamesS.AddItem ws_Lame.Range(« E » & i)
End If
Next

Ces modifications sont réalisées uniquement pour le traitement du bouton « Ajouter une lame en service »
Pour les autres boutons pour un même résultat il faudra réaliser ces mêmes évolutions

Ci-joint ton fichier avec ces adaptations pour ce bouton

Testes et dis moi

Gestion_Lames (2)5.xlsm (125,2 Ko)…

Merci énormément pour cette explication très bien détaillée, la je comprends pourquoi les lames ne se rajoutées pas a la listbox.

Merci pour ton retour
À bientôt peut être

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.