Bonsoir AB,
Voici une solution :
Sub filterWithoutDups()
On Error Goto ErrorHandler
Dim Clas As Object
Dim Feuil As Object
Dim Zone As Object
Dim aSortFields(0) As New com.sun.star.table.TableSortField
Dim aSortDesc() As Variant
Dim aDestAddr As New com.sun.star.table.CellAddress
Dim aFilterFields(0) As new com.sun.star.sheet.TableFilterField
Clas = ThisComponent
Feuil = Clas.CurrentController.ActiveSheet
' Pour ne definir qu'une portion
'Zone1 = Feuil.GetCellRangeByName("A1:A11")
' Pour selectionner toute une colonne
Zone1 = Feuil.GetColumns().GetByName("A")
Zone2 = Feuil.GetColumns().GetByName("G")
aFilterDesc = Zone2.createFilterDescriptor(True)
' Adresse de destination
aDestAddr.Sheet = 0 ' Feuille
aDestAddr.Column = 6 ' Colonne
aDestAddr.Row = 0 ' Ligne
' Definitions pour le filtre
' colonne de filtre
aFilterFields(0).Field = 0
' toute cellule non vide
aFilterFields(0).Operator =com.sun.star.sheet.FilterOperator.NOT_EMPTY
' Mise en place du filtre
aFilterDesc.setFilterFields( aFilterFields() )
aFilterDesc.OutputPosition = aDestAddr ' Adresse de destination
aFilterDesc.CopyOutputData = True ' Avec copie des donnees
aFilterDesc.ContainsHeader = True ' Avec entete de colonne
aFilterDesc.SkipDuplicates = True ' Sans doublon
' Application du filtre a partir des donnees en Zone1
Zone1.filter( aFilterDesc )
MsgBox( ":: Fin de traitement ::", 64, "Yeeesssss ! ;-)" )
Exit Sub
ErrorHandler:
Msg = "Erreur " & Err & " en ligne " & Erl
Msg = Msg & Chr( 10 ) & Error
MsgBox( Msg, 16 ,"Erreur d'execution" )
End Sub
Alpha Beta a écrit :
Bonjour,
Je cherche à extraire d'une feuille Calc des données d'une colonne sur
laquelle je souhaite faire un filtre et une extraction de données sur
une autre feuille Calc et ce sans doublon.
J'ai trouvé la propriété Filter... mais pour l'utiliser c'est pas
évident ....
Quelqu'un aurait-il une piste ?
Merci d'avance
Bonne chance.