Bonjour,
je reviens avec une autre option.
Je construis une formule qui renvoie les coordonnées de la zone
contenant mes données.
Cette formule stockée dans une variable, je voudrais l'utiliser dans la
ligne qui définit les nouvelles coordonnées de la zone.
Or, elle provoque une erreur dans la macro, bien qu'elle fonctionne dans
la feuille de calcul.
Sub ActuNomZone
Dim v_Nom As Object
Dim v_CellAdress As New com.sun.star.table.CellAddress
Dim v_DataZone As New com.sun.star.table.CellAddress
Dim v_Zones() As Object
Dim v_Ref As object, v_test As string
'--------------
'La procédure renvoie une erreur si le nom existe déjà
'dans le classeur. On le supprime d'abord pour le recréer ensuite.
'--------------
v_Zones=ThisComponent.NamedRanges.ElementNames
v_test="NBVAL(INDEX(data;;1))"
v_Ref="$Données.$A$1:$h$"&NBVAL(INDEX(data;;1))"
le message d'erreur est "Erreur de syntaxe BASIC/Erreur de parenthèse"
v_Nom = ThisComponent.NamedRanges
ThisComponent.NamedRanges.removeByName("data")
v_Nom.addNewByName("data", v_Ref,v_CellAdress,0)
End Sub
Toute aide est la bienvenue
Lucien
-------- Message transféré --------
Sujet : [CALC] définir zone dynamique par macro
Date : Thu, 7 Apr 2016 10:15:19 +0200
De : LC_Libre <lutch@free.fr>
Pour : LibreOffice Users <users@fr.libreoffice.org>
Bonjour,
la macro actuelle
Sub ActuNomZone
Dim v_Nom As Object
Dim v_CellAdress As New com.sun.star.table.CellAddress
Dim v_DataZone As New com.sun.star.table.CellAddress
'--------------
'La procédure renvoie une erreur si le nom existe déjà
'dans le classeur. On le supprime d'abord pour le recréer ensuite.
'--------------
'v_DataZone=thiscomponent.cells
v_Nom = ThisComponent.NamedRanges
'Supprime puis nomme la plage dans la feuille Données
'reste à trouver comment le faire de manière dynamique
' c'est-à-dire en définissant la zone avec les seules cellules
occupées par des données
'If ThisComponent.NamedRanges("data")=true Then
ThisComponent.NamedRanges.removeByName("data")
' End If
v_Nom.addNewByName( "data" , "$Données.$A$1:$H$800" , v_CellAdress , 0 )
End Sub
j'inscris les coordonnées de la zone à nommer "data" dans la macro.
Elles sont larges, ce qui m'oblige à exclure manuellement les entrées
vides dans les Tables de pilote.
Et cela manque d'élégance, ce qui est aussi une bonne raison de faire
mieux ;)
Je souhaite que cette zone soit "dynamique", afin de l'étendre à mesure
que j'entre des données dans les colonnes A à H.
Je n'y parviens pas, connaissant encore mal le nom des objets.
Comme écrire cette ligne ?
v_Nom.addNewByName( "data" , "$Données.$A$1:$H$800" , v_CellAdress , 0 )
Un coup de pouce serait bienvenu.
Merci
Lucien
--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être
supprimés
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.