[Risolto] Macro per simil-sudoku

Creare una macro - Scrivere uno script - Usare le API
Rispondi
Avatar utente
Adso72
Messaggi: 46
Iscritto il: giovedì 21 marzo 2019, 17:12

[Risolto] Macro per simil-sudoku

Messaggio da Adso72 »

Mi servirebbe riempire un'area con una serie di valori che rispettino determinate condizioni, una specie di sudoku ma con regole meno restrittive.

Nel file di esempio (risolto a mano) l'area da popolare è quella in verde (C2:H14) ed i valori delle suddette celle devono rispettare determinati parametri:
- i valori devono essere numeri interi maggiori o uguali a zero;
- per ogni riga, la somma dei valori inseriti deve essere minore o uguale al valore target indicato nella colonna B
- per ogni colonna, la somma dei valori inseriti deve essere uguale al valore target indicato nella riga 1.

Non importa se nella riga o nella colonna sono presenti valori ripetuti purchè siano rispettate le sopracitate condizioni.

Personalmente, non avrei idea di come iniziare e di come scrivere la macro. :oops:

Potete darmi una mano?
Allegati
test.ods
(14.78 KiB) Scaricato 163 volte
Ultima modifica di charlie il domenica 7 aprile 2019, 19:24, modificato 2 volte in totale.
Motivazione: Aggiunta spunta verde
LibreOffice 67.4 su Linux Mint 21.1
Avatar utente
Eramad
Volontario
Volontario
Messaggi: 278
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Macro per simil-sudoku

Messaggio da Eramad »

Per curiosità, tu scrivi che l'area verde è C2:H14 mentre nel file l'area è C2:H32

Hai sbagliato a scrivere o ti serve davvero solo l'area C2:H14?

Per il primo punto puoi tranquillamente usare Validità dal menù Dati e dirgli di accettare solo "Numeri interi" e "Maggiore o uguale" a 0.

Non ho capito poi se la macro deve solo controllare o riempire le celle.
Se deve solo controllare, potresti anche usare la formattazione condizionale e impostare che se non rispettano le regole si attivi lo sfondo rosso.
Ad esempio se la somma della prima riga supera il valore target, la prima riga sarà con sfondo rosso. Modificando i valori e inserendo valori corretti, lo sfondo tornerà verde.
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Avatar utente
Adso72
Messaggi: 46
Iscritto il: giovedì 21 marzo 2019, 17:12

Re: Macro per simil-sudoku

Messaggio da Adso72 »

no, è stato un lapsus calami.

Ho scritto l'area a memoria, quella che mi serve è tutta l'area in verde C2:H32

La macro dovrebbe riempire le celle, mentre per il controllo utilizzo già la formattazione condizionale (non riportata nel file di esempio ma funzionante su quello di "lavoro") per evidenziare eventuali errori/discrepanze.

Si può anche farlo a mano, ma dovrei farlo per circa 1500 fogli diversi ed una macro sarebbe molto più comoda
LibreOffice 67.4 su Linux Mint 21.1
Avatar utente
Eramad
Volontario
Volontario
Messaggi: 278
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Macro per simil-sudoku

Messaggio da Eramad »

Se devi farlo per 1500 fogli....devi comunque copiare 1500 volte la macro.

Comunque vuoi una macro che generi numeri random riempiendo la tabella in modo da rispettare quei 3 criteri, giusto?
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Avatar utente
Adso72
Messaggi: 46
Iscritto il: giovedì 21 marzo 2019, 17:12

Re: Macro per simil-sudoku

Messaggio da Adso72 »

Sì, numeri random con quei 3 vincoli
LibreOffice 67.4 su Linux Mint 21.1
Avatar utente
Eramad
Volontario
Volontario
Messaggi: 278
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Macro per simil-sudoku

Messaggio da Eramad »

Ti provo ad allegare un file con una macro scritta molto in fretta...
Dovrebbe comunque funzionare.
Fai qualche test e facci sapere.
Allegati
test.ods
(12.83 KiB) Scaricato 150 volte
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Avatar utente
Adso72
Messaggi: 46
Iscritto il: giovedì 21 marzo 2019, 17:12

Re: Macro per simil-sudoku

Messaggio da Adso72 »

la macro funziona ma non rispetta bene il vincolo sulle colonne, è comunque un'ottima base per me in modo da poter iniziare a comprendere e studiarci su. :super: :super: :super:

Ora ci "gioco" un po'

GRAZIE MILLE!!!!
LibreOffice 67.4 su Linux Mint 21.1
Avatar utente
Eramad
Volontario
Volontario
Messaggi: 278
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Macro per simil-sudoku

Messaggio da Eramad »

In che modo non rispetta il vincolo sulle colonne?
Comunque "giocarci" è sempre il modo migliore per imparare e capire bene sia come funzionano sia come modificarle.
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Avatar utente
Adso72
Messaggi: 46
Iscritto il: giovedì 21 marzo 2019, 17:12

Re: Macro per simil-sudoku

Messaggio da Adso72 »

che il valore della somma a fine colonna non è uguale al valore target (forse non ho saputo spiegarmi al meglio).

Ad esempio, per la colonna C vorrei che la cella C33 (calcolata come

Codice: Seleziona tutto

=SOMMA(C2:C32)
) sia uguale alla cella C1 che è un valore imposto.

Nel file allegato in cui ho provato a far eseguire la macro, ho la seguente situazione
C1=16 e C33=12
D1=17 e D33=16
E1=14 e E33=13

Probabilmente non ero stato molto chiaro
Allegati
PROVA.ods
(16.1 KiB) Scaricato 144 volte
LibreOffice 67.4 su Linux Mint 21.1
Avatar utente
Eramad
Volontario
Volontario
Messaggi: 278
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Macro per simil-sudoku

Messaggio da Eramad »

No no eri stato chiaro.
Ho mischiato la regola 2 e la 3 e non mi ricordavo che solo la riga andava bene <= mentre la colonna doveva essere =
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Macro per simil-sudoku

Messaggio da Gaetanopr »

Ciao, io avevo capito che dovevano essere uguali sia il target riga che i totali di colonna
Ti allego esempio, naturalmente la somma target riga deve essere uguale alla somma delle colonne in questo caso
Allegati
PROVA.ods
(14.49 KiB) Scaricato 140 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
Adso72
Messaggi: 46
Iscritto il: giovedì 21 marzo 2019, 17:12

Re: Macro per simil-sudoku

Messaggio da Adso72 »

Grazie, sembra lavorare bene ed è un'ottima base per successivi affinamenti.

Solo che non riempie le celle delle righe 31 e 32, probabilmente bisogna giocare un po' con gli indici.

Ancora grazie per l'ottimo aiuto!!!!
LibreOffice 67.4 su Linux Mint 21.1
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Macro per simil-sudoku

Messaggio da Gaetanopr »

Adso72 ha scritto: Solo che non riempie le celle delle righe 31 e 32, probabilmente bisogna giocare un po' con gli indici.
Se il totale del target riga e delle colonne è diverso è ovvio che non completa la sequenza, anzi va in loop, infatti avevo specificato che questi 2 dati dovevano corrispondere come da mio allegato.
Invece questo che allego dovrebbe andare bene con i 3 parametri da te richiesti
Allegati
test.ods
(13.52 KiB) Scaricato 137 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
Adso72
Messaggi: 46
Iscritto il: giovedì 21 marzo 2019, 17:12

Re: Macro per simil-sudoku

Messaggio da Adso72 »

Gaetanopr ha scritto:
Adso72 ha scritto: Solo che non riempie le celle delle righe 31 e 32, probabilmente bisogna giocare un po' con gli indici.
Se il totale del target riga e delle colonne è diverso è ovvio che non completa la sequenza, anzi va in loop, infatti avevo specificato che questi 2 dati dovevano corrispondere come da mio allegato.
Invece questo che allego dovrebbe andare bene con i 3 parametri da te richiesti
E' (quasi) perfetta :super: :super: :super: :super: Se provo a cambiare i dati non compila la colonna H
Ti ringrazio, in ogni caso!!!

Una domanda che esula dalla macro specifica: se eseguo una macro, questa viene eseguita sul foglio attivo?
Cerco di essere più chiaro, ho Foglio1, Foglio2, Foglio3 etc ognuno con una certa combinazione da riempire; se eseguo la macro, questa riempie i dati per quale foglio? Quello che ha il focus?
Allegati
noH.ods
(16.76 KiB) Scaricato 105 volte
LibreOffice 67.4 su Linux Mint 21.1
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Macro per simil-sudoku

Messaggio da Gaetanopr »

Ho provato adesso e funziona, magari non la compila a primo colpo, bisogna rilanciare la macro, ho indicato un tempo massimo di 5 secondi dopo i quali la macro smette di lavorare e bisogna rilanciarla questo perchè a volte potrebbe perdere moltissimo tempo a cercare la combinazioni di numeri necessaria a soddisfare i parametri, ma solitamente in meno di 1 secondo riesce a completare la griglia
Per quanto riguarda i fogli la macro compila la griglia del primo foglio, ecco 'istruzione

Codice: Seleziona tutto

Sh = Doc.Sheets(0)
dove l'indice 0 sta per il primo foglio, se vuoi farla lavorare per tutti i fogli o per alcuni basta creare un ciclo.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
Adso72
Messaggi: 46
Iscritto il: giovedì 21 marzo 2019, 17:12

Re: Macro per simil-sudoku

Messaggio da Adso72 »

Ancora grazie!!!

Ultima richiesta: mi potresti un buon libro/sito dove iniziare a studiare per le macro?
E' tanto che non programmo ma le nozioni basi le ho, ricordo ancora bene turbopascal e fortran.... preistoria!!!!!
LibreOffice 67.4 su Linux Mint 21.1
Avatar utente
Eramad
Volontario
Volontario
Messaggi: 278
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Macro per simil-sudoku

Messaggio da Eramad »

https://wiki.openoffice.org/wiki/IT/Doc ... ASIC_Guide
viewtopic.php?f=35&t=9432
a me aiutano e hanno aiutato molto per le cose principali.
Secondo me è una ottima base di partenza in italiano.

Poi ci sono altre risorse (in inglese principalmente)
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Avatar utente
Adso72
Messaggi: 46
Iscritto il: giovedì 21 marzo 2019, 17:12

Re: Macro per simil-sudoku

Messaggio da Adso72 »

Eramad ha scritto:https://wiki.openoffice.org/wiki/IT/Doc ... ASIC_Guide
viewtopic.php?f=35&t=9432
a me aiutano e hanno aiutato molto per le cose principali.
Secondo me è una ottima base di partenza in italiano.

Poi ci sono altre risorse (in inglese principalmente)
grazie! ho un bel po' da leggere
LibreOffice 67.4 su Linux Mint 21.1
Rispondi