Talk:FR/Calc: fonction ZONES

From The Document Foundation Wiki
Jump to: navigation, search

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)