Ajouter un element d'une listbox a une autre puis le supprimer

Bonjour j’ai le formulaire suivant:


Je dois sélectionner un élément de la liste de gauche, puis en cliquant sur la flèche l’élément se déplace vers la liste de droite.
J’ai un code qui m’a permet de faire le transfert mais il me prend la 1ere ligne de ma liste sur la feuille
et il la met dans la listbox destinatrice comme suit:

Je sais pas ou je me suis trompée au niveau de mon code
TEST_L.xlsm (122,5 Ko)

Bonjour

Ci-joint ma proposition

J’ai rajouté une flèche avec mon propre traitement le tien étant de mon point vue pas très simple et donc difficile à adapter

Flèche du bas à gauche

De plus je gère la grandeur des listebox non pas en fonction des données de la colonne A qui engendre un ascenseur inutile mais à partir de leur colonne en rapport et donc de leurs données réelles qui les composent

Testes avec donc cette 2° flèche à gauche en bas et si cela te convient il faut répercuter cette procédure sur l’ensemble des flèches et peut être supprimer la 1° à gauche en haut

Fais des essais et dis moi

TEST_L.xlsm (121,6 Ko)

1 J'aime

Re,
Je vous remercie d’avoir proposer un code plus simple au mien, ca fonctionne parfaitement.
Je vais adapté les autres flèches pour faire la même chose.

Merci du retour
A la prochaine

1 J'aime

Une autre question, est il possible de modifier le nom de la lame ? c’est a dire :
J’ai dans ma liste des lames a contrôler la lame suivante:
001-10-06-M2-H
Je veux la mettre dans la liste des lames en service en rajoutant un N° a la fin comme suit:
001-10-06-M2-H-001
et quand je veux la remettre dans la liste des la lames a contrôler ca sera:
001-10-06-M2-H-002
lames en service:
001-10-06-M2-H-003
ainsi de suite…
Honnêtement je en sais pas si c’est faisable avec VBA, Merci.

Ci-joint ton fichier avec dans le traitement de ma flèche rajoutée l’incrémentation d’un compteur mis en bout de la référence de la lame avant basculement dans la 2° listebox

Testes et si cela te convient à répercuter dans tous les traitements concernés

Merci pour ton retour

TEST_L.xlsm (123,9 Ko)

1 J'aime

Merci je vais le tester toute de suite et je vous rend la reponse.

Bonjour,
Merci pour le code, il répond parfaitement a mon besoin.
J’ai rajouté 2 lignes pour ajouter la date de contrôle des lames, ca marche bien et ca se rajoute dans ma feuille Liste_Lame_M1, colonne K, par contre j’ai 2 problèmes:
1- La lame ne se rajoute pas a ma listbox_LamesC :confused:
2- Je veux ajouter la lame contrôlée avec la date dans la feuille Verif_M1, on recherchant le N° de la lame par exemple pour :
002-12-16-M1-H
le N° c’est 002, une fois le N° trouvé, je rajoute la lame dans la bonne cellule avec la date.
J’ai rédigé un code mais ca marcHe pas :confused: je sais pas ou est mon erreur.
Veuillez svp vérifier la 2eme flèche du UserForm, Merci pour votre aide
TEST_L (1).xlsm (120,4 Ko)

Bonjour

J’ai du mal à comprendre ceci :

« 2- Je veux ajouter la lame contrôlée avec la date dans la feuille Verif_M1, on recherchant le N° de la lame par exemple pour : »

La date est ramenée en colonne K onglet « Liste_Lame_M1 » et non pas en onglet « Verif_M1 »

Cela fonctionne ainsi sans aucune modification me concernant

J’ai corrigé le code pour ramener la référence de la lame onglet « Verif_M1 » dans la colonne adaptée

Mais pas la date car je ne vois pas dans cet onglet comment répartir les différentes références dans leur colonne n’ayant qu’une seule colonne date à moins que l’on utilise qu’une ligne par référence mais j’en doute compte de tenue des saisies déjà effectuées
Merci de m’en dire plus sur la manière de compléter cet onglet
soit une seule référence par ligne avec la date sinon impossible d’avoir plusieurs référence avec chacune sa date sur une même ligne avec une seule colonne date

J’ai adapté ton fichier sans m’occuper de la date onglet « Verif_M1 »

Testes et dis moi

TEST_L (1) (1).xlsm (121,8 Ko)

1 J'aime

Bonjour,
Excuse moi d’avoir mis du temps pour répondre, j’ai décortiqué le code pour bien comprendre ce que tu as a fait.
J’ai fait quelques petits changements au niveau de cette ligne:
reflame = Mid(ws_Lames.Range(« D » & L2), 1, Len(ws_Lames.Range(« D » & L2))-4)
j’ai enlevé le -4 pour prendre le nom entité de la lame contrôlée
et j’ai rajouté cette ligne pour rajouter la date:
ws_Verif.Cells(ws_Verif.Rows.Count, colonne).End(xlUp).Offset(0, 1) = date1
Et ca marche super bien.
Je te remercie infiniment pour ton aide.

Merci du retour
Ravi que tu ais pu tirer profit de ce que je t’ai concocté
Avoir supprimé le -4 est finalement une bonne chose
Dans cette opération je comptais récupérer la référence de la lame sans le numéro incrémenté en fin
J’avais tablé sur 4 caractères le tiret + 3 chiffres
Ce n’était pas sans risque si d’aventure la numérotation devait passer à 4 chiffres
Mais ainsi ce risque est supprimé

A ta dispo si besoin

1 J'aime

Oui j’ai compris que tu as tablé sur 4 caractères, en plus le code que tu as proposé est très simple ca me permet de m’améliorer en VBA sans me perdre. Merci bcp.

Bonjour,
De nouveau sur mon fichier des lames.
J’ai un souci avec la liste des lames Affutées, quand je clique sur le bouton " réutiliser" et seulement pour la lame qui a la référence 001 au début, je veux la contrôler et la mettre dans liste lames Contrôlées normalement ca devient:
001-05-19–M1-002
Mais j’ai que le 2 qui a apparait dans ma liste comme suit:


image

J’arrive pas a trouver l’erreur, et ca se fait uniquement pour la lame 001 j’ai pas compris pourquoi.
Merci pour votre aide TEST_L (1).xlsm (113,0 Ko)

Bonjour

Pour déterminer la nouvelle référence à intégrer je part de la référence initiale ici la référence en colonne F :

001-05-19-M1-F-001

de cette référence j’extrait cette partie :

001-05-19-M1-F-

pour lui rajouter le nouveau numéro 002 :

001-05-19-M1-F-002

pour cela j’utilise l’instruction Split qui morcèle la donnée selon une balise

La balise utilisée est le numéro à 3 chiffres en fin déterminée ainsi :

Split(ws_Lames.Range(« F » & L), « - »)(UBound(Split(ws_Lames.Range(« F » & L), « - »)))

je morcèle la donnée Split(ws_Lames.Range(« F » & L), « - ») avec la balise « - »
je prend la dernière partie : (UBound(Split(ws_Lames.Range(« F » & L), « - »))
Ubound donne le nombre de partie dans le morcellement décrit qui le suit Split(ws_Lames.Range(« F » & L), « - ») ce qui me permet d avoir le numéro à utiliser le dernier morceaux
Dans la donnée :

001-05-19-M1-F-001

j’ai en morcelant avec la balise « - » de 0 à 5 parties

UBound(Split(ws_Lames.Range(« F » & L), « - ») va me donner 5

donc ceci :

Split(ws_Lames.Range(« F » & L), « - »)(UBound(Split(ws_Lames.Range(« F » & L), « - »)))

c’est comme si j’écrivais :

Split(ws_Lames.Range(« F » & L), « - »)(5)

Donc ce morcellement me donne comme 5° partie pour cette donnée :

001

ce que me donne cette d’instruction :

Split(ws_Lames.Range(« F » & L), « - »)(UBound(Split(ws_Lames.Range(« F » & L), « - »)))

qui sert comme balise pour l’ensemble de l’instruction :

Split(ws_Lames.Range(« F » & L), Split(ws_Lames.Range(« F » & L), « - »)(UBound(Split(ws_Lames.Range(« F » & L), « - »))))(0)

c’est comme si j’écrivais :

Split(ws_Lames.Range(« F » & L), 001)(0)

car la partie :

Split(ws_Lames.Range(« F » & L), « - »)(UBound(Split(ws_Lames.Range(« F » & L), « - »))) donne 001

et donc au final de récupérer la partie de morcellement de la donnée :

001-05-19-M1-F-001

avec comme balise 001

Pb 001 est présent en tout début d’où ta déconvenue

car si j’avais eu par exemple :

002-05-19-M1-F-001

Le morcellement avec la balise 001 :

Split(ws_Lames.Range(« F » & L), 001)(0)

aurait donné la première partie (0)

soit

002-05-19-M1-F- et donc de rajouter à celui-ci le nouveau numéro :

Split(ws_Lames.Range(« F » & L), Split(ws_Lames.Range(« F » & L), « - »)(UBound(Split(ws_Lames.Range(« F » & L), « - »))))(0) & Format(numéro, « 000 »)

soit :

& Format(numéro, « 000 »)

qui aurait donné :

002-05-19-M1-F-002

donc on est confronté à une situation qui nécessite de choisir une autre balise

J’ai donc rajouté avec la balise 001 le petit tiret avant :

-001

et donc de ne pas être gêné par le chiffre en tête de donnée

La partie qui détermine la balise 001 est celle-ci :

Split(ws_Lames.Range(« F » & L), « - »)(UBound(Split(ws_Lames.Range(« F » & L), « - »)))

je lui rajoute le petit tiret en début ainsi :

« - » & Split(ws_Lames.Range(« F » & L), « - »)(UBound(Split(ws_Lames.Range(« F » & L), « - »)))

ce qui donne l’instruction globale :

Split(ws_Lames.Range(« F » & L), « - » & Split(ws_Lames.Range(« F » & L), « - »)(UBound(Split(ws_Lames.Range(« F » & L), « - »))))(0)

Reste une correction à apporter

Si je prends donc cette nouvelle balise :

-001

le résultat du morcellement :

Split(ws_Lames.Range(« F » & L), -001)(0)

pour la donnée :

001-05-19-M1-F-001

me donnera :

001-05-19-M1-F

Si je rajoute le nouveau numéro comme ceci :

Split(ws_Lames.Range(« F » & L), -001)(0) & Format(numéro, « 000 »)

cela donnera :

001-05-19-M1-F002

manque le petit tiret avant le numéro en fin

donc il faut le rajouter ainsi :

Split(ws_Lames.Range(« F » & L), -001)(0) & « - » & Format(numéro, « 000 »)

Ce qui donne l’instruction globale suivante :

Split(ws_Lames.Range(« F » & L), « - » & Split(ws_Lames.Range(« F » & L), « - »)(UBound(Split(ws_Lames.Range(« F » & L), « - »))))(0) & « - » & Format(numéro, « 000 »)

Pour cette ligne de code totale

ws_Lames.Range(« D » & Rows.Count).End(xlUp).Offset(1, 0) = Split(ws_Lames.Range(« F » & L), « - » & Split(ws_Lames.Range(« F » & L), « - »)(UBound(Split(ws_Lames.Range(« F » & L), « - »))))(0) & « - » & Format(numéro, « 000 »)

J’ai mis un commentaire « ligne modifiée » dans le traitement pour que tu l’as repère facilement
Il faut dans tous les traitements qui l’utilise faire à l’identique

Ci-joint ton fichier avec le traitement « Réutiliser » adapté ainsi

Testes et dis moi
Je te laisse répercuter cette modification dans les différentes procédures qui en ont besoin

TEST_L 2.xlsm (92,5 Ko)

1 J'aime

Bonjour,
Je vous remercie infiniment pour tous ces détails, j’ai fait des recherche sur Internet pour comprendre comment le Split et le Ubound fonctionnent j’étais perdu dans les sites et j’ai pas trouv assez de détails, la avec ton explication j’ai compris parfaitement comment ca marche.
Merci encore. :smiley: