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!