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)