Sostituire virgola al punto

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
epico
Messaggi: 58
Iscritto il: mercoledì 4 giugno 2014, 11:53

Sostituire virgola al punto

Messaggio 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.
OpenOffice 4.1 su Win10
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2991
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Sostituire virgola al punto

Messaggio 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
.
Allegati
Test - Macro - SostituzioneAutomaticaPuntoDecimaleConVirgolaInSpecificheAreeInserimentoDati.ods
(12.88 KiB) Scaricato 85 volte
epico
Messaggi: 58
Iscritto il: mercoledì 4 giugno 2014, 11:53

Re: Sostituire virgola al punto

Messaggio 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
Allegati
210318-165850.png
OpenOffice 4.1 su Win10
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2991
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Sostituire virgola al punto

Messaggio 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.
.
Allegati
Test - Macro - SostituzioneAutomaticaPuntoDecimaleConVirgolaInSpecificheAreeInserimentoDati.ods
(12.77 KiB) Scaricato 85 volte
epico
Messaggi: 58
Iscritto il: mercoledì 4 giugno 2014, 11:53

Re: Sostituire virgola al punto

Messaggio 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
Allegati
Test - Macro - SostituzioneAutomaticaPuntoDecimaleConVirgolaInSpecificheAreeInserimentoDati (2).ods
(20.39 KiB) Scaricato 90 volte
OpenOffice 4.1 su Win10
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2991
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Sostituire virgola al punto

Messaggio 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.
.
Shrek
Messaggi: 9
Iscritto il: lunedì 9 maggio 2016, 8:49

Re: Sostituire virgola al punto

Messaggio 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
Allegati
numeri con punto al posto per migliaia e decimali.ods
(16.94 KiB) Scaricato 37 volte
OpenOffice 4.1.2 Max OsX 10.11
Gaetanopr
Volontario
Volontario
Messaggi: 3291
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Sostituire virgola al punto

Messaggio da Gaetanopr »

Prova file allegato

Codice: Seleziona tutto

=SE(P13<>"";VALORE(RIMPIAZZA(P13;LUNGHEZZA(P13)-2;1;","));VALORE(RIMPIAZZA(Q13;LUNGHEZZA(Q13)-2;1;",")))
Allegati
numeri con punto al posto per migliaia e decimali.ods
(16.75 KiB) Scaricato 40 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Shrek
Messaggi: 9
Iscritto il: lunedì 9 maggio 2016, 8:49

Re: Sostituire virgola al punto

Messaggio da Shrek »

Si funziona alla grande!!!!


grazie infinite!!!!
OpenOffice 4.1.2 Max OsX 10.11
Shrek
Messaggi: 9
Iscritto il: lunedì 9 maggio 2016, 8:49

Re: Sostituire virgola al punto

Messaggio 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!
Allegati
numeri con punto al posto della virgola per migliaia e decimali.ods
(19.03 KiB) Scaricato 38 volte
OpenOffice 4.1.2 Max OsX 10.11
Rispondi