Bonjour,

Le problème ne vient pas d’une disparition de CellAddress dans LibreOffice ≥ 
7.2 :
l’API n’a pas changé sur ce point. La confusion vient surtout de la signature de
addNewByName().

Rappel de la signature UNO (toujours valable) :

addNewByName( Name As String,
              Content As String,
              BaseAddress As com.sun.star.table.CellAddress,
              Type As Long )


Points importants :

le 2ᵉ argument n’est pas un objet plage, mais une chaîne représentant
une expression de type formule (par ex. une adresse absolue) ;

le 3ᵉ argument est bien un CellAddress, qui peut être obtenu proprement
depuis une cellule existante.

Une manière robuste (et compatible anciennes / nouvelles versions) d’écrire le 
code est donc :

Dim oDoc As Object, oSheet As Object, oNamed As Object
Dim oRange As Object, oBaseCell As Object
Dim sName As String, sContent As String

oDoc = ThisComponent
oSheet = feuille   ' ou oDoc.Sheets.getByIndex(0)
oNamed = oDoc.NamedRanges

oRange = oSheet.getCellRangeByPosition(numcolonne, 1, numcolonne, nbligne-1)
sName = "plage" & numcolonne
sContent = oRange.AbsoluteName              ' ex : "$Feuille1.$C$2:$C$50"

oBaseCell = oSheet.getCellByPosition(numcolonne, 1)

If oNamed.hasByName(sName) Then
    oNamed.removeByName(sName)
End If

oNamed.addNewByName(sName, sContent, oBaseCell.CellAddress, 0)


En résumé :

pas besoin d’abandonner CellAddress ;

il faut simplement fournir à addNewByName() une chaîne pour le contenu
(et non un objet plage).

En espérant que cela aide à débloquer la migration.

Cordialement,


Bernard Schœnacker
3 rue de la porte de France
57930 Fénétrange

Technicien Méthodes –
Rédacteur Technique industriel





----- Tulum <[email protected]> a écrit :
> Bonjour,
> 
> Au travail nous venons de passer de la version 7.1 à la version 25.2. 
> J'utilise une macro dans laquelle, entre autres je nomme des plages de 
> cellule. cela ne marche plus et je n'arrive pas à corriger la macro pour 
> qu'elle refonctionne. Qwant et le chat ne sont mes amis sur ce coup.
> 
> Voila le code qui fonctionnait avant :
> 
>      
> plage=feuille.getcellrangebyposition(numcolonne,1,numcolonne,nbligne-1)
>              nomplage="plage"&numcolonne
>              CellAddress.sheet=0
>              CellAddress.column=numcolonne
>              CellAddress.Row=1
>              plages.addNewByName(nomplage, plage,CellAddress,0)
> 
> Elle ne fonctionne plus, la raison semble être le fait que CellAddress 
> n'est plus valable depuis la version 7.2 de libreoffice. Apparemment, il 
> faut utiliser getCellByPosition à la place.
> 
> Et c'est là que coince, je n'arrive pas à trouver la bonne synthaxe pour 
> plages.addNewByName.
> 
> Si quelqu'un a une idée et sait comment résoudre mon problème, merci
> -- 
> Envoyez un mail à [email protected] 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 à [email protected] pour vous désinscrire
Les archives de la liste sont disponibles à 
https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy

Répondre à