Modifica grafico visivo estrazioni del Lotto

Buongiorno. Mi chiamo Davide e sono un nuovo utente. Sfogliando i vari topics ho visto che il tema Lotto è in…corso d’opera o comunque è gia stato trattato in altre circostanze. Non vorrei quindi apparire noioso e accavallare post fotocopia a quello di altri utenti,ma poichè anch’io sono amante virtuale del genere e scusandomi in anticipo,ciò che mi serve si discosta forse dai temi già affrontati e in discussione al momento. Il mio problema se così vogliamo chiamarlo è una questione di impostazione rispetto a quello che mi viene fuori scaricando le varie estrazioni da molti siti presenti sul web. Dovrei in pratica modificare l’assetto grafico e visivo che appare sul foglio di Libre Office una volta prelevata l’estrazione stessa. Allego 2 files : il 1° consiste nel come mi esce la schermata dopo che ho scaricato la pagina mentre il 2° file è giusto come lo vorrei io. Una buona serata

quadro estrazioni come lo vorrei io.ods (23.9 KB)
archivio estrazioni originale da internet.ods (29.4 KB)

Ciao. Credo che per una soluzione ottimale ci voglia una macro, ma siccome io non so scrivere il codice ti propongo intanto una soluzione con due formule.
Supponendo che nel Foglio1 ci siano i dati scaricati da internet, nel foglio 2 in A1 metti
=SE(E(RESTO(RIF.RIGA(A1);16)>=3;RESTO(RIF.RIGA(A1);16)<14);SCARTO($Foglio1.$B$2;;RESTO(RIF.RIGA(A1);16)-2);SE(RESTO(RIF.RIGA(A1);16)=1;"Estrazione numero "&SCARTO($Foglio1.$A$2;QUOZIENTE(RIF.RIGA(A1)-1;16)+1;)&" di "& TESTO(SCARTO($Foglio1.$A$2;QUOZIENTE(RIF.RIGA(A1)-1;16)+1;1);"gggg gg mmmm aaaa");""))
e tiri in basso per quanto ti può servire.
Poi in B2 metti
=SE.ERRORE(SE(E(RESTO(RIF.RIGA(A1);16)>=3;RESTO(RIF.RIGA(A1);16)<14);ESPR.REG(SCARTO($Foglio1.$B$2;(QUOZIENTE(RIF.RIGA(A1)-1;16)+1);RESTO(RIF.RIGA(A1);16)-2);"[0-9]{1,}";;RIF.COLONNA(A1));"");"")
e tiri a destra di 5 colonne e in basso.
Il file si aggiorna man mano che aggiungi o cambi i dati nel Foglio1
Cambio visualizzazione estrazioni lotto.ods (57.5 KB)

2 Likes

Una buona giornata a tutti gli utenti di questo Forum

Salve Gioh661. Ok,provo

Concordo con quanto detto da gioh, se vuoi posso allegarti una soluzione con macro.

Saluti

Ciao Gaetano. Sì,allega pure,grazie

I dati vengono inseriti nel Foglio3

Sub Main
Doc = ThisComponent
ShOr = Doc.Sheets.GetByName("Foglio1")
ShDest = Doc.Sheets.GetByName("Foglio3")
c = ShDest.createCursor
c.gotoEndOfUsedArea(false) 
LastRow = c.RangeAddress.EndRow
ShDest.getCellrangeByName("A1:H"+LastRow+1).ClearContents(1+4)

c = ShOr.createCursor
c.gotoEndOfUsedArea(false) 
LastRow = c.RangeAddress.EndRow
LastCol = c.RangeAddress.EndColumn

RigaIn = 0
Col = 0
Giorni = Array ("Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Domenica")
Mesi = Array("GENNAIO", "FEBBRAIO", "MARZO", "APRILE", "MAGGIO", "GIUGNO", "LUGLIO", "AGOSTO", "SETTEMBRE", "OTTOBRE", "NOVEMBRE", "DICEMBRE")
Numero = 1
For i = LastRow To 2 Step - 1
   cont = 0
   Nestr = ShOr.GetCellByPosition(0, i).String                    'Numero estrazione
   Data = DateValue(ShOr.GetCellByPosition(1, i).String)
   Stringa = "Estrazione numero " + Nestr + " di " + Giorni(WeekDay(Data)-2) + " " + Day(Data) + " " + Mesi(Month(Data)-1) + " " + Year(Data)
   ShDest.GetCellByPosition(Col, RigaIn).String = Stringa
   ShDest.GetCellByPosition(7, RigaIn).String = Numero
   Numero = Numero + 1
   For y = 2 To LastCol
      cont = cont + 1
      Ruota = ShOr.GetCellByPosition(y, 1).String
      NumEstr() = Split(ShOr.GetCellByPosition(y, i).String, " ")
      ShDest.GetCellByPosition(Col, RigaIn+1+cont).String = Ruota
      
      For num = 0 To Ubound(NumEstr)
           ShDest.GetCellByPosition(Col+1+num, RigaIn+1+cont).String = NumEstr(num)
       Next num
       
   Next y
    
  RigaIn = RigaIn + 16
   
Next i

End Sub


archivio estrazioni originale da internet.ods (27.4 KB)

Ciao,funziona e tutto mi si aggiorna in Foglio 3. Grazie mille. Il foglio 2 a cosa serve ? Giusto nel caso volessi modificare il codice da Foglio3 a Foglio2 concernente l’aggiornamento ?

A nulla, era una copia che avevo fatto dell’altro tuo file per avere in un unico file i dati origine e i dati finali, puoi eliminarlo oppure eliminare il Foglio3 e lasciare il Foglio2, però in questo caso la macro và modificata come bene puoi intuire ShDest = Doc.Sheets.GetByName("Foglio3") diventa ShDest = Doc.Sheets.GetByName("Foglio2") o puoi mettere il nome che più ti piace

Perfetto,grazie

Ciao Gaetano, (a Gio e a tutti gli altri utenti del Forum naturalmente). Mi sono accorto soltanto ora che riguardo la macro che mi hai inviato,persiste sempre un piccolo intoppo concernente l’allineamento dei numeri,che solitamente (di default) dovrebbe essere come nella foto 1,e invece dopo l’esecuzione del codice rimangono nella posizione inversa (opposta) come in foto 2. In Libre Office questo purtroppo mi crea dei problemi nei passaggi successivi in quanto la Formattazione Condizionale non riconosce la diversa collocazione dei valori e di conseguenza la suddetta non si attiva. So che può sembrare una banalità ma è realmente così. Provando tra l’altro a fare l’allineamento manuale (da destra a sinistra o anche viceversa) non cambia nulla. Riattivando la macro,la FC continua a non funzionare. Può essere tutto ciò sia causato da un processo di incompatibilità fra le estrazioni che vengono scaricate in formato Excel e lo step successivo che trasferisce i dati in Libre Office ? Non so. Ti domando se fosse possibile a questo punto modificare lievemente la macro al fine di eliminare forse questo inghippo e far sortire i numeri come in foto 1. Ho preso a riferimento il tuo ultimo file e quindi ho evitato di mandarlo di nuovo. Grazie e buona giornata


Ciao, dovrebbe questa modifica

ShDest.GetCellByPosition(Col+1+num, RigaIn+1+cont).String = NumEstr(num)
DIVENTA
ShDest.GetCellByPosition(Col+1+num, RigaIn+1+cont).Value = NumEstr(num)

Ciao,scusa non è cambiato nulla. Ho sostituito come hai detto tu. Mi dà questa schermata comparendomi lo zero (0) in colonna G

Per lo zero finale cambia in questo modo

 For num = 0 To Ubound(NumEstr) - 1
           ShDest.GetCellByPosition(Col+1+num, RigaIn+1+cont).Value = NumEstr(num)
       Next num

Il Foglio3 eliminalo e inseriscine uno nuovo sempre Foglio3
Allego file
archivio estrazioni originale da internet.ods (28.5 KB)

Ok,va bene

E’ meglio fare diversamente per evitare qualsiasi errore, allego la macro modificata.

Sub Main
Doc = ThisComponent
ShOr = Doc.Sheets.GetByName("Foglio1")
ShDest = Doc.Sheets.GetByName("Foglio3")
c = ShDest.createCursor
c.gotoEndOfUsedArea(false) 
LastRow = c.RangeAddress.EndRow
ShDest.getCellrangeByName("A1:H"+LastRow+1).ClearContents(1+4)

c = ShOr.createCursor
c.gotoEndOfUsedArea(false) 
LastRow = c.RangeAddress.EndRow
LastCol = c.RangeAddress.EndColumn

RigaIn = 0
Col = 0
Giorni = Array ("Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Domenica")
Mesi = Array("GENNAIO", "FEBBRAIO", "MARZO", "APRILE", "MAGGIO", "GIUGNO", "LUGLIO", "AGOSTO", "SETTEMBRE", "OTTOBRE", "NOVEMBRE", "DICEMBRE")
Numero = 1
For i = LastRow To 2 Step - 1
   cont = 0
   Nestr = ShOr.GetCellByPosition(0, i).String                    'Numero estrazione
   Data = DateValue(ShOr.GetCellByPosition(1, i).String)
   Stringa = "Estrazione numero " + Nestr + " di " + Giorni(WeekDay(Data)-2) + " " + Day(Data) + " " + Mesi(Month(Data)-1) + " " + Year(Data)
   ShDest.GetCellByPosition(Col, RigaIn).String = Stringa
   ShDest.GetCellByPosition(7, RigaIn).String = Numero
   Numero = Numero + 1
   For y = 2 To LastCol
      cont = cont + 1
      Ruota = ShOr.GetCellByPosition(y, 1).String
      NumEstr() = Split(Trim(ShOr.GetCellByPosition(y, i).String), " ")
      ShDest.GetCellByPosition(Col, RigaIn+1+cont).String = Ruota
      
      For num = 0 To Ubound(NumEstr) 
           ShDest.GetCellByPosition(Col+1+num, RigaIn+1+cont).Value = NumEstr(num)
       Next num
       
   Next y
    
  RigaIn = RigaIn + 16
   
Next i

End Sub

PS: La spunta di soluzione non và messa sul tuo ultimo messaggio.

Guarda se la spunta adesso va bene per favore

Ok, sulla macro finale cioè quella corretta.
:+1:

Perfetto,grazie

Caro Gaetano (ma la domanda è rivolta anche a Gio e ad altri ovviamente),scusa se riapro un attimino questo argomento. Riesci a trovarmi un modo per invertirmi la tabella delle estrazioni da questo foglio allegato ? In pratica dalla più piccola (111) alla più grande (121) in modo ascendente. Come vedi adesso sono in forma discendente. Grazie,ciao

Invertire la tabella.ods (22.6 KB)