Calc macro Basic - Copier un texte (non une cellule) dans le presse-papiers

Bonjour
Je suis sous Libreoffice 25.2.0.3, windows 11.
Je cherche une macro Basic Calc qui copie un texte (et non une ou des cellules) dans le presse-papiers.
La commande suivante : dispatcher.executeDispatch(document, “.uno:Copy”, “”, 0, Array())
copie une ou des cellule(s), mais non un texte. Ce texte peut être par ex. le résultat d’un calcul, effectué dans les lignes de macro précédentes.
Merci beaucoup d’avance de vos réponses.

Bonjour,

l’endroit où se trouve le “texte” à copier n’est pas clair pour moi : c’est le texte contenu à l’intérieur d’une cellule, du texte dans l’IDE, ailleurs ?

Bonjour JFN et merci.
Oui, la précision est nécessaire : le texte est la valeur d’une variable. Ce serait par ex :
s=“abcde”
puis comment copier la valeur de s dans le presse-papiers ?
Merci d’avance.

Ah, OK. C’est une valeur d’une variable qui résulte de l’exécution d’une macro.

Je crains un problème XY. Quel est l’objectif final ? Que va devenir cette valeur dans le presse-papier ?

JFN, je ne crois pas qu’il y ait de problème XY : je cherche simplement à copier dans le presse-papier le résultat de qqs lignes de Basic CALC. Je n’aurai plus qu’à utiliser le contenu du presse-papiers (Ctrl-V) dans un autre logiciel.
A votre disposition si je ne suis pas clair.

On ne peut pas passer de paramètre à la commande Uno:Copy
Voyez ce code qui traite le principe de transfert avec le presse-papier :
https://forum.openoffice.org/fr/forum/viewtopic.php?t=60087

Bonjour Valioud et merci.
Effectivement, uno:copy ne semble pas approprié.
Je crois avoir trouvé, voir échange suivant : How do you copy text to clipboard from macro? - #7 by george37809
Le code est ci-dessous. Ca semble fonctionner. Je suppose qu’il n’y a pas plus simple.
Merci encore, bonne journée.

Option Explicit
Global sTxtCString As String
Sub CopyToClipBoard(sText)
Dim oClip As Object, oTrans As Object 'transferable object to set as new content
oClip = CreateUnoService(“com.sun.star.datatransfer.clipboard.SystemClipboard”)
oTrans = createUnoListener(“Tr_”, “com.sun.star.datatransfer.XTransferable”)
oClip.setContents(oTrans, Null)
sTxtCString = sText
End Sub
Function Tr_getTransferData(aFlavor As com.sun.star.datatransfer.DataFlavor)
If (aFlavor.MimeType = “text/plain;charset=utf-16”) Then
Tr_getTransferData() = sTxtCString
Else
Tr_getTransferData = Empty
End If
End Function
Function Tr_getTransferDataFlavors()
Dim aFlavor As New com.sun.star.datatransfer.DataFlavor
aFlavor.MimeType = “text/plain;charset=utf-16”
aFlavor.HumanPresentableName = “Unicode-Text”
Tr_getTransferDataFlavors() = Array(aFlavor)
End Function
Function Tr_isDataFlavorSupported(aFlavor As com.sun.star.datatransfer.DataFlavor) As Boolean
If aFlavor.MimeType = “text/plain;charset=utf-16” Then
Tr_isDataFlavorSupported = True
Else
Tr_isDataFlavorSupported = False
End If
End Function
Sub Test
CopyToClipBoard “Mon texte”
End Sub

Et si vous lisiez le lien français que je donne plutôt qu’une solution en anglais ?

Et quand un problème est solutionné, il faut l’indiquer.

Valioud, j’ai lu les deux.
Et votre réponse ne précisait pas s’il n’y a pas plus simple. S’il n’y a pas d’autre solution, alors bien sûr je feme l’échange.