Re: [fr-users] Transmettre un tableau discontinu avec getCellRangeByName par macro

2020-05-28 Par sujet linux

Merci Nicolas et Jean-Luc pour vos pistes,

Voilà le résultat ci-dessous un bout de code pas entièrement nettoyé 
faute de temps



 qui utilise

getCellRangesByName avec le s cela change tout

Cordialement
Jean-Luc



Sub 
CopierUnTableauDansUnTableauDUnePage(oMonDocumentCUTDUP,NomFeuilleTableauCUTDUP,PlageCellulesAcopierCUTDUP,oMonDocumentTexteCUTDUP,NomDuTableauCUTDUP,PositionDeLaCopieDansLeTableauCUTDUP,LieuDAppelCUTDUP)


 Dim oMonTableauCUTDUP, oLeTableauCUTDUP, oMaFeuilleCUTDUP, 
oMaCelluleCUTDUP, oCurseurTexteCUTDUP, oCurseurVisibleCUTDUP, 
fenetreAfficherCUTDUP As Object
 Dim NomDuFichierCalcCUTDUP, PlageAbsolueCellulesAcopierCUTDUP, 
LesPlagesDeCellulesCUTDUP (0 to 10)  As String





 Dim LeDiagrammeExisteCUTDUP As Boolean
 Dim oDispatchHelperCUTDUP As Object
' dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
 Dim ArgsCUTDUP(0) as new com.sun.star.beans.PropertyValue
 dim PysDoc,PysCopie as object, PysDestination, oDocCtrl, oDocFrame, 
oDrawDoc, oDrawPage , oDrawDocCtrl, oDrawDocFrame as object
 Dim NiveauDebugCUTDUP, NbrDeTableauCUTDUP,DeplacementHorizontalCUTDUP, 
DeplacementVerticalCUTDUP, iCUTDUP As Integer


 NiveauDebugCUTDUP=1
 MessageDebug(NiveauDebugCUTDUP,3,582,"CopierUnTableauDansUnePage")
 NomDuFichierCalcCUTDUP = oMonDocumentCUTDUP.Location 'l'argument n'est 
pas facultatif

' On Error Goto errmodifCUTDUP
 fenetreAfficherCUTDUP= 
oMonDocumentCUTDUP.CurrentController.Frame.ContainerWindow

 fenetreAfficherCUtDUP.toFront
 oMaFeuilleCUTDUP = 
oMonDocumentCUTDUP.sheets.getByName(NomFeuilleTableauCUTDUP)
 If oMaFeuilleCUTDUP.Name =NomFeuilleTableauCUTDUP and 
Not(LaChaineContientLesCaracteres(PlageCellulesAcopierCUTDUP,";")) and 
PlageCellulesAcopierCUTDUP<>""  Then
   oMonTableauCUTDUP = 
oMaFeuilleCUTDUP.getCellRangeByName(PlageCellulesAcopierCUTDUP)

  Else
LesPlagesDeCellulesCUTDUP=decoupage_d_une_chaine_avec_separateur(PlageCellulesAcopierCUTDUP,";")
  ' Xray LesPlagesDeCellulesCUTDUP

   PlageAbsolueCellulesAcopierCUTDUP=NomFeuilleTableauCUTDUP & "." & 
LesPlagesDeCellulesCUTDUP(0)

   For iCUTDUP=1 to UBound(LesPlagesDeCellulesCUTDUP)
PlageAbsolueCellulesAcopierCUTDUP=PlageAbsolueCellulesAcopierCUTDUP & 
";" & NomFeuilleTableauCUTDUP & "." & LesPlagesDeCellulesCUTDUP(1)

   Next iCUTDUP
   Print(NomFeuilleTableauCUTDUP & " " & PlageCellulesAcopierCUTDUP & " 
" & NomDuTableauCUTDUP & " " & PositionDeLaCopieDansLeTableauCUTDUP & " 
"   & " : "  & PlageAbsolueCellulesAcopierCUTDUP)

'   Xray oMaFeuilleCUTDUP
   oMonTableauCUTDUP = 
oMonDocumentCUTDUP.sheets.getCellRangesByName(PlageAbsolueCellulesAcopierCUTDUP)
 '  oMonTableauCUTDUP = 
oMonDocumentCUTDUP.sheets.getCellRangesByName(NomFeuilleTableauCUTDUP 
&"." & PlageCellulesAcopierCUTDUP &";" & NomFeuilleTableauCUTDUP & 
".P41:Y50")

   ' ;P41:Y50
   Xray oMonTableauCUTDUP
   Dim oRanges, oCtrl, plage As object
   oCtrl = oMonDocumentCUTDUP.CurrentController
   oRanges = 
oMonDocumentCUTDUP.createInstance("com.sun.star.sheet.SheetCellRanges")

    '  plages = oDoc.Sheets.getCellRangesByName(refs)
  for each plage in  oMonTableauCUTDUP
 oRanges.addRangeAddress(plage.RangeAddress, False)
  next plage
  oCtrl.select(oRanges)
   print("Stop")
 End If
 thiscomponent.currentcontroller.select(oMonTableauCUTDUP)
 oLeTableauCUTDUP   = ThisComponent.CurrentController.Frame
 ' Xray oLeTableauCUTDUP
 oDispatchHelperCUTDUP = 
createUnoService("com.sun.star.frame.DispatchHelper")

 print ("le tableau est sélectionné ?")
 oDispatchHelperCUTDUP.executeDispatch(oLeTableauCUTDUP , ".uno:Copy", 
"", 0, Array())
 fenetreAfficherCUTDUP= 
oMonDocumentTexteCUTDUP.CurrentController.Frame.ContainerWindow

 fenetreAfficherCUtDUP.toFront

 If ThisComponent.Title<>oMonDocumentTexteCUTDUP.Title Then
   acDocActiver(oMonDocumentTexteCUTDUP.Title)
   If ThisComponent.Title<>oMonDocumentTexteCUTDUP.Title Then
 print("le document n'est pas activé 
ThisComponent.CurrentController.Select(oMonTableauCUDDUP)")

 Xray ThisComponent
 EnregistrerEtFermer(oMonDocumentCUTDUP)
 EnregistrerE(oMonDocumentTexteCUTDUP)
   End If
 End If
 oMonTableauCUTDUP = 
oMonDocumentTexteCUTDUP.createInstance("com.sun.star.text.TextTable")
 oMonTableauCUTDUP = 
FindObjectByName(oMonDocumentTexteCUTDUP.TextTables,NomDuTableauCUTDUP, 
"com.sun.star.text.TextTable")

 
oMaCelluleCUTDUP=oMonTableauCUTDUP.getCellByName(PositionDeLaCopieDansLeTableauCUTDUP)
  If IsEmpty(oMaCelluleCUTDUP)or IsNull(oMaCelluleCUTDUP) Then
   Print("La cellule n'est pas trouvé " & 
PositionDeLaCopieDansLeTableauCUTDUP)

   Xray oMonTableauCUTDUP
   Xray oMaCelluleCUTDUP
   oMaCelluleCUTDUP=oMonTableauCUTDUP.getCellByName("A1")
  Else
  ' Xray oMaCelluleCUTDUP
 End If
 oCurseurTexteCUTDUP= oMaCelluleCUTDUP.createTextCursor
 oCurseurVisibleCUTDUP=oMonDocumentTexteCUTDUP.currentcontroller.ViewCursor
 If IsEmpty(oCurseurVisibleCUTDUP.Cell) then
   oCurseurVisibleCUTDUP.jumpToPage(1)
   oCurseurVisibleCUTDUP.gotoRange(oCurseurTexteCUTDUP,False)
  Else
   

Re: [fr-users] Transmettre un tableau discontinu avec getCellRangeByName par macro

2020-05-25 Par sujet Nicolas

Bonjour,

Je fais beaucoup de déplacement de cellule dans cette feuille si ça peut 
t'inspirer, regarde les macros


http://paour.free.fr/enseignement/ODS/plan-de-classe-3_rangees_6_lignes.ods

Nicolas Paour

Le 25/05/2020 à 08:47, linux a écrit :


Bonjour  à tous,

Je souhaite copier un tableau discontinu par macro

Je pensai utiliser la fonction getCellRangeByName, mais je n'arrive 
pas à trouver la bonne syntaxe


PlageCellulesAcopierCUTDUP="A1:C5,F1:K5" ne fonctionne pas

PlageCellulesAcopierCUTDUP="A1:C5;F1:K5"                     ne 
fonctionne pas



oMonTableauCUTDUP = 
oMaFeuilleCUTDUP.getCellRangeByName(PlageCellulesAcopierCUTDUP)


Est ce une limite getCellRangeByName ?

Quelqu'un a t'il une autre piste ?

Merci par avance

Jean-Luc




--
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com


--
Envoyez un mail à users+unsubscr...@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à 
https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy


Re: [fr-users] Transmettre un tableau discontinu avec getCellRangeByName par macro

2020-05-25 Par sujet Jean-Luc
Bonjour
Je ne suis pas très sûr de ma réponse
Mais il me semble que getCellRangeByName s'applique à des objets
SheetCellRange.
Les plages complexe sont des objets SheetCellRanges.

Bonne journée


Le lun. 25 mai 2020 à 08:48, linux  a écrit :

>
> Bonjour  à tous,
>
> Je souhaite copier un tableau discontinu par macro
>
> Je pensai utiliser la fonction getCellRangeByName, mais je n'arrive pas
> à trouver la bonne syntaxe
>
> PlageCellulesAcopierCUTDUP="A1:C5,F1:K5" ne fonctionne pas
>
> PlageCellulesAcopierCUTDUP="A1:C5;F1:K5" ne
> fonctionne pas
>
>
> oMonTableauCUTDUP =
> oMaFeuilleCUTDUP.getCellRangeByName(PlageCellulesAcopierCUTDUP)
>
> Est ce une limite getCellRangeByName ?
>
> Quelqu'un a t'il une autre piste ?
>
> Merci par avance
>
> Jean-Luc
>
>
> --
> Envoyez un mail à users+unsubscr...@fr.libreoffice.org pour vous
> désinscrire
> Les archives de la liste sont disponibles à
> https://listarchives.libreoffice.org/fr/users/
> Privacy Policy: https://www.documentfoundation.org/privacy
>


-- 
*Jean-Luc*
Je ne mange pas que pour vivre…
Je ne vis pas que pour manger…

-- 
Envoyez un mail à users+unsubscr...@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à 
https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy


[fr-users] Transmettre un tableau discontinu avec getCellRangeByName par macro

2020-05-25 Par sujet linux


Bonjour  à tous,

Je souhaite copier un tableau discontinu par macro

Je pensai utiliser la fonction getCellRangeByName, mais je n'arrive pas 
à trouver la bonne syntaxe


PlageCellulesAcopierCUTDUP="A1:C5,F1:K5" ne fonctionne pas

PlageCellulesAcopierCUTDUP="A1:C5;F1:K5"                     ne 
fonctionne pas



oMonTableauCUTDUP = 
oMaFeuilleCUTDUP.getCellRangeByName(PlageCellulesAcopierCUTDUP)


Est ce une limite getCellRangeByName ?

Quelqu'un a t'il une autre piste ?

Merci par avance

Jean-Luc


--
Envoyez un mail à users+unsubscr...@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à 
https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy