Date: prev next · Thread: first prev next last
2016 Archives by date, by thread · List index


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.