Pagina 1 di 1
Sostituire virgola al punto
Inviato: giovedì 18 marzo 2021, 13:26
da epico
Salve,
vorrei evitare che se erroneamente si digita il punto al posto della virgola per i decimali, Calc sballa il formato.
Se scrivo 8.5 deve risultare 8,5 in automatico con la macro in Eventi foglio > contenuto modificato.
Ho iniziato con questo codice ma non riesco a ultimarlo, manca la parte più importante
Codice: Seleziona tutto
Sub Main(Target)
If Not Target.supportsService("com.sun.star.sheet.SheetCell") then exit sub
sh = Target.getSpreadsheet()
Celle = Array("A1:A5", "A11:A15", "A21:A25" )
For i = 0 To Ubound(Celle)
rang = sh.getCellRangeByName(Celle(i))
range3 = rang.queryintersection(Target.rangeaddress())
If range3.RangeAddressesAsString <> "" Then
REM parte non funzionante
'a = Target.String
'if instr(a,".") <> "" Then
'replace(a,".",",")
'end if
Next i
'Targhet.Value = a
end sub
Grazie a tutti in anticipo.
Re: Sostituire virgola al punto
Inviato: giovedì 18 marzo 2021, 16:49
da lucky63
.
Prova così:
Codice: Seleziona tutto
Sub Main(Target)
Rem Link del quesito: https://forum.openoffice.org/it/forum/viewtopic.php?f=9&t=11120
If Not Target.supportsService("com.sun.star.sheet.SheetCell") then exit sub
sh = Target.getSpreadsheet()
Celle = Array("A1:A5", "A11:A15", "A21:A25" )
For i = 0 To Ubound(Celle)
rang = sh.getCellRangeByName(Celle(i))
range3 = rang.queryintersection(Target.rangeaddress())
If range3.RangeAddressesAsString <> "" Then
Rem =============================================
Rem C O N V E R S I O N E
Rem =============================================
DatoInserito = Target.String
If InStr(DatoInserito , ".") > 0 Then
DatoInserito = CDbl(Replace(DatoInserito , "." , ","))
end if
'Print DatoInserito 'Test di verifica
'Stop
Target.Value = DatoInserito
'Rem =============================================
end if
Next
end sub
La sostituzione automatica del “punto” decimale con la “virgola” avverrà solo nel range [ Array() ] definito nella macro.
Nel caso specifico le aree A1:A5, A11:A15 e A21:A25
.
Re: Sostituire virgola al punto
Inviato: giovedì 18 marzo 2021, 17:20
da epico
Se scrivo 8,5 non mi mette i decimali scrive solo 8, se formatto la cella con 2 decimali mi mette 8,00
Se scrivo 8.5 mi dà errore
se formatto la cella con 2 decimali mi mette 0,00
Re: Sostituire virgola al punto
Inviato: giovedì 18 marzo 2021, 19:59
da lucky63
Così modificato funziona su LibreOffice 636.
Codice: Seleziona tutto
Rem =============================================
DatoInserito = Target.String
Print DatoInserito 'Test Verifica Inserimento fatto
If InStr(DatoInserito , ".") > 0 Then
DatoInserito = CDbl(Replace(DatoInserito , "." , ","))
Else
DatoInserito = Target.Value
end if
Print DatoInserito 'Test di verifica finale
'Stop
Target.Value = DatoInserito
'Rem =============================================
Notare che ho inserito un “Print” Iniziale e finale come test di verifica inserimento/conversione per le aree del range.
Invece, testando il file con OpenOffice 419, con la mia configurazione "Italiana", un numerico inserito con il punto viene convertito in valore “orario” ancor prima di essere intercettato (mentre con LibreOffice ciò avviene utilizzando i duepunti al posto del punto). Non so se dipende dalla mia configurazione lingua di OpenOffice (anche se non riesco a capire/ricordarmi dove provare ad intervenire. Prova a fare altri test.
.
Re: Sostituire virgola al punto
Inviato: giovedì 18 marzo 2021, 21:20
da epico
Avrei piacere di continuare a usare OpenOffice
Ho fatto prove anche con LibreO ed è ok mentre OpenO no
le prove sono nell'allegato
Lascio aperto la discussione aspettando aggiornamenti
Grazie
Re: Sostituire virgola al punto
Inviato: giovedì 18 marzo 2021, 21:33
da lucky63
.
Grazie per il tuo corretto riscontro su LibreOffice.
Per OpenOffice vedrò se riesco a gestire la cosa.
Se altri hanno idee in merito sono i benvenuti.
.
Re: Sostituire virgola al punto
Inviato: lunedì 28 novembre 2022, 11:27
da Shrek
Buon giorno a tutti, riprendo questo topic per non aprire l'ennesimo visto che il tema è simile ma con sfaccettature diverse.
Per la contabilità uso Open Office 4.1.12 con Mac OS High Sierra.
Ora ho il seguente problema: devo estrapolare dei dati da un foglio .xls dove gli importi sono indicati come segue
Nella cella di origine è ho
'-1.288.87
e vorrei ottenere il numero -1.288,87.
Essendo che viene usato il punto "." sia come separatore di migliaia che per i decimali la funzione Valore('-1.288.87) ) non mi da il risultato sperato ma esce fuori -0,2426736111 e non so come risolvere.
Non posso cambiare le mie preferenze di lingua altrimenti mi scombussolo tutto ma vorrei una funzione che da
"'-1.288.87" mi tirasse fuori "-1.288,87" qualcuno riesce a darmi una mano?
Allego un file di esempio
grazie anticipato a chi vorrà aiutarmi
Re: Sostituire virgola al punto
Inviato: lunedì 28 novembre 2022, 11:54
da Gaetanopr
Prova file allegato
Codice: Seleziona tutto
=SE(P13<>"";VALORE(RIMPIAZZA(P13;LUNGHEZZA(P13)-2;1;","));VALORE(RIMPIAZZA(Q13;LUNGHEZZA(Q13)-2;1;",")))
Re: Sostituire virgola al punto
Inviato: lunedì 28 novembre 2022, 14:06
da Shrek
Si funziona alla grande!!!!
grazie infinite!!!!
Re: Sostituire virgola al punto
Inviato: martedì 29 novembre 2022, 9:08
da Shrek
Allego una piccola modifica, sulla base delle indicazioni avute, per ottenere due colonne con dati: una per il Dare e una per l'Avere.
Grazie ancora per il supporto!