1. AyudaExcel utiliza cookies. Si continuas utilizando AyudaExcel, estás aceptando la utilización de nuestras cookies. Más información.
  2. ¡Bienvenid@ a AyudaExcel! El foro más visitado sobre Excel en habla hispana.

    Si esta es tu primera visita, asegúrate de revisar los temas de la sección Utilización y Funcionamiento para familiarizarte con las funciones del foro. Si deseas publicar mensajes, será necesario que te Registres para que puedas dejar respuestas y crear tus propios mensajes, recuerda que es gratuito.

Solucionado [SOLUCIONADO] Codificación automática

Tema publicado en 'Temas resueltos' iniciado por GROL, 5 Jul 2009.

Estado del tema:
Cerrado para nuevas respuestas
  1. GROL

    GROL Usuario

    Registrado:
    3 Jun 2009
    Mensajes:
    40
    Me Gusta recibidos:
    0
    Que tal amigos master en EXcel

    Necesito una macro que me permita asignarle automáticamente un código a una celda dependiente de la otra.
    es decir; en una celda tengo un lista desplegables con una descripción y en la otra celda quiero que me aparezca automaticamente el código de la misma.
    Lo he intentado con fórmulas, pero no me las lee, por favor ayudenme que es muy importante su ayuda para mi
    Gracias por la ayuda

    Adjunto les envio un archivo para que me entiendan, porque talvez no supe explicarles bien.

    Adjuntos:

  2. mjrofra

    mjrofra Moderador Staff AyudaExcel

    Registrado:
    28 May 2009
    Mensajes:
    2.686
    Me Gusta recibidos:
    93
    Género:
    Masculino
    Respuesta: Codificación automática

    GROL,

    pues si entendí lo que necesitas no hará falta nada de macros, te puse una fórmula para que mires a ver si es lo que necesitas y se soluciona tu problema.

    Un saludo.

    Adjuntos:

  3. GROL

    GROL Usuario

    Registrado:
    3 Jun 2009
    Mensajes:
    40
    Me Gusta recibidos:
    0
    Respuesta: Codificación automática

    mjrofra

    Está buenísima esa función, me sirve espectacular, pero a medida que voy ingresando datos, se me torna mas pesado el archivo.

    Lo que pasa esque te envié solo una parte de mi archivo original y es muy extendo, porque ademàs de fórmulas tambien utilizo tablas dinámicas para sacar reporte.

    Te cuento que esa fórmula que me diste no la había utilizado nunca, pero es muy buena para el ejemplo que me diste.

    Por favor habrá otra forma de que mi archivo no se torne muy pesado?
  4. Luis Fernando

    Luis Fernando Usuario Activo

    Registrado:
    28 May 2008
    Mensajes:
    1.935
    Me Gusta recibidos:
    2
    Respuesta: Codificación automática

    GROL, prueba con la siguiente funciòn en la celda C5 de tu hoja REGISTRO

  5. GROL

    GROL Usuario

    Registrado:
    3 Jun 2009
    Mensajes:
    40
    Me Gusta recibidos:
    0
    Respuesta: Codificación automática

    que tal luis, gracias por unirte a mi problema junto con mjrofra
    verás, yo tengo una macro en este archivo que me permite asignarle automàticamente el còdigo a una celda, pero lo que yo quiero esque me asigne a un rango de de celdas de la columna c al momento que registro la fruta en las celdas de la columna d.

    Allì les envio mi ejemplo en el archivo adjunto. No se como agregarle ese argumento que me permita coger todo un rango y no solo una celda

    Adjuntos:

  6. mjrofra

    mjrofra Moderador Staff AyudaExcel

    Registrado:
    28 May 2009
    Mensajes:
    2.686
    Me Gusta recibidos:
    93
    Género:
    Masculino
    Respuesta: Codificación automática

    Hola Grol, revisa el adjunto a ver si ya te funciona correctamente la macro.

    Adjuntos:

  7. GROL

    GROL Usuario

    Registrado:
    3 Jun 2009
    Mensajes:
    40
    Me Gusta recibidos:
    0
    Respuesta: Codificación automática

    Perfecto mjrofra, es justamente lo que quería, pero no comprendo los argumentos que le pusiste y que significan....?
    Bueno, eso es lo de menos, la macro funciona casi perfecta. El único problema que tengo ahora esque al momento de escribir una fruta que no existe en la base de datos me borra solo las celdas celeccionadas en la macro y no en la posición de las celdas activas en c y d, es decir:
    si me encuentro en las celdas c17 y d17 y escribo una fruta que no existe me borre estas dos.
    si me encuentro en las celdas c22 y d22 y escribo una fruta que no existe me borre estas dos. y así sucesivamente, la macro que tengo está para que se borren las celdas c16 y d16.
    Voy a intentar modificar mi macro y si lo logro te envio mi archivo con la solución.
    Muchas gracias por tu aporte al conocimiento fantastico de excel 2007 con macros mjrofra. :)
  8. GROL

    GROL Usuario

    Registrado:
    3 Jun 2009
    Mensajes:
    40
    Me Gusta recibidos:
    0
    Respuesta: Codificación automática

    Que tal mjrofra

    te cuento que me doy por vencido....!

    No pude encontrar el argumento que me permita escoger la opción que te describí anteriormente.

    Lo único que le hice a la macro es desactivar los argumentos que me permitian borra las celdas c16 y d16 y me funciona relativamente.

    Lo único malo esque al momento que me equivoco y pongo una fruta diferente, me sale error, pero le hago clic en finalizar y continúa.

    Este error no me creará conflictos mas adelante cuando tenga mas datos??????

    Muchas gracias por tu aporte. La proxima semana lo pongo como solucionado si no me dan una respuesta a mi inquietud y vuelvo con otra, ja, ja, ja...!!!!
  9. mjrofra

    mjrofra Moderador Staff AyudaExcel

    Registrado:
    28 May 2009
    Mensajes:
    2.686
    Me Gusta recibidos:
    93
    Género:
    Masculino
    Respuesta: Codificación automática

    Hola Grol, pues he mirado el archivo y tienes toda la razón, se me había pasado por alto ese detalle, no lo vi en su momento.

    he cambiado un poco más tu código original para que borre los datos si la fruta ingresada no se encuentra en la base de datos y le he puesto unos comentarios para que te quede más fácil entenderlo.

    avisas si ahora sí funciona correctamente, que como ves es fácil pasar cosas por alto.

    Este es el código en caso de que sea últil para alguien más:

    CÓDIGO:
    Private Sub Worksheet_Change(ByVal Target As Range)
        
        'verifica que el valor cambiado está en la columna D, si no, no hace nada la macro.
        If Not Intersect(Target, Range("D:D")) Is Nothing Then
            
            'busca el valor ingresado en la columna D en la base de datos
            Set RANGO = Hoja1.Range("B:B").Find(What:=Target, LookAt:=xlWhole, LookIn:=xlValues)
            
            'si el valor buscado no se encuentra en la base de datos
            If RANGO Is Nothing Then
            
                'mensaje indicando que la fruta "tal" no se haya en la base de datos
                MsgBox "LA FRUTA " & Target.Value & " NO SE ENCUENTRA EN LA BASE DE DATOS", vbOKOnly, AVISO
                
                'borra el dato ingresado y el código correspondiente
                Target.Offset(, -1).Resize(, 2).ClearContents
                
                Exit Sub
                
            End If
            
            'si el valor ingresado se encontró en la base de datos, pone el código correspondiente
            Target.Offset(, -1) = Hoja1.Range("A" & RANGO.Row)
        
        End If
        
    End Sub

    Adjuntos:

  10. mjrofra

    mjrofra Moderador Staff AyudaExcel

    Registrado:
    28 May 2009
    Mensajes:
    2.686
    Me Gusta recibidos:
    93
    Género:
    Masculino
    Respuesta: Codificación automática

    ... y he hecho una última prueba tras subir el archivo y hubo algo que no funcionó bien, y es que el código se está ejecutando dos veces, pues cuando se cambia un valor en la hoja con el código, se vuelve a ejecutar y eso puede generar algunos problemas...

    para evitar lo anterior inserta lo que te pongo en rojo en el código:

    CÓDIGO:
    Private Sub Worksheet_Change(ByVal Target As Range)
        
        'verifica que el valor cambiado está en la columna D, si no, no hace nada la macro.
        If Not Intersect(Target, Range("D:D")) Is Nothing Then
            
            [COLOR="red"]Application.EnableEvents = False[/COLOR]
            
            'busca el valor ingresado en la columna D en la base de datos
            Set RANGO = Hoja1.Range("B:B").Find(What:=Target, LookAt:=xlWhole, LookIn:=xlValues)
            
            'si el valor buscado no se encuentra en la base de datos
            If RANGO Is Nothing Then
            
                'mensaje indicando que la fruta "tal" no se haya en la base de datos
                MsgBox "LA FRUTA " & Target.Value & " NO SE ENCUENTRA EN LA BASE DE DATOS", vbOKOnly, AVISO
                
                'borra el dato ingresado y el código correspondiente
                Target.Offset(, -1).Resize(, 2).ClearContents
                
                [COLOR="Red"]GoTo Salir[/COLOR]
                
            End If
            
            'si el valor ingresado se encontró en la base de datos, pone el código correspondiente
            Target.Offset(, -1) = Hoja1.Range("A" & RANGO.Row)
        
        End If
        
    [COLOR="Red"]Salir:
        Application.EnableEvents = True[/COLOR]
        
    End Sub
    
    Importante, en donde decía Exit sub lo reemplazas por el GoTo Salir
    Última edición: 14 Jul 2009
  11. GROL

    GROL Usuario

    Registrado:
    3 Jun 2009
    Mensajes:
    40
    Me Gusta recibidos:
    0
    Respuesta: Codificación automática

    Muchas gracias mjrofra

    eres un excelente programador
    es justamente lo que realmente quería y con esos nuevos còdigos que le asignaste, la hisciste mas productiva a mi macro de inicio.
    Muchas gracias.
    Tengo algunas interrogantes mas pero por el momento no te molesto mas
    creo que es suficiente molestia por esta semana verdad?
    En la proxima vengo recargado.
    Te agradesco muchisimo y voy a poner en práctica esta macro en mi archivo original.
    Muchas gracias
Estado del tema:
Cerrado para nuevas respuestas

Compartir esta página