Formulario buscar y reemplazar con Combobox

Tengo unas dificultades al momento de realizar un formulario, el caso es el siguiente tengo un formulario donde ingreso un código y realiza una búsqueda osea busca el código numero "11000457" que esta en la fila 100 y en la columna "A" y después me devuelve los datos que siguen de cada columna B, C, D, E ... En cada textbox datos de cada columna para ser modificados ejemplo

Nombre de item ("B") = TextBox2

Nombre de Fabricante("C") = Texbox3

Y así hasta llenar 15 textbox, el problema es que necesariamente yo tengo que escribir el Nombre de fabricante y después hacer que este reemplace, la cuestión es que yo quiero que envés de escribir el nombre de fabricante lea todos los fabricantes de la columna donde se encuentran(lo cual ya realice) solo faltaría que este combobox donde están todos los fabricantes, escoja el que quiero y este se reemplace en la columna "F" Con respecto a la fila donde se encuentra el código que busque y se reemplace.

Adjunto el codigo de busqueda VBA para buscar el CODIGO :

Private Sub CommandButton1_Click()
'buscar datos
If TextBox1 = "" Then
MsgBox "Coloca algun dato para buscar", vbOKOnly + vbInformation, "AVISO"
TextBox1.SetFocus
Exit Sub
End If

Set rango = Range("A:A").Find(What:=TextBox1, _
LookAt:=xlWhole, LookIn:=xlValues)

If rango Is Nothing Then
MsgBox "El dato no fue encontrado", vbOKOnly + vbInformation, "AVISO"
TextBox1 = "": TextBox1.SetFocus
Exit Sub
Else
TextBox2 = Range("A" & rango.Row) 'A
TextBox3 = Range("B" & rango.Row) 'B
TextBox4 = Range("C" & rango.Row) 'C
TextBox5 = Range("D" & rango.Row) 'D
TextBox6 = Range("E" & rango.Row) 'E
TextBox7 = Range("F" & rango.Row) 'F
TextBox8 = Range("G" & rango.Row) 'G
TextBox9 = Range("H" & rango.Row) 'H
TextBox10 = Range("J" & rango.Row) 'I
TextBox11 = Range("K" & rango.Row) 'J
TextBox12 = Range("L" & rango.Row) 'K
TextBox13 = Range("M" & rango.Row)
TextBox14 = Range("N" & rango.Row)
TextBox15 = Range("O" & rango.Row)

Codigo VBA para que el combobox busque todos los fabricantes de la columna "F":

Private Sub UserForm_Initialize()

Dim fl As Integer, fn As Integer, re As Integer

Do While Hoja1.Cells(fl, 6) <> ""

   fl = fl + 1

   Loop

     fn = fl - 1

   With Hoja1For

fl = 6 To fn

re = WorksheetFunction.CountIf(.Range(.Cells(6, 6), .Cells(fl, 6)), .Cells(fl, 6))

    If re = 1 Then

   ComboBox3.AddItem .Cells(fl, 6)

   End If

Next fl

    End With

2 respuestas

Respuesta
1

H o la: Supongo que vas a seleccionar el nuevo fabricante en el combobox3 y después presionar u un botón. Te anexo el código para el botón:

Private Sub CommandButton2_Click()
'Por.Dante Amor
    'reemplazar el fabricante
    If ComboBox3 = "" Or ComboBox3.ListIndex = -1 Then
        MsgBox "Selecciona un fabricante"
        ComboBox3.SetFocus
        Exit Sub
    End If
    If TextBox1 = "" Then
        MsgBox "Coloca algun dato para buscar", vbOKOnly + vbInformation, "AVISO"
        TextBox1.SetFocus
        Exit Sub
    End If
    Set rango = Range("A:A").Find(What:=TextBox1, LookAt:=xlWhole, LookIn:=xlValues)
    If rango Is Nothing Then
        MsgBox "El código no fue encontrado", vbExclamation, "AVISO"
        TextBox1 = "": TextBox1.SetFocus
        Exit Sub
    End If
    '
    Cells(rango.Row, "F") = ComboBox3
    TextBox7 = Cells(rango.Row, "F")
    MsgBox "Fabricante reemplazado", vbInformation, "CAMBIAR FABRICANTE"
End Sub

Adicionalmente, en el código que pusiste para llenar el combobox3, falta que la variable fl empiece con un valor, supongo que debe ser la fila 6, entonces quedaría así:

    Dim fl As Integer, fn As Integer, re As Integer
    fl = 6
    Do While Hoja1.Cells(fl, 6) <> ""
        fl = fl + 1
    Loop


'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

¡Gracias! 

Hola dante muchas gracias, si exactamente me faltaba inicializar la variable, ahora tengo otra duda, luego de realizar la búsqueda y que se muestren los datos como haría que estos datos se guarden en otra hoja osea copiarlos tal y como están en la hoja 1

Supongo que los quieres copiar antes de hacer el cambio, como una especie de respaldo.

¿Entonces el código debería de ir antes de reemplazar el dato de la columna "F"?

¿Cómo se llama la hoja donde tienes los datos?

¿Cómo se llama la hoja destino? ¿Y supongo que se van a copiar en la siguiente fila vacía?


Con mucho gusto te ayudo con todas tus peticiones.

Crea una nueva pregunta en Todoexpertos.com dentro del tema de microsoft excel. En el desarrollo de la pregunta escribe: "para Dante Amor". Ahí me describes con detalle lo que necesitas.

Sal u dos

Respuesta
1

Para buscar los fabricante

Usaría de la vba de la siguiente manera

Private Sub UserForm_Initialize()

range("f6").select

do while activecell <> ""

combobox3.additem activecell

activecell.offset(1,0).select

loop

end sub

Esto en el caso de que en tu columna f mo tenga celda en blanco hasta la ultima fila con dato

en el codigo buscar agregaria estos rango.select

seria de la siguiente

Set rango = Range("A:A").Find(What:=TextBox1, _
LookAt:=xlWhole, LookIn:=xlValues)

If rango Is Nothing Then
MsgBox "El dato no fue encontrado", vbOKOnly + vbInformation, "AVISO"
TextBox1 = "": TextBox1.SetFocus
Exit Sub
Else

rango.select
TextBox2 = Range("A" & rango.Row) 'A
TextBox3 = Range("B" & rango.Row) 'B

........

end sub

en el boton modificar solo seria decir

activecell.offset(0,5) = combbobox3

Saludos no olvides valora si te silve para cerrar la pregunta sino sales a camino no olvides pedirmas informacion 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas