Merci pour les explications et la correction de la partie de la macro, cela a marché.
Le jeudi 18 décembre 2025, 12:22:41 heure normale d’Europe centrale Bernard Schoenacker a écrit : > 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
