[Risolto] Errore nel filtro con tre criteri nella colonna

Creare una macro - Scrivere uno script - Usare le API
Rispondi
chimico
Messaggi: 97
Iscritto il: giovedì 22 novembre 2018, 15:20

[Risolto] Errore nel filtro con tre criteri nella colonna

Messaggio da chimico »

Saluti ,

           Ho la macro sotto per più filtri .

           Se inserisco tre criteri nella colonna "C" del filtro 2, allora non funziona correttamente .

           ma se metto solo due criteri nella colonna "C" di Filter 2, allora funziona bene .

           Anche l'ultimo filtro 12 nella colonna "M" non funziona con i criteri numerici .

Codice: Seleziona tutto

Option Explicit
Sub filtro_avanzato()

const ZONE1 = "A3:CA5000"	   
const CELL2 = "A1"		        

dim oDoc as object, oFeuille1 as object, oFeuille2 as object
dim oRange as object, oDataRange as object
dim oCelDest as object 	' cellule de destination
dim i as integer, feuille2 as string
dim oFiltreDsc as object
dim operateur as long, nValue as currency

dim tArgs(5) As New com.sun.star.sheet.TableFilterField   

	oDoc = thisComponent
	oFeuille1 = oDoc.Sheets.getByName("2.1Pedidos para Fat")
	oFeuille2 = oDoc.Sheets.getByName("Pedidos_Pendentes")
	
	oRange = oFeuille1.getCellRangeByName(ZONE1)
	oFiltreDsc = oRange.createFilterDescriptor(true)

     
       'colonna A
	tArgs(0).Field = 0						
	tArgs(0).IsNumeric = false	
	tArgs(0).Operator = com.sun.star.sheet.FilterOperator.NOT_EQUAL
	tArgs(0).StringValue =   ".*vazio.*"  


       'colonna C
	tArgs(1).Field = 2	
	tArgs(1).Connection = com.sun.star.sheet.FilterConnection.AND		
	tArgs(1).IsNumeric = false
	tArgs(1).Operator = com.sun.star.sheet.FilterOperator.NOT_EQUAL
	tArgs(1).StringValue =   ".*" & "A5" & ".*"  
	
	
	tArgs(2).Field = 2			
	tArgs(2).IsNumeric = false
	tArgs(2).Operator = com.sun.star.sheet.FilterOperator.NOT_EQUAL
	tArgs(2).StringValue =   ".*" & "A9" & ".*"  
	tArgs(2).Connection = com.sun.star.sheet.FilterConnection.AND
	
	
	tArgs(3).Field = 2			
	tArgs(3).IsNumeric = false
	tArgs(3).Operator = com.sun.star.sheet.FilterOperator.NOT_EQUAL
	tArgs(3).StringValue =   ".*" & "A0035" & ".*"  
	tArgs(3).Connection = com.sun.star.sheet.FilterConnection.AND
	
		
       'colonna D
	tArgs(4).Field = 3
	tArgs(4).Connection = com.sun.star.sheet.FilterConnection.AND			
	tArgs(4).IsNumeric = false
	tArgs(4).Operator = com.sun.star.sheet.FilterOperator.NOT_EQUAL
        tArgs(4).StringValue =   ".*" & "ELASTICO" & ".*" 
    
    
       'colonna M
	tArgs(5).Field = 12
	tArgs(5).Connection = com.sun.star.sheet.FilterConnection.AND		
	tArgs(5).IsNumeric = true
	tArgs(5).Operator = com.sun.star.sheet.FilterOperator.NOT_EQUAL
	tArgs(5).NumericValue =  1 
    
    		  		
	'Destination du résultat
	oCelDest = oFeuille2.getCellRangeByName(CELL2)
	
	with oFiltreDsc									
		.ContainsHeader = true	
		.CopyOutputData = true	
		.OutputPosition = oCelDest.CellAddress
		.UseRegularExpressions = true 
		.setFilterFields(tArgs())		
	end with

	oRange.filter(oFiltreDsc)	
	oDoc.currentController.setActiveSheet(oFeuille2)
	
End Sub
abbracci amici .
Ultima modifica di chimico il sabato 19 gennaio 2019, 8:10, modificato 1 volta in totale.
LibreOffice 5.4.4.2 no Windows 7
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Errore nel filtro con tre criteri nella stessa colonna

Messaggio da Gaetanopr »

Salve, senza un file per poter provare è difficile risponderti.

Saluti
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
chimico
Messaggi: 97
Iscritto il: giovedì 22 novembre 2018, 15:20

Re: Errore nel filtro con tre criteri nella stessa colonna

Messaggio da chimico »

[Risolto]

Saluti sr. Gaetanopr ,

grazie per la guida . :super:

Sono stato in grado di risolvere con l'aiuto della macro sub PysFilter


amico abbraccio .
LibreOffice 5.4.4.2 no Windows 7
Rispondi