Página 1 de 1

[RESUELTO] Ordenar datos sin perder el formato de la tabla

Publicado: Vie Oct 04, 2024 7:54 pm
por markotxe
Buenas noches,
Utilizó la macro siguiente para ordenar datos (de menos a mas).

Código: Seleccionar todo

'
----------------------------------------------------------         
'__ Ordenar TableauB ______________________________________
'----------------------------------------------------------
  Dim oSortFields(0) as new com.sun.star.util.SortField
  Dim oSortDesc(0) as new com.sun.star.beans.PropertyValue
'----------------------------------------------------------
'_____ Elige la columna de referencia _____________________ 
    oSortFields(0).Field = 4 ' 5ª Columna
    oSortFields(0).SortAscending = True
'_____ Description du tri _________________________________
    oSortDesc(0).Name = "SortFields"
    oSortDesc(0).Value = oSortFields()  
'_____ Effectua el trabajo ________________________________
    oTableauB.Sort(oSortDesc())
'----------------------------------------------------------   
El código funciona y hace el trabajo pero…
Cuando los datos se ordenan, arrastran con ellos las celdas con los formatos (colores de fundo). De tal manera que el resultado final presenta varias líneas del mismo color una de bajo de la otra.
Me gustaría ordenar únicamente los datos sin que afecte la tabla original. Y no sé hacer...

Adjunto un archivo ejemplo para ilustrar la problemática. Espero que sabrá explicitar mejor la situación.

Gracias por vuestra atención, todas las pistas sugestiones o soluciones serán las bienvenidas.

Atentamente.

Re: [Calc] Ordenar datos sin perder el formato de la tabla

Publicado: Sab Oct 05, 2024 3:00 am
por FJCC-ES
No veo el problema con OpenOffice.
Encontré la propiedad BindFormatsToCellContent. Prueba con esta macro.

Código: Seleccionar todo


Sub Ordenar
    oDoc                = ThisComponent
    oF                  = oDoc.Sheets    
    oFR                 = oF.getByName("Ritmos")
    oTableauB           = oFR.getCellRangeByName("F11:N60") 
'----------------------------------------------------------         
'__ Ordenar TableauB ______________________________________
'----------------------------------------------------------
  Dim oSortFields(0) as new com.sun.star.util.SortField
  Dim oSortDesc(1) as new com.sun.star.beans.PropertyValue
'----------------------------------------------------------
'_____ Elige la columna de referencia _____________________ 
    oSortFields(0).Field = 4 ' 5ª Columna
    oSortFields(0).SortAscending = True
'_____ Description du tri _________________________________
    oSortDesc(0).Name = "SortFields"
    oSortDesc(0).Value = oSortFields() 
    oSortDesc(1).Name = "BindFormatsToContent"
    oSortDesc(0).Value = FALSE 
'_____ Effectua el trabajo ________________________________
    oTableauB.Sort(oSortDesc())
'----------------------------------------------------------   
End Sub

Re: [Calc] Ordenar datos sin perder el formato de la tabla

Publicado: Sab Oct 05, 2024 9:33 am
por markotxe
Buenos días FJCC-ES,
Funciona de maravilla! Otra vez mas, usted ha dado en el clavo!

Muchísimas gracias por la rapidez, el tiempo dedicado y la eficacidad de su respuesta.
Un muy buen fin de semana!

Nota: Por si alguien fuera interesado, dejo un documento ejemplo. adaptado con el código de FFJCC.ES. (solo se tuvo que substituir un (1) por (0),)