Talk:FR/Calc: fonction ZONES

    From The Document Foundation Wiki

    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)