Compilazione sequenziale celle

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Fly88
Messaggi: 27
Iscritto il: martedì 29 ottobre 2019, 17:21

Compilazione sequenziale celle

Messaggio da Fly88 »

Buonasera a tutti, ragionando su una delle mie tabelle mi é sembrato che potrebbe tormarmi utile un codice e per questo avrei bisogno l aiuto di qualche esperto.
il ragionamento è semplice, vorrei che le celle ( sulla stessa riga ) possano essere compilate solo da sinistra verso destr a ed ugualmente per eliminarle, da destra verso sinistra, quindi in sintesi,
A1>A2>A3>A4>5...... A5<A4<A3<A2<1 e via dicendo.
nella compilazione dev essere proibito compilare una cella se quella precedente è vuota, e dev essere proibito eliminarle una se nella precedente c è qualcosa.
in questo modo evito che si apportino delle modifiche a dei dati che non possono essere modificati senza prima modificare quelli seguenti.
mi piacerebbe anche che apparisse una msgbox nel caso si tentasse di non rispettare codesta regola.

Se qualcuno potesse darmi una mano, grazie mille :)

p.s avevo un codice simile fornito da un utente, solo che quella impediva di modificare una cella se un altra é compilata. è simile ma non svolge questo compito di cui ho bisogno ora.
la allego ugualmente magari può tornare utile come base.

Codice: Seleziona tutto

Sub ModificaA(Target)
Dim Sh As Object
Dim LastRow  As Long
Dim range As Object

If NOT Target.supportsService("com.sun.star.sheet.SheetCell") then exit sub
   Sh = Target.getSpreadsheet()
   range = Sh.getCellRangeByName("J1:J10003")
   range2 = range.queryintersection(Target.rangeaddress())
   
   If range2.RangeAddressesAsString = "" Then exit sub
    Riga = Target.getCellAddress.Row
    Dim oPC As New "com.sun.star.util.CellProtection"
   If Target.String = "" Then
      oPC.IsLocked = False
    Else
        oPC.IsLocked = True
   End if
   
    Sh.UnProtect("")
   Sh.getCellByPosition(1, Riga).CellProtection = oPC
    Sh.Protect("")
End Sub

Ultima modifica di Fly88 il domenica 27 dicembre 2020, 11:12, modificato 2 volte in totale.
Openoffice 4.1.5 con MacOs 10.11.6
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 3073
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Compilazione sequenziale celle

Messaggio da lucky63 »

Prova e fai test.
Test - Macro - ScritturaNelleCelleInModoSequenziale.png
Test - Macro - ScritturaNelleCelleInModoSequenziale.png (11.08 KiB) Visto 2943 volte
La macro:
- sicuramente si poteva sviluppare con un codice diverso/migliore ;
- è collegata all'evento foglio contenuto modificato;
- è riferita al primo foglio del file e in caso diverso va adattata;
Applicandola in un nuovo file occorre inizialmente considerare anche che:
- le celle delle colonne A e B NON devono essere protette;
- il foglio va protetto senza password (se con password adattare la macro).
Mano a mano che vengono inseriti i dati vengono evidenziate in verde le celle in poter operare.
.
Allegati
Test - Macro - ScritturaNelleCelleInModoSequenziale.ods
(12.06 KiB) Scaricato 137 volte
Fly88
Messaggi: 27
Iscritto il: martedì 29 ottobre 2019, 17:21

Re: Compilazione sequenziale celle

Messaggio da Fly88 »

Ma se un mito veramente è esattamente come la volevo.
vedrò se tenere il verde oppure no.
l unica è la msgbox che mi dice sempre vietato modificare le celle protette e non il messaggio, ci guardo un attimo dietro se sbaglio io o magari trovi prima te l errore :)
Openoffice 4.1.5 con MacOs 10.11.6
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 3073
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Compilazione sequenziale celle

Messaggio da lucky63 »

Fly88 ha scritto:unica è la msgbox
Ho fatto un po' di modifiche.

Applicando la macro in un nuovo file occorre inizialmente considerare che
- TUTTE le celle del foglio NON devono essere protette;
- la macro è riferita al primo foglio del file e in caso diverso va adattata;
- non serve proteggere il foglio;
- la protezione foglio si attiverà automaticamente in seguito senza password;
- se si preferisce usare una password adattare la macro;
- la macro evidenzia con sfondo verde l'ultima cella inserita nella riga.
Test - Macro - ScritturaNelleCelleInModoSequenziale.png
Fai test.
Nel caso non volessi il colore ti basta fare piccole modifiche (commentare con ' o Rem le rispettive righe o toglierle).
.
Allegati
Test - Macro - ScritturaNelleCelleInModoSequenziale.ods
(12.56 KiB) Scaricato 118 volte
Fly88
Messaggi: 27
Iscritto il: martedì 29 ottobre 2019, 17:21

Re: Compilazione sequenziale celle

Messaggio da Fly88 »

caspita che formulone.. per un noob come me scrivere una cosa del genere mi spaventa :D
ti aggiorno
Openoffice 4.1.5 con MacOs 10.11.6
Fly88
Messaggi: 27
Iscritto il: martedì 29 ottobre 2019, 17:21

Re: Compilazione sequenziale celle

Messaggio da Fly88 »

ok la macro é ottima non potrei chiedere di meglio, ho notato solo un cosa magari risulta anche a te.
se scrivo in una cella troppo avanti sulla riga mi da la msg box giusta come impostata da te, se provo a modificare invece una precedente mi da la msgbox normale delle celle protette.
risolvibile?
Openoffice 4.1.5 con MacOs 10.11.6
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 3073
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Compilazione sequenziale celle

Messaggio da lucky63 »

Non credo e comunque al momento non mi viene in mente come poterlo fare.
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Compilazione sequenziale celle

Messaggio da Gaetanopr »

Buongiorno, prova il file che ti allego, non necessita di protezione celle.
Allegati
CompilazioneSequenzialeCelle.ods
(10.62 KiB) Scaricato 135 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Fly88
Messaggi: 27
Iscritto il: martedì 29 ottobre 2019, 17:21

Re: Compilazione sequenziale celle

Messaggio da Fly88 »

Ciao, non ho più aggiornato, il file precedente mi dava problemi mi sono accorto dopo, se compilavi delle celle a caso ti diceva giustamente che non potevi, ma poi se ne compilavi altre precedenti ad alcune compilate te lo lasciava fare, penso ci sia un problema
Nella protezione.
Stasera provo volentieri il tuo, grazie mille
Openoffice 4.1.5 con MacOs 10.11.6
Fly88
Messaggi: 27
Iscritto il: martedì 29 ottobre 2019, 17:21

Re: Compilazione sequenziale celle

Messaggio da Fly88 »

Buonasera Gaetano, il file funziona molto bene anche le msgbox in questa maniera sono corrette, c è solo un piccolo errore.
Se provo a cancellare la cella precedente, mi viene negato con relativa msgbox ed è giustissimo, però se la selezioni e riscrivi qualcos altro lo lascia fare.
è l unica cosa errata che ho notato.
Openoffice 4.1.5 con MacOs 10.11.6
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Compilazione sequenziale celle

Messaggio da Gaetanopr »

Fly88 ha scritto:... però se la selezioni e riscrivi qualcos altro lo lascia fare.
è l unica cosa errata che ho notato.
Nel tuo messaggio precedente dicevi questo
Fly88 ha scritto:se provo a modificare invece una precedente mi da la msgbox normale delle celle protette.
risolvibile?
Quindi la mia domanda è : se sbagli a digitare su una cella come fai a correggerla? a modificarla? come dici tu puoi solo cancellarla ma a ritroso naturalmente.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Fly88
Messaggi: 27
Iscritto il: martedì 29 ottobre 2019, 17:21

Re: Compilazione sequenziale celle

Messaggio da Fly88 »

la tua domanda é intelligente,difatti mi sta facendo pensare.
sostanzialmente perderei il senso della protezione però.

Mi sono accorto che se per sbaglio ( e può succedere a qualunque pollo compreso me ) modifichi una cella centrale e non ti rendi conto, sei abbastanza rovinato perchè si vanno a modificare parecchi conti, grafici ecc e potresti non accorgerti perchè sono cose già conteggiate.
Facendo in questo modo, te puoi continuare ad inserire dati su righe seguenti senza interrompere la tua produttività, ma non puoi eliminare o modificare niente del passato senza rivedere la riga intera.
Fortunatamente quello che viene inserito in tabella è comunque fatturato e quindi hai sempre un resoconto da andare a controllare.

Penso che ci metti meno a tirar fuori una fattura e riscrivere una riga errata che magari toccare una riga casuale senza renderti conto e poi ciao vai a trovare l errore che ti sballa tutto.

poi magari mi accorgo che sto facendo una cavolata assurda però cosi a prima vista valutando pro e contro penso di rientrare piu verso i pro. quindi vorrei almeno provare.
Openoffice 4.1.5 con MacOs 10.11.6
Fly88
Messaggi: 27
Iscritto il: martedì 29 ottobre 2019, 17:21

Re: Compilazione sequenziale celle

Messaggio da Fly88 »

Come non detto, il giochino come vorrei in questa tabella non funziona.
Non avevo tenuto conto che purtroppo, ho delle celle in cui quando scelgo un dato dal menu a tendina, mi compila automaticamente 5 colonne seguenti tramite cerca.vert.

La tua soluzione si ritrova ad essere la migliore. puoi entrare a modificare.
l'unica soluzione che mi viene in mente é un avviso senza nessun blocco. Quello potrei chiederti di inserirlo senza tanti altri sbattiti.

se provi a scrivere in una cella per cui la seguente contiene qualcosa, ( che attualmente è permesso ) visualizzare semplicemente un altro messaggio di avviso tipo " attenzione stai modificando un contenuto passato ".
Quindi semplicemente una msgbox in piu alla scrittura di una cella intermedia.

Oltretutto mi sto strippando perchè ci sono alcune colonne random in cui non la applica... credevo fosse legato ai menu a tendina invece una cella dove c é un tendina non la fa eliminare un altra si, una cella scritta si e tutte le altre no...
è che devo capire cosa non funziona perchè nel tuo file funziona....
non me la applica in colonna B ( menu a tendina ) colonna I ( cella compilata ) colonna V ( compilata )
:( :( :(

Aggiornamento:
Provo a scendere di 30 righe, compilo la riga 31 inclusi i menu a tendina, la macro funziona tutta... allora prima elimino tutti i contenuti delle prime 30 righe... poi elimino le righe totalmente...risultato:
la nuova riga 31 che avevo compilato, al momento che sale e diventa riga 1... da gli stessi problemi e prima funzionava...
come faccio a far sparire tutto ???
Openoffice 4.1.5 con MacOs 10.11.6
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Compilazione sequenziale celle

Messaggio da Gaetanopr »

Per fare delle prove dovresti allegare un tuo file con tanto di menù a tendina, replicare i tuoi passaggi e andare a vedere dove si creano gli errori, così non si arriva a nulla.
Ad ogni modo ho cambiato la macro, prova ad usare questa.
Il file funziona così:
1) non permette la modifica di celle già compilate
2) permette l'inserimento di dati a partire da sinistra non lasciando celle intermedie vuote
3) permette la cancellazione di dati a partire dall'ultima cella compilata da destra non lasciando celle intermedie vuote.

Saluti
Allegati
CompilazioneSequenzialeCelle (1) (1).ods
(10.78 KiB) Scaricato 91 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Fly88
Messaggi: 27
Iscritto il: martedì 29 ottobre 2019, 17:21

Re: Compilazione sequenziale celle

Messaggio da Fly88 »

Buongiorno Gaetano, ti ringrazio per la continua attenzione.
Stasera provo la nuova macro, in ogni caso come ti dicevo prima, potrebbe essere meglio la tua prima versione come da tuo avviso, con una semplice msgbox aggiuntiva quando provi a riscrivere una cella in una riga già compilata. Ti lascia farlo comunque ma ti dice attenzione stai modificando dati vecchi. ( se di facile costruzione altrimenti non è indispensabile. )

Riguardo al foglio, stasera faccio una prima prova molto veloce, riproduco la tabella in un nuovo foglio, senza copiare niente ma riscrivendo in modo da non portarmi dietro eventuali formattazioni o altro. L unica cosa che copieró sono ovviamente le formule. Poi ci metto dentro la macro e provo.

In questo foglio attuale non ci sono cose strane, a parte formule di somma.se, somme normali e qualche cerca.vert da tabelle posizionate in un altro foglio ( i menu a tendina che ti dicevo ) quindi non capisco cosa non dovrebbe andare ma fa niente, rifaccio un foglio e se funziona, quello attuale lo scarto.
Openoffice 4.1.5 con MacOs 10.11.6
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Compilazione sequenziale celle

Messaggio da Gaetanopr »

Fly88 ha scritto:.. in ogni caso come ti dicevo prima, potrebbe essere meglio la tua prima versione come da tuo avviso, con una semplice msgbox aggiuntiva quando provi a riscrivere una cella in una riga già compilata. Ti lascia farlo comunque ma ti dice attenzione stai modificando dati vecchi. ( se di facile costruzione altrimenti non è indispensabile. )
Ok, intanto prova l'ultima che ho allegato, a modificarla in tal senso si può fare, anzi è ancora più semplice.
Comunque aspetto un tuo file prima di modificarla, anche perchè i menù a tendina nascondono delle insidie con la gestione degli eventi come avrai notato!!
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Fly88
Messaggi: 27
Iscritto il: martedì 29 ottobre 2019, 17:21

Re: Compilazione sequenziale celle

Messaggio da Fly88 »

Eccomi, ovviamente la tua funziona perfetta, nel mio foglio manco a piangere.
Ho riscritto le tabelle, ti riassumo brevemente.

Foglio Magazzino
Sempre bloccato, tiene solo i dati per i menu a tendina e i cerca.vert ) ( in realtà si aggiorna da solo tramite un altro foglio carico e e prendendo valori da scarico ma non è importante per lavorare su questa scheda. )

Foglio Scarico.
Colonne marcate rosse sono con menu a tendina "area celle"
Colonne marcate arancioni sono con menu a tendina " elenco "
Colonne marcate verdi sono quelle NON compilabili dall utente. si riempono con cerca.vert ( attenzione, devono rimanere sempre bloccate )
Le colonne grigio chiaro sono quelle compilabili dall'utente.
Sono incluse anche alcune validità sulle colonne per il tipo di dati da inserire ( Superiori a 0 ecc )
Il file è bloccato senza password, dentro c é la tua ultima macro.


Però adesso mi è venuta in mente la cosa che ti avevo detto qualche risposta fa.
il problema del cerca vert. non posso eliminare a ritroso una cella che mi riempie 5 colonne seguenti, ovviamente perchè le 5 colonne seguenti sono compilate.
questo è un grosso problema e io personalmente non so minimanente come risolverlo. ( a meno che la macro non possa esser impostata in modo da ignorare le colonne protette? )
Una soluzione potrebbe essere a questo punto, permettere la compilazione solo verso destra sempre con la msgbox, e fin qui ci siamo.
Per eliminare invece, visto che non posso scavalcare le celle dei cerca.vert, consentire l eliminazione e la modifica ma con una msgbox di attenzione che ti avvisa che stai modificando dati vecchi.
A questo punto, è la via piu breve e semplice per accorgerti che stai facendo una cavolata.

So che magari potrebbero sembrare veramente richieste strampalate peró mi piacciono molto gli automatismi, mi piacerebbe riuscire a creare un file che sia molto indipendente, completo e che lasci poco margine di errore. Fin dove posso arrivare cerco di inventarmi il più possibile con le formule rovistando nel forum ed in google ma purtroppo, per altre cose senza codice non vai lontano ed in quello pecco abbastanza.
Apprezzo l impegno ed il supporto che ci date :D
Allegati
Test_Macro.ods
(17.93 KiB) Scaricato 83 volte
Openoffice 4.1.5 con MacOs 10.11.6
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Compilazione sequenziale celle

Messaggio da Gaetanopr »

Ho scaricato il file ed ho capito la tua logica, comunque non hai associato la macro main all'evento selezione modificata, ecco perchè non ti funziona.
Fai questa associazione e fai sapere se riscontri altri problemi, io più tardi faccio qualche test.

Saluti
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Fly88
Messaggi: 27
Iscritto il: martedì 29 ottobre 2019, 17:21

Re: Compilazione sequenziale celle

Messaggio da Fly88 »

Caspita che erroraccio!
Adesso funziona e se può tornati utile, ho appena notato che le uniche colonne che mi fa cancellare, sono quelle precedenti alle colonne protette che si riempono con cerca.vert, quindi probabilmente il proteggere quelle colonne annulla la macro.
Openoffice 4.1.5 con MacOs 10.11.6
Rispondi