Talk:FR/Calc: fonction ZONES
J'étais confronté à un problème qui consisté a fusionner des feuilles dans [Calc] pour pouvoir filtrer ou piloter les données de tables identiques mais sur différentes feuilles pour ce faire j'ai trouver la solution suivante.
Sub CopyAndPaste
rem define variables dim document as object dim dispatcher as object rem get access to the document document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") dim args1(0) as new com.sun.star.beans.PropertyValue args1(0).Name = "ToPoint" args1(0).Value = "$A$1" dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1()) dim args2(0) as new com.sun.star.beans.PropertyValue args2(0).Name = "Sel" args2(0).Value = true dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args2()) dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array()) dim args4(0) as new com.sun.star.beans.PropertyValue args4(0).Name = "SelectedFormat" args4(0).Value = 0 dispatcher.executeDispatch(document, ".uno:ClipboardFormatItems", "", 0, args4()) dim args5(0) as new com.sun.star.beans.PropertyValue args5(0).Name = "Nr" args5(0).Value = 1 dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args5()) dim args6(0) as new com.sun.star.beans.PropertyValue args6(0).Name = "ToPoint" args6(0).Value = "$A$1" dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args6()) dim args7(0) as new com.sun.star.beans.PropertyValue args7(0).Name = "ToPoint" args7(0).Value = "$A$1" dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7()) Dim oSheet As Object, oRange As Object Dim oCell As Object, oCellVide, oCellRA, x As Integer Dim oCurseur As Object, nRowMin As Long, nRowMax As Long oSheet = thisComponent.Sheets(0) ' Récupération de la dernière ligne utilisée dans la feuille oCurseur = oSheet.createCursor oCurseur.gotoEndOfUsedArea( False ) nRowMax = oCurseur.RangeAddress.EndRow ' Récupération de la ligne de la cellule active nRowMin = thisComponent.CurrentSelection.RangeAddress.StartRow ' IF nRowMin < nRowMax Then ' On va chercher en-dessous de la ligne de la cellule active et en colonne A oRange = oSheet.getCellRangeByPosition(0,nRowMin+1,0,nRowMax+1) oCellVide = oRange.queryEmptyCells ' La première cellule vide est le premier RangeAddress renvoyé oCellRA = oCellVide.RangeAddresses(0) oCell = oSheet.getCellByPosition(oCellRA.StartColumn, oCellRA.StartRow) thisComponent.CurrentController.select(oCell) End If dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array()) End Sub |
la plus grande partie vient du forum francophone que je remercie je débute vraiment en programmation et le problème de cette macro est de passer :par ".uno:Paste ".
j'aurais voulu intégrer un filtre sur une colonne et que le résultat soit imprimé sur un nouvelle feuille en passant par oRow en bouclant sur chaque ligne d'une feuille (si colonne "D = variable 1" définie par listbox dans une boite de dialogue)un peut comme si l'outil de filtre actuel pouvait boucle sur toutes les feuilles du classeur sans avoir de zone de donné définie.
Cette question relève de la liste "users" (voir http://fr.libreoffice.org/forums/ pour les modalités). Aucune réponse ne pourra être donnée ici... Pierre-yves samyn (talk) 12:00, 27 October 2012 (UTC)