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