Bonjour à tous, Ceci est mon premier mail sur cette liste, donc je me présente ... Olivier, 36 ans. J'utilise OOo à titre perso depuis quelques années et j'essaie de le promouvoir dans l'entreprise où je travaille (à défaut de le faire adopter pour l'instant). Une des fonctionnalité qui peut poser un problème est à mon avis l'autofiltre. En effet, à ma connaissance, toute action effectuée sur une selection "autofiltrée" (donc avec lignes cachées) s'applique à toutes les cellules de la selection, y compris celles qui sont cachées. Je me suis donc décidé à écrire une macro qui transforme cette selection en une selection multiple excluant les lignes cachées. Associée à un bouton dans une barre d'outils, cette macro à pour l'instant résolu mon problème. Je n'ai qu'environ un mois de macros OOo derrière moi... Donc beaucoup à apprendre de vous !! Si elle est mal écrite ou si vous pouvez l'ameliorer, n'hésitez pas ! Olivier La macro : Sub split_selection Dim Doc as object Dim Sheet as object Dim Cell as object Dim mySel Dim myNewMultipleSel Dim myRows Dim myColumns Dim myStartColumn Dim myStartRow Dim myRange Doc = ThisComponent Sheet = Doc.CurrentController.ActiveSheet mySel = Doc.getCurrentSelection() If mySel.SupportsService("com.sun.star.sheet.SheetCellRange") then myNewMultipleSel = Doc.CreateInstance("com.sun.star.sheet.SheetCellRanges") myRows = mySel.Rows.Count myColumns = mySel.Columns.Count myStartColumn = mySel.RangeAddress.StartColumn myStartRow = mySel.RangeAddress.StartRow For i = 0 to myRows-1 Cell = mySel.GetCellByPosition(0, i) if Cell.Rows.IsVisible then myRange = Sheet.getCellRangeByPosition(myStartColumn, myStartRow+i, _ myStartColumn+myColumns-1, myStartRow+i) myNewMultipleSel.AddRangeAddress(myRange.GetRangeAddress(), True) endif Next i Doc.CurrentController.Select(myNewMultipleSel) Else Print "Une seule selection supportée..." End If End Sub |