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 & " 
" &NomFeuilleTableauCUTDUP  & " : "  & 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
   oCurseurVisibleCUTDUP.gotoRange(oCurseurTexteCUTDUP,False)
 End If
 If  oCurseurVisibleCUTDUP.Cell.CellName = 
PositionDeLaCopieDansLeTableauCUTDUP Then
  Else
   Print("  CurseurVisibleCUTDUP 2")
   Xray  oCurseurVisibleCUTDUP
 End If
 dim document as object
 document = ThisComponent.CurrentController.Frame 
'com.sun.star.comp.framework.Frame
' Xray document
' Xray oMonDocumentTexteCUTDUP.CurrentController.Frame
 dim args6(0) as new com.sun.star.beans.PropertyValue
  args6(0).Name = "SelectedFormat"
  args6(0).Value = 3 '3  Copie au paragraphe 1 2 et 4  pas de copie
 oDispatchHelperCUTDUP.executeDispatch( document, 
".uno:ClipboardFormatItems", "", 0, args6()) 'copie dans le tableau
 oDispatchHelperCUTDUP.executeDispatch(document, 
".uno:SetAnchorToChar", "", 0, Array())
 Exit Sub
 errmodifCUTDUP:
  print ("Dans le Programme ModifierUnDiagramme L'instruction n'existe 
pas erreur non Bloquante  N°:" & Err & " " & Error & "à la ligne " & Erl)
' Resume Next
End Sub ' CopierUnTableauDansUnTableauDUnePage  8 
------------------------------------------------------------------------ 
8 -----
Le 25/05/2020 à 09:14, Jean-Luc a écrit :
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 <supsup.linux@free.fr> 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+unsubscribe@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
--
Envoyez un mail à users+unsubscribe@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
Context
   
 
  Privacy Policy |
  
Impressum (Legal Info) |
  
Copyright information: Unless otherwise specified, all text and images
  on this website are licensed under the
  
Creative Commons Attribution-Share Alike 3.0 License.
  This does not include the source code of LibreOffice, which is
  licensed under the Mozilla Public License (
MPLv2).
  "LibreOffice" and "The Document Foundation" are
  registered trademarks of their corresponding registered owners or are
  in actual use as trademarks in one or more countries. Their respective
  logos and icons are also subject to international copyright laws. Use
  thereof is explained in our 
trademark policy.