Visual Basic para Aplicaciones - Codigo por producto

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Codigo por producto

Publicado por Esteban Gabriel (1 intervención) el 14/09/2017 22:06:19
Hola a todos!
Espero me puedan ayudar, tengo un formulario el cual tiene diferentes opciones de productos. Lo que me piden es que cada producto tenga un código, lo cual puedo generar, pero el tema es que cuando genero un código ej. DIAI-0001 (Dije de Acero Inox.), cuando genero otro producto sale asi: ej. CAIA-0002 (Cadena de Acero inox.), cuando me dicen que debería ser CAIA-0001 y asi para todos los productos que recien se registran, pero he movido y movido el código pero no doy con la solución.
Estaba pensando que tal vez en la columna A deba buscar el ultimo código producto registrado ej. CAIA-0002 y que siga la secuencia, porque cuando movi el codigo solo buscaba el ultimo valor de la columna y si CAIA-0002 no era el ultimo valor en la columna repetia el codigo CAIA-0002.
Espero me puedan entender y ayudar, adjunto excel
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Codigo por producto

Publicado por Antoni Masana (498 intervenciones) el 15/09/2017 08:17:24
Con estos cambios cada código tiene su numeración. Si el primer código es DAIA-0001 y el segundo tiene de prefijo CAI- el resultado sera CAI-0001 y el siguiente PUGF-0001 y el siguiente DAIA-0002 .

Que es en esencia lo que quieres.

Ahora viene el truco: En primer lugar creo una hoja que llamo CODIGOS en la que tengo los prefijo y el último número asignado. Cuando se empiece de cero todos los campos de la segunda columna estarán a cero.

1
2
3
4
5
6
7
8
9
DIAI-	     6
CAI-		 9
PUAI		11     (Este no tiene guion, PUAI0001, se ha tener ponerlo aquí
PUGF-		 8
ANAI-		 9
SECADAI-	 3
SEADAI-		11
ARAI-		12
DICA-		17

Tengo un solo proceso que que se llama Obtener_Codigo y recibe un parámetro que es el número de linea del codigo.
Los optionButton llaman al Obtener_Codigo y le dice la linea de su código.
Hay dos variables publicas que son: Codi_Ref y Codi_Num que corresponden a la linea del código y el último numero asignado.
La hoja CODIGOS se actualiza cuando graba los datos en el Excel (Botón REGISTRAR)
Para mejor funcionamiento la hoja CODIGOS debería estar oculta, yo no la he ocultado para que la veas facilménte.

De esta forma nunca se creara un código repetido a menos que se manipule inadecuadamente, yo quitaria la opción de editar el código de forma manual porque no se repetida nunca y deberías actualizar la hoja CODIGOS y eso es muy complicado de revisar.

En las columnas C y D de la hoja CODIGOS pongo la fecha y la hora del último cambio para depurar, si no te interesa puedes quitarlo.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 85
Ha aumentado 1 puesto en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Codigo por producto

Publicado por David (4 intervenciones) el 15/09/2017 22:41:23
Puedes crear un bucle que recorra los items de la columna y que se reconozca los primeros caracteres según un criterio. Si la cantidad recorrida y caracteres coincide con el criterio, entonces que cuente.

Si gustas, abre un nuevo libro Excel y colocar en la columna A cualquier cosa desde la fila 2 hasta la fila que desees. Luego prueba este código
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim C As Long
Dim V As Long
Dim Valor As String
 
Valor = Application.InputBox("COLOQUE EL VALOR", "VALOR")
 
C = 2
 
    Do While Hoja1.Cells(C, 1) <> ""
 
 
        If Left(Hoja1.Cells(C, 1), 1) = Valor Then
            V = V + 1
        End If
        C = C + 1
        Loop
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar