[RESUELTO]buscar un valor y copiarlo junto con su rango

¿Nuevo en Apache OpenOffice? ¿No sabe cómo comenzar o dónde hacer su pregunta? ¡Este es el lugar!
Reglas del Foro
Los moderadores podrían mover los temas creados aquí a un foro más apropiado.
Si usted publicó aquí y no encuentra el tema, puede buscar sus mensajes haciendo clic en la opción «Buscar sus mensajes» que se encuentra justo debajo de la cabecera de la página, junto al panel de control de usuario y al acceso a sus mensajes privados.
Responder
jhonfredy
Mensajes: 47
Registrado: Vie Abr 08, 2016 6:50 pm

[RESUELTO]buscar un valor y copiarlo junto con su rango

Mensaje por jhonfredy »

Tengo cinco vendedores los cuales se miden diariamente de acuerdo a sus ventas. El archivo de las ventas me lo envian diariamente y el mismo está organizado de forma vertical. En la fila 1 está el vendedor 1, en la fila 2 el producto 1, en la fila 2 el producto 2, en la fila 3 el vendedor 2, en la fila 4 el producto 1, en la fila 5 el producto 2, etc.

Todos los vendedores deben vender los mismos productos pero no todos los dias los vendedores venden los mismos productos. De manera que no siempre la fila del vendedor va a ser la misma ni tampoco van a aparecer todos los productos. Quiere decir que este rango es variable y de forma vertical.

Necesito saber como puedo hacer una macro que separe la información por vendedor en hojas separadas. Lo digo es porque tengo una hoja en la cual pego la información del dia y debo coger vendedor por vendedor y pasar eso a otra hoja.

Me es dificil en el sentido que el vendedor no siempre va estar en la misma fila pues esto depende de las ventas de los otros.

Utilice la funcion coincidir anidada con un desref pero el problema es que el pivote cambia siempre. Por eso cree nuevas hojas y copie en cada hoja el vendedor para que el pivote de la funcion desref fuera el mismo.

Por eso quiero automatizar ese copie y pegue que me toca hacer todos los dias.

Gracias,
Última edición por jhonfredy el Vie Abr 15, 2016 6:03 pm, editado 1 vez en total.
OpenOffice 3.1 en Windows Vista
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: buscar un valor y copiarlo junto con su rango en otra ho

Mensaje por mauricio »

Obtendramos mejores respuesta si anexas un archivo detallando todo esto... así no obligas a nadie a inventar o imaginarse lo que estas planteando...

Por otra parte, parece que podrías reimplementar tu archivo de ventas para mejorar el proceso...

Si tienes bases de programación es sencillo copiar y pegar datos, todo esta ya documentado: https://wiki.openoffice.org/wiki/ES/Man ... ndoConCalc

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
jhonfredy
Mensajes: 47
Registrado: Vie Abr 08, 2016 6:50 pm

Re: buscar un valor y copiarlo junto con su rango en otra ho

Mensaje por jhonfredy »

Adjunto el archivo que diseñe. En la hoja ventas están los datos que a diario actualizo desde la base de datos. El orden de esta hoja no lo puedo cambiar. En la segunda hoja (edgar) es donde coloco los datos de la hoja ventas que corresponde a ese vendedor. Esto es lo que quiero colocar con macro, los datos de la hoja edgar.

El problema es que si Lilia que aparece en la hoja ventas B14 no vende baterias automotrices, todas las filas se corren hacia arriba y por ende la posicion de edgar ya no va a ser B90 sino B74. Ahi es donde veo el problema pues esos rangos son variables.

Los datos de lo hoja ventas los cambio todos los dias y la idea es que cuando pegue lo correspondiente al dia, la hoja edgar se actualice.

Gracias,
Adjuntos
SEGUIMIENTO_VENDEDORESA8 (5).xls
adjunto para copiar datos con rangos variables
(116.5 KiB) Descargado 295 veces
OpenOffice 3.1 en Windows Vista
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: buscar un valor y copiarlo junto con su rango en otra ho

Mensaje por mauricio »

el archivo anexado es un archivo de Excel sobre el cual no damos soporte, por favor, reemplazalo por un archivo ODS... gracias

¿viste el enlace que te proporcione?
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
jhonfredy
Mensajes: 47
Registrado: Vie Abr 08, 2016 6:50 pm

Re: buscar un valor y copiarlo junto con su rango en otra ho

Mensaje por jhonfredy »

Cordial saludo,

Adjunto el archivo en .ods.

Gracias,
Adjuntos
SEGUIMIENTO_VENDEDORESA8.ods
(39.61 KiB) Descargado 273 veces
OpenOffice 3.1 en Windows Vista
jhonfredy
Mensajes: 47
Registrado: Vie Abr 08, 2016 6:50 pm

Re: buscar un valor y copiarlo junto con su rango en otra ho

Mensaje por jhonfredy »

Buen dia para todos,

He estado trabajando sobre el tema del asunto, y tengo una primera aproximación en cuanto a buscar un valor. Ahora necesito copiar ese valor buscado. Eso no lo he podido hacer. Alguien me puede ayudar? Escribo el código. Favor que la respuesta sea sobre este ejemplo y ya no sobre el adjunto. Si puedo saber como modifico este código, lo demás lo puedo hacer yo. Gracias:
COLUMNA B
1 Herminio Perez
2 Eufrasia Martinez
3 Ambrosio Rodriguez
4 Eleuterio Gonzalez
5 Rufino Martin

Sub buscarycopiar()
Dim oHojaActiva As Object
Dim oBuscarEn As Object
Dim oEncontrado As Object
Dim oSD As Object
Dim oDestino As Object

oHojaActiva = ThisComponent.getCurrentController().getActiveSheet()
oBuscarEn = oHojaActiva.getCellRangeByName("B1:B5")
oSD = oHojaActiva.createSearchDescriptor
oSD.setSearchString("Rufino")
oEncontrado = oBuscarEn.findAll(oSD)
ThisComponent.getCurrentController.select(oEncontrado)

End Sub
OpenOffice 3.1 en Windows Vista
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: buscar un valor y copiarlo junto con su rango en otra ho

Mensaje por fornelasa »

Un ejemplo:
* De acuerdo al archivo que subiste.
* Asumo que la hoja "edgar" está vacía y existe.

Código: Seleccionar todo

sub BuscarCopiar
    dim args1(2) as new com.sun.star.beans.PropertyValue
    
		document = ThisComponent.CurrentController.Frame
	  dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
   args1(1).Name = "By"
  args1(1).Value = 1
   args1(2).Name = "Sel"
  args1(2).Value = false
            tDoc = ThisComponent.CurrentController
          oSheet = tDoc.ActiveSheet
          
                   tDoc.Select(oSheet.GetCellRangeByName("A1"))
                   dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args1())
                   
           Edgar = ThisComponent.Sheets.GetByName("edgar")
   args1(0).Name = "SearchItem.SearchString"
  args1(0).Value = "EDGAR FRANCISCO SOTO"
  
                   dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
                   
          inicio = (ThisComponent.GetCurrentSelection.CellAddress.Row + 1)
          
                   dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args1())
                   
            dato = ThisComponent.GetCurrentSelection.String
  args1(0).Value = Trim(dato)
  
                   dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
                   
             fin =  (ThisComponent.GetCurrentSelection.CellAddress.Row + 1)
           rango = oSheet.GetCellRangeByName("A"+inicio+":K"+fin)
           
					tDoc.Select(Rango)
					dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
					tDoc.Select(Edgar.GetCellRangeByName("A1"))
					dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
					tDoc.Select(oSheet.GetCellRangeByName("A1"))
					
   args1(0).Name = "SearchItem.SearchString"
  args1(0).Value = "EDGAR FRANCISCO SOTO"
  
					dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
					MsgBox "Hecho"
end sub
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
jhonfredy
Mensajes: 47
Registrado: Vie Abr 08, 2016 6:50 pm

Re: buscar un valor y copiarlo junto con su rango en otra ho

Mensaje por jhonfredy »

Gracias fornelasa, la macro que me diste busca el valor de Edgar y lo coloca en la hoja correspondiente. Solo quedo faltando que copie las lineas que siguen abajo de edgar:

Ejemplo
Valores que están en la hoja ventas
ColumnaB
Fila1 Lilia Ines Salazar
Fila2 Lapices
Fila3 Borradores
Fila4 Sacapuntas

Fila8 Edgar Francisco Soto
Fila9 Cuadernos
Fila10 Reglas
Fila11 Lapiceros

Fila12 Diana Pico
Fila13 Lapices
Fila14 Borradores

Lo que debe hacer la macro es buscar en la hoja ventas el nombre de Edgar Francisco Soto, copiar esa información en la hoja Edgar, que es lo que hizo con la macro,y además de eso copiar lo que sigue abajo de Edgar, osea la fila entera fila9, fila10 y fila11.

Quiere decir que en la hoja Edgar debe quedar

ColumnaA
Fila1 Edgar Francisco Soto
Fila2 Cuadernos
Fila3 Reglas
Fila4 Lapiceros

Recordar que la posición del rango varía pues depende de los items que incluya Llilia, algunas veces la posición de Edgar en la hoja ventas va a estar en la fila 8 pero otras veces puede estar en la fila15 o fila20 o fija10.

Recordar tambien que no puedo cambiar el orden en que están los vendedores

Gracias,
OpenOffice 3.1 en Windows Vista
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: buscar un valor y copiarlo junto con su rango en otra ho

Mensaje por fornelasa »

No Entendí.
Lo de lápices cuadernos y no se que más ¿de donde los sacamos?

Para el caso de Edgar, en la hoja ventas (de acuerdo al archivo que subes), él tiene datos desde A90:I238 que la macro los pasa exactamente a la hoja Edgar tal cual. Si los datos de Edgar estuvieran en otro rango entonces la macro los pasa automáticamente también.
Luego dices,
Lo que debe hacer la macro es buscar en la hoja ventas el nombre de Edgar Francisco Soto, copiar esa información en la hoja Edgar, que es lo que hizo con la macro,y además de eso copiar lo que sigue abajo de Edgar, osea la fila entera fila9, fila10 y fila11.
Si los datos de Edgar están en A90:I238 (terminan en la fila I238) ..... ¿Qué tiene que ver la fila 9, 10 etc.?

¿Seguro que probaste la macro que envié?

Podrias aclarar má el tema en base al archivo que subiste o reenviar uno nuevo

Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
jhonfredy
Mensajes: 47
Registrado: Vie Abr 08, 2016 6:50 pm

Re: buscar un valor y copiarlo junto con su rango en otra ho

Mensaje por jhonfredy »

Cordial saludo fornelasa,

Nuevamente hice el proceso de correr la macro. Ahora si funciona excelente, tal como lo necesito.

Lo de los lapiceros era un ejemplo diferente donde explicaba el mismo proceso que requería, solo que en menor escala.

De ante mano mil gracias por su valiosa colaboración.

Doy por cerrado el tema. Inmediatamente lo reporto en ese estado.
OpenOffice 3.1 en Windows Vista
jhonfredy
Mensajes: 47
Registrado: Vie Abr 08, 2016 6:50 pm

Re: [RESUELTO]buscar un valor y copiarlo junto con su rango

Mensaje por jhonfredy »

Cordial saludo,

Me pueden explicar que hace este código paso a paso pues no estoy muy familiarizado con este tema:

sub BuscarCopiar
dim args1(2) as new com.sun.star.beans.PropertyValue

document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
args1(1).Name = "By"
args1(1).Value = 1
args1(2).Name = "Sel"
args1(2).Value = false
tDoc = ThisComponent.CurrentController
oSheet = tDoc.ActiveSheet

tDoc.Select(oSheet.GetCellRangeByName("A1"))
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args1())

Edgar = ThisComponent.Sheets.GetByName("edgar")
args1(0).Name = "SearchItem.SearchString"
args1(0).Value = "EDGAR FRANCISCO SOTO"

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())

inicio = (ThisComponent.GetCurrentSelection.CellAddress.Row + 1)

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args1())

dato = ThisComponent.GetCurrentSelection.String
args1(0).Value = Trim(dato)

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())

fin = (ThisComponent.GetCurrentSelection.CellAddress.Row + 1)
rango = oSheet.GetCellRangeByName("A"+inicio+":K"+fin)

tDoc.Select(Rango)
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
tDoc.Select(Edgar.GetCellRangeByName("A1"))
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
tDoc.Select(oSheet.GetCellRangeByName("A1"))

args1(0).Name = "SearchItem.SearchString"
args1(0).Value = "EDGAR FRANCISCO SOTO"

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
MsgBox "Hecho"
end sub
OpenOffice 3.1 en Windows Vista
Responder