Rajouter un chiffre dans liste sans ajout de ligne

Merinom

XLDnaute Junior
Bonjour le forum!!

Le titre du post n'est peut être pas très évident par contre mon soucis est assez simple. J'ai un liste de numéros de tubes sur une plage de 100 colonnes organisée par lot (1 colonne = 1 lot = 200 tubes ). Il se peut qu'un tube 1 soit couper en N morceaux, les morceaux seront renommés 1-0,1-1,1-2,1-N .
J'ai besoin d'une macro qui puisse permettre de choisir le tube qu'on veut tronçonner puis demander en combien de morceaux on veut le couper puis rajouter ces tubes au lot d'origine sans ajouter des lignes supplémentaire sinon en décalant la liste vers le bas.

Exemple : le tube 100 est coupé en deux : on a alors le tube père 100-0 et le tube fils 100-1. Dans la liste le tube 100 serait alors renommé 100-0 est juste en bas on rajoute le 100-1, puis ensuite la liste continue vers le bas avec 101, 102, ...

Est ce possible ? :D

Merci infiniment!!!
 

Pièces jointes

  • Etiquettage test.xlsm
    87.4 KB · Affichages: 43

Merinom

XLDnaute Junior
woooow c'est génial!! Il manquerai peut être prévoir des messages d'erreurs lorsqu'on essaye de couper un tube en "0" morceaux ou couper un tube qui n'existe pas ou dans un lot qui n'existe pas. Et un autre petit truc, en fait je préfère que le tube père soit renommer 1-1 et non pas 1-0 puis 1-1.

Merci beaucoup vgendron, tu gères !!!!!
 

piga25

XLDnaute Barbatruc
Bonjour,
Dans ce style là

Code à mettre dans la feuille concernée

Code:
'Suivant une partie de code de JOB 75
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [A:CV]) Is Nothing Or Target.Address <> ActiveCell.Address Then Exit Sub
Dim mem
Application.ScreenUpdating = False
Application.EnableEvents = False
On Error Resume Next
Target.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.formula = "=IF(ISNUMBER(R[-1]C),R[-1]C&CHAR(97),SUBSTITUTE(R[-1]C,RIGHT(R[-1]C,1),CHAR(CODE(RIGHT(R[-1]C,1))+1)))"
mem = Target
Application.Undo
Cells.Insert Shift:=xlDown - 1, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.formula = "=IF(ISNUMBER(R[-1]C),R[-1]C&CHAR(97),SUBSTITUTE(R[-1]C,RIGHT(R[-1]C,1),CHAR(CODE(RIGHT(R[-1]C,1))+1)))"
Application.EnableEvents = True
End Sub

Edit : Bonjour vgendron, pas rafraîchie. Ta solution est nettement meilleurs.
 

Pièces jointes

  • Etiquettage test (Piga25) .xlsm
    92.3 KB · Affichages: 27
Dernière édition:

vgendron

XLDnaute Barbatruc
Bon.. voici une version qui me plait plus à titre perso :)
quand je disais que c'était une version préliminaire :)

ici. le formulaire s'ouvre
tu sélectionnes le numéro de lot
automatiquement, la liste des tubes dispos se met à jour
tu sélectionnes et mets le nombre de troncons
et tu tronconnes :)
 

Pièces jointes

  • Etiquettage test.xlsm
    97.6 KB · Affichages: 42

Merinom

XLDnaute Junior
Bonjour vgendron et piga25, merci beaucoup pour votre aide. La macro est super ! Je voulais savoir si , comme je l'avais dit à mon dernier post, c'est possible de prévoir des messages d'erreurs comme quand on essaye de couper un tube en "0" ou en "1" morceau : renvoyer un MsgBox disant que c'est pas possible. Et dernier petit truc :) j'aimerai bien que le tube père soit renommer X-1 et non pas X-0 .

Merciii !!!
 

vgendron

XLDnaute Barbatruc
Hello

avec le message et la numérotation qui commence à 1

avec aussi correction d'un bug lorsque tu sélectionnes un numéro de lot qui ne contient qu'un seul tube (ex des lots 5 à 100)

pour la suite. on pourrait empecher de sélectionner un tube déjà tronconné. juste en filtrant la liste.
Pour l'instant, si tu sélectionnes un tube déjà tronconné. il ne se passera rien..
 

Pièces jointes

  • Etiquettage test.xlsm
    98.9 KB · Affichages: 34

Merinom

XLDnaute Junior
C'est génial !! merci !! Par contre j'ai remarqué un petit soucis lorsque je change le N° du lot, par exemple, pour une commande il peu avoir que 2 lots 616652 et 616653, et la macro ne prend pas en compte le changement :( Aussi après avoir tronçonné, le format de la cellule du tube tronçonné change en mode Date il affiche donc 01- janvier par exemple


Merci à nouveau ! Tu gères !!
 

vgendron

XLDnaute Barbatruc
Avec le filtre dont je parlais..

par contre. j'ai pas compris ton souci de numéro de lot..
et pour le format date, il me semble que si tu passes tout en format Texte avant de lancer la macro, ca doit etre bon..
 

Pièces jointes

  • Etiquettage test 2.xlsm
    99.5 KB · Affichages: 26

Merinom

XLDnaute Junior
Je m'explique, la numérotation des lots 1 à 100 est théorique, en fait une commande peut parfaitement avoir que 2 lots ( 616652 et 616653 par exemple) et ta macro elle ne lit pas le N° de lot sur la cellule sinon que les lots sont prédéfinit dans la macro si je ne me trompe pas. L'idéal serait que lorsque je lance la macro, celle-ci "lit" les numéros de lots dans la Feuille Excel (ligne 3). Un lot peut en effet avoir jusqu'à 6 chiffres.

Merci vgendron!
 

Merinom

XLDnaute Junior
Re bonjour et re merci pour ton temps, j'ai essayer la nouvelle version mais il y a un probleme. En fait la macro elle lit bien le N° de lot mais :
- Une erreur de dépassement apparait lorsque j'introduit un N° de lot supérieur à 16000 et parfois une erreur 1004 "Erreur définie par l'application ou l'objet" et renvoi à la ligne If Cells(6, colonne) = "" Then
-
J'ai essayé en renommant le lot de la colonne 1 "1000" et elle lit bien mais je crois que la macro lit les valeurs de la colonne 1000 car aucun tube apparait lorsque ce lot est sélectionné.


Merci pour ton aide vgendron
 

vgendron

XLDnaute Barbatruc
Re
Oui, effectivement.. j'étais parti sur le fait que les lots étaient numérotés de 1 à 100.. et que du coup.. le numéro du lot était aussi le numéro de la colonne..
voici version corrigée.

Regarde le code (Alt + F11 pour ouvrir l'éditeur vba) et les commentaires associés.. tu devrais comprendre comment ca fonctionne
 

Pièces jointes

  • Etiquettage test 3.xlsm
    100.1 KB · Affichages: 29

Merinom

XLDnaute Junior
ok ca marche nickel ! Aussi j'ai réussit à résoudre le probleme d'erreur de dépassement, en fait tu avais stocké la variable NumLot = CInt(Me.CBNumLot.Value) comme un entier, donc elle devait être entre -32768 et 32767. J'ai renommé alors la variable comme variable Long c'est tout (j'ai enfin réussit à faire quelque chose tout seul :D)

Je voulais te faire une toute dernière pétition, il se trouve qu'il y a des tubes qui peuvent être numérote selon un format Lot-1, Lot-2, .. pour éviter des doublons entres lots .. ( c'est compliqué tout ca!), donc si il y a un lot 616652, le 1ere tube serait 616652-1 et celui-ci peut être coupé et il serait renommé 616652-1/1 et 616652-1/2. Donc ceci reviens au fait de pouvoir re-couper un tube déjà coupé et ajouter un ../1.

Merci pour ta patience vgendron!
 

vgendron

XLDnaute Barbatruc
he he.. sais pas pourquoi. mais je m'y attendais :)
donc voici la rev 4
par contre, la modif que tu as faite pour autoriser des numéros plus longs (Entier - long), je te laisse la refaire, parce que je sais pas ce que tu as fait :)

et pour anticiper la prochaine demande :)
il va falloir que je trouve comment recharger le combo "NumTube" juste après un fractionnement, histoire que les nouveaux tubes apparaissent aussitot sans avoir a selectionner un nouveau numéro de lot
 

Pièces jointes

  • Etiquettage test 4.xlsm
    101.2 KB · Affichages: 29

Discussions similaires

Réponses
2
Affichages
597
Réponses
36
Affichages
2 K

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87