[Résolu][Calc] Changer le format d'une colonne

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
palombe06
Membre lOOyal
Membre lOOyal
Messages : 43
Inscription : 01 mars 2015 12:40

[Résolu][Calc] Changer le format d'une colonne

Message par palombe06 »

Bonjour,

J'étais déjà à l'origine du même sujet il y 15 jours et j'avais eu 2 réponses qui m'ont permis de clôturer le sujet.

Cependant, après quelques bidouillages, je m'aperçois d'une "erreur d'exception" qui apparait et je ne sais comment la résoudre.

Ne sachant comment rouvrir un sujet, j'en lance un autre.

Dans le code donné par luky luke, j'ai changé la ligne "mafeuille=lesfeuilles.getbyname("test")" par "mafeuille=thiscomponent.sheets(0)" et j'ai une erreur d'exception qui apparait dans la fonction au niveau de: "lacle=lesformats.addnew(monformat,localisation)"

Pouquoi ? J'ai pas l'impression d'avoir changé beaucoup de choses, et pourtant...

Je joins un fichier avec le code.

Merci pour votre aide

Bonne soirée à tous
Le modérateur a écrit :
règles de cette section a écrit :Le balisage (à taper au clavier) doit bien sûr être correctement orthographié (première lettre en majuscule puis le reste en minuscules).
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par palombe06 le 27 mars 2015 06:32, modifié 3 fois.
perso: libre office 5.1.4.2 sous windows 10
boulot: libre office 3.6.5.2 sous windows 7
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 936
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] changer le format d'une colonne

Message par luky-luke »

Bonjour

J'ai testé une première fois,
palombe06 a écrit :je m'aperçois d'une "erreur d'exception" qui apparait et je ne sais comment la résoudre.
Moi aussi, finalement, au désespoir à force de relire, je me contente de réécrire la chaîne de caractère dans la macro

Code : Tout sélectionner

# ##0,00;[RED]-# ##0,00
Et miracle, ça fonctionne.
Ne me demande pas pourquoi ! je ne sais pas :lol:

Cordialement
Luke
AOO 4.1.3 et LibO 5.3.7.2 Ubuntu 16.04 LTS et Debian 9
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
palombe06
Membre lOOyal
Membre lOOyal
Messages : 43
Inscription : 01 mars 2015 12:40

Re: [Calc] changer le format d'une colonne

Message par palombe06 »

Merci luky-luke pour ta réponse, mais malheureusement le problème persiste.
J'ai les mêmes effets qu'avec ta première version:
Au premier lancement tout fonctionne, par contre si tu changes la lettre de la colonne (E au lieu de D) l'erreur "d'exception" apparait. C'est pour cela que je ne comprends pas car c'est pas la lettre de la colonne qui peut faire planter l'EDI ???
Je veux bien que l'on soit en France est que cette erreur soit "l'exception" qui confirme la règle, mais j'aimerais comprendre le pourquoi du comment.
Si personne ne trouve je ferai comme dans ton premier exemple, je nommerai la feuille, ça à l'air de mieux tourner.
merci de ton aide
perso: libre office 5.1.4.2 sous windows 10
boulot: libre office 3.6.5.2 sous windows 7
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 936
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] changer le format d'une colonne

Message par luky-luke »

Bonjour
palombe06 a écrit :Au premier lancement tout fonctionne, par contre si tu changes la lettre de la colonne (E au lieu de D) l'erreur "d'exception" apparait.
Je ne reproduis pas ce que tu décris.
Test le fichier qui suit
Format_Colonne.ods
Cordialement
Luke
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOO 4.1.3 et LibO 5.3.7.2 Ubuntu 16.04 LTS et Debian 9
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Re: [Calc] changer le format d'une colonne

Message par bm92 »

Bonjour,
J'ai encore appris avec ce problème 8)

Lisons la documentation de l'API sur addNew de l'interface NumberFormats.
Elle indique que cette méthode peut déclencher une exception MalformedNumberFormatException.
Où est donc l'erreur de format ?

Une macro du livre Programmation OpenOffice.org liste les formats existants. J'ai récupéré des formats existants similaires (catégorie monétaire), et comparé avec un éditeur de texte.
Conclusion : l'espace de séparateur décimal est réalisé avec un(e) espace insécable (hexa A0, soit 160 en décimal).
Il fallait écrire ceci:

Code : Tout sélectionner

Dim espaceInsecable As String

espaceInsecable = chr(160)
'  Format : # ##0,00;[RED]-# ##0,00
monFormat = "#" & espaceInsecable & "##0,00;[RED]-#" & espaceInsecable & "##0,00"
Et ça marche.

Tant que j'y suis, la zone d'une colonne entière peut s'écrire:

Code : Tout sélectionner

maZone = maFeuille.Columns.getByName("D")
Avantage : pas besoin de savoir le nombre de lignes qu'accepte la feuille.

Il vaut mieux éviter de créer par programme des formats de cellule, ou des styles.
On peut partir d'un document préformaté; ou d'un modèle de document préformaté; ou créer une nouvelle feuille à partir d'une feuille préformatée laissée invisible; ou disposer d'une cellule dans une feuille quelconque du document, formatée comme on le souhaite, et recopier la valeur de sa propriété NumberFormat, ou de son nom de style.
Bernard

OpenOffice.org 1.1.5 fr / Apache OpenOffice 4.1.1 / LibreOffice 5.0.5.2 (X64)
MS-Windows 7 SP1 64bits Familial
palombe06
Membre lOOyal
Membre lOOyal
Messages : 43
Inscription : 01 mars 2015 12:40

Re: [Calc] changer le format d'une colonne

Message par palombe06 »

Et bien, il y en a qui sont drôlement bon !!!
J'avais aussi recherché le fonctionnement de "addNew", mais....j'avais pas compris grand chose.
Je vais donc tester ta solution.
Je suis effectivement d'accord avec toi de ne pas formater des colonnes en cours de route mais plutôt d'utiliser un modèle pré-formaté.
Cependant, mon fichier initial est un .CSV que je dois après modifier. Et comme je l'ai déjà expliqué dans un autre post, il n'y a pas moyen d'ouvrir un CSV avec un modèle pré-défini par l'utilisateur. Lorsqu'on crée un modèle, ce dernier n'est pas repris lors de l'ouverture du CSV. On m'avait répondu que c'était effectivement un bug car libre office allait chercher des modèles "à lui" dans son code et qui ne sont pas modifiables.
Donc pour conclure, je suis obligé de formater en cours de route.
Merci pour votre aide je teste tout cela dès que possible.
Bonne journée à tous
perso: libre office 5.1.4.2 sous windows 10
boulot: libre office 3.6.5.2 sous windows 7
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 936
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] changer le format d'une colonne

Message par luky-luke »

Bonjour
bm92 a écrit :formatée comme on le souhaite, et recopier la valeur de sa propriété NumberFormat
C'est ce que j'ai fait dans le fichier de mon message précédent. Et forcément, ça marche.
bm92 a écrit :J'ai encore appris avec ce problème 8)
+1 merci Bernard.
J'ai fait le curieux et la combinaison des touches alt gr - Espace dans l'EDI crée un(e) espace insécable.
Testé sur LibO 4.2.7.2 version Debian-Ubuntu 14.04.

Cordialement
Luke
AOO 4.1.3 et LibO 5.3.7.2 Ubuntu 16.04 LTS et Debian 9
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
palombe06
Membre lOOyal
Membre lOOyal
Messages : 43
Inscription : 01 mars 2015 12:40

Re: [Calc] Changer le format d'une colonne

Message par palombe06 »

merci à vous tous pour la résolution de mon problème. Tout marche très bien.
Bonne journée à tous et au plaisir de vous lire
perso: libre office 5.1.4.2 sous windows 10
boulot: libre office 3.6.5.2 sous windows 7