Buscar dato en otro libro, con botón lleno.

Buend día grupo, es una pregunta sencilla pero estoy hecho pelota, esta es mi duda. Tengo 2 libros, en el cual en libro1 (_otizacion) busco los datos del libro2, (cotización, numero x). La cotización puede tener varios numeros_x. Al momento en que en el libro1 busco la cotización en libro2, ya la tengo, siendo 1 cotización a 1 numero_x, pero cuando cotización tiene más numeros_x necesito que brinque al siguiente, con un msgbox yesno, preguntando si es el que se requiere, si es fin de ciclo si no siga el ciclo, hasta que encuentre el deseado, aquí es donde estoy hecho bolas. Me podrían apoyar. Este es el código que tengo que funciona, haciendo la búsqueda.

fin = .Worksheets("COTIZ. ABIERTAS").Range("e" & Rows.Count).End(xlUp).Row
            For i = 5 To fin
                    cotizacion = .Worksheets("COTIZ. ABIERTAS").Cells(i, 5)
                    cadena = extraenum(.Worksheets("COTIZ. ABIERTAS").Cells(i, 5))
                    tacto = .Worksheets("COTIZ. ABIERTAS").Cells(i, 21)
               If cadena = cot Then  ' busco numero de cotizacion de reporte en libro de servicio al cliente
                           If tiposerv <> "T.INV." Then    ' busco que no sea tiempo invertido
' muestro datos en libro 1 traidos de libro 2                                
                                    rate = .Worksheets("COTIZ. ABIERTAS").Cells(i, 21)
                                    planta = .Worksheets("COTIZ. ABIERTAS").Cells(i, 7)
                                    cliente = .Worksheets("COTIZ. ABIERTAS").Cells(i, 8)
                                    numparte = .Worksheets("COTIZ. ABIERTAS").Cells(i, 10)
                                    'nombparte = .Worksheets("COTIZ. ABIERTAS").Cells(i, 11) 'pendiente que pongan el nombre de la parte en listado reporte diario
                                    idioma = .Worksheets("COTIZ. ABIERTAS").Cells(i, 19)
                                    tacto = .Worksheets("COTIZ. ABIERTAS").Cells(i, 20)
                                Exit For
                                Else
                                    rate = Empty
                                    planta = .Worksheets("COTIZ. ABIERTAS").Cells(i, 7)
                                    cliente = .Worksheets("COTIZ. ABIERTAS").Cells(i, 8)
                                    numparte = .Worksheets("COTIZ. ABIERTAS").Cells(i, 10)
                                    'nombparte = .Worksheets("COTIZ. ABIERTAS").Cells(i, 11) 'pendiente que pongan el nombre de la parte en listado reporte diario
                                    idioma = .Worksheets("COTIZ. ABIERTAS").Cells(i, 19)
                            End If
' pregunto si son los datos correctos
                        sino = MsgBox("Este es el servicio y su número de parte que requeries", vbYesNo, "Aviso")
                    If sino = vbYes Then
                        End If
                    Else
' aqui es donde no se como hacer para que el cilo avance, al siguiente registro
                    End If
                End If
            Next i


        

1 Respuesta

Respuesta
1

Las cotitaziones no son numero único hay varias cotizaciones con el musmo numero

¿

¿

_?

Gracias por responder Aneudys, Es numero único, cotización pero la cotización la desgloso en las filas ya que cada cotización tiene varios numeros_x. Cotización num 3083

Como puedes ver en la imagen busco la 3083, pero tengo 3 tipos diferentes en planta, y también manejo un numero_x diferente. En mi búsqueda encuentra el primero y ya, necesito que pregunte, con un msgbox si es el que se quiere, si es termina, no es brique al siguiente, y así sucesivamente.

Espero me puedas apoyar con mi duda, saludos.

Puedes prueba con estos

Luego de que haga la primera búsqueda

firstAddress = busqueda.Address 'definimos la primera busqueda

Do ' para empesar el bucles
        busqueda.Select  'seleciona la busqueda
           If MsgBox("es el dato", vbYesNo) = vbYes Then 'si es yes

     Aquí copiar la macro que pasa los datos al libro

            Exit Sub 'aqui terminamos la busqueda
            End If
            Set c = .FindNext(c) ' aqui saltamos a la busqueda siquiente
        Loop While Not c Is Nothing And c.Address <> firstAddress 'aqui para no volver a la primera
    End If

Gracias, me sirvió mucho.

Recuerda estamos para ayudar y

No olvide valor para cerrar la pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas