Scusate può darsi che mi intrometto a sproposito, ma in questo
periodo non ho tempo di seguire bene le discussioni. Da una molto
superficiale lettura della questione, mi pare che forse potrebbe
essere di aiuto questa soluzione che ho usato in un foglio. In questo
caso non viene scritto un valore in una terza cella , ma modificata la
formattazione, (cambia lo sfonda da bianco a rosso e viceversa) ma a
inuito mi pare che non sia difficile modificare in quel senso. La
formula è la seguente: 

=WENN(UND(TAGE($AD$102;AF155)>6;AH107="");COLORACELLA(ZELLE("address";AG107);ZELLE("sheet";AG107));SCOLORACELLA(ZELLE("address";AG107);ZELLE("sheet";AG107)))

e le funzioni (coloracelle e scoloracelle) le seguenti: 

Function ColoraCella(sCella as string, sTab as integer)
 oDocument = ThisComponent
 oCella=
oDocument.Sheets.getByIndex(sTab-1).getCellRangeByName(sCella)
 oCella.CellBackColor=16711680
 ' oCella.CharColor=16711680
 End Function

 Function SColoraCella(sCella as string, sTab as integer)
 oDocument = ThisComponent
 oCella=
oDocument.Sheets.getByIndex(sTab-1).getCellRangeByName(sCella)
 oCella.CellBackColor=-1
 End Function

Naturalmente nel SE, ci metti quello che vuoi e la AG107 é
quella che vuoi modificare. 

Ah, dimenticavo... la funzione è scritta in tedesco, quindi:
WENN = SE, ZELLE = CELLA, 

UND = E, TAGE = GIORNO non ne sono proprio sicuro ma la traduzione
letterale è questa. 

Se é utile bene, senno cancellate tutto! 

Antonello

--------Cesare Spaziani  wrote-------- 

Subject: Re: [utenti] far agire il SE su un'altra cella 

Date: 19.04.2012 17:58 

 Il 18/04/2012 19:17, [email protected] ha scritto:
>  > Posto di qua dato che in ML Libò l'argomento è fermo
> ma credo possa interessare
>  > sia come soluzione che come eventuale stimolo :-)
>  >
>  > Avevo postato questo:
>  > %
>  > Ci deve essere sicuramente una soluzione semplice ma proprio non
> mi viene...
>  > E' possibile utilizzare un SE per riempire o una terza o una
> quarta cella?
>  > In pratica, SBAGLIANDO la sintassi ma seguendo la logica mi
> occorrerebbe avere
>  > una formula del tipo:
>  > SE(A1>5; C1=\"XXXX\";D1=\"XXXX\") [leggendola: se a1 è maggiore
> di 5 allora metti
>  > in c1 le x, se no metti in d1 le x] (ovviamente il tutto, celle
> valori segni e
>  > compreso la formula SE, sono per pura indicazione del processo
> logico e non
>  > materialmente dei vincoli)
>  > Esempio per spiegare cosa vorrei ottenere:
>  > A1 è la cella discriminante (dove immettere il carattere
> che fa da
>  > spartiacque)
>  > B1 continene il SE che deve spostare l'eventuale segno di spunta
> tra C1 e D1
>  > C1 cella di destinazione
>  > D1 cella di destinazione
>  >
>  > Ovviamente le celle C1 e D1 non possono contenere ne formule ne
> altro dato che
>  > quella delle due non contenente le XXX dell'esempio dovrà
> essere scritta in
>  > seguito, con dati successivi.
>  > Piccola altra complicazione: non posso usare la formattazione
> condizionata
>  > dato che questa diviene attiva DOPO che si è inserito
> qualcosa nella cella,
>  > mentre mi occorre che una delle due celle contenga il segno di
> eliminazione
>  > PRIMA di qualsivoglia digitazione. (Ovvero se ad esempio uso
> formattazione
>  > condizionata rosso e doppio barrato i caratteri del dato
> diverranno rossi e
>  > doppiobarrati DOPO che nella cella C1 sono stati scritti e si sia
> premuto invio
>  > ma a me occorre che quella cella sia interdetta o bloccata in
> qualche modo o
>  > già riempita con delle XXX PRIMA che perdano tempo a
> scriverci per poi
>  > accorgersi di aver sbagliato, cancellare e riscrivere nelle celle
> giuste)
>  >
>  > Il SE computa il risultato nella sua cella, ovvero restituisce il
> risultato
>  > nella cella dov'è inserita la formula, come si fa a fargli
> puntare ad un'altra
>  > casella, ovvero a fargli inserire i risultati in una casella
> terza??
>  > %
>  >
>  > unica risposta
>  > %
>  >> Io farei così:
>  >> In A1 metti il valore che vuoi, purché sia un numero.
>  >> In C1 scrivi SE(A1>5;\"x\";\"\")
>  >> In D1 scrivi SE(A1> Non userei B1.
>  >> La doppia virgoletta ti lascia la cella vuota.
>  >
>  > No, è già fatto a questa maniera e non va bene, le
> celle c1 e d1 DEVONO
>  > restare vuote dato che chi compilerà il modulo altrimenti
> sovrascriverà i SE
>  > che contengono!
>  > Ho usato l'escamotage di fare il modulo originale in OTS (modello)
> in modo che
>  > aprano dei nuovi moduli di volta in volta, quindi riproducendo
> ogni volta la
>  > situazione originale, senza caselle con le formule sovrascritte ma
> non c'è
>  > verso, le ragazze
>  > mi creano casini compilando i moduli successivi utilizzando il
> precedente già
>  > fatto anzichè aprendone uno nuovo e quindi nelle celle che
> contenevano il SE
>  > alla volta successiva non c'è piùla formula dato che
> sonos tati inseriti i dati
>  > e si scombina tutto il resto dei dati....
>  >
>  > In pratica devo far compilare un elenco complesso e a seconda di
> cosa viene
>  > scritto in alcune determinate celle una serie di altre devono
> essere
>  > immediatamente riempite con delle X o interdette in modo da
> risultare A VISTA
>  > non scrivibili, mentre delle altre resteranno vuote quindi
> riempibili con i
>  > dati necessari. In questo modo prevengo gli errori e sopratutto
> non devo
>  > andarmi a ricontrollare tutti i sacrosanti dati uno per uno visto
> che sono una
>  > sfliza di valori e li sbagliano praticamente sempre...
>  >
>  > Nel caso non se ne venga a capo con semplici formule
> proverò a farmi una macro
>  > ad hoc... anche se volevo evitare macro e sopratutto pensavo
> esistesse la
>  > possibilità di andare a modificare un valore in una cella
> terza anzichè per
>  > forza limitarsi alla combinazione
> cellaorigineformula=cellarisultatofinale:
>  > tutte le formule restituiscono il controvalore nelle celle in cui
> sono
>  > scritte...
>  > %
>  >
>  > Ho risolto (per modo di dire) così: ho creato una serie di
> campi formattati
>  > con la barra formulario associando ad ognuno di questi la serie di
> macro
>  > necessarie a riempire o meno le celle finali.
>  > Ma è un pasticcio e non mi piace come soluzione.
>  > Quindi pongo un ulteriore questione: è possibile bloccare
> una cella
>  > nascondendola o comunque impedendone la scrittura se in una
> determinata altra
>  > avviene qualcosa?
>  > Esempio:
>  > A1 vuota
>  > A2 vuota
>  > A3 vuota
>  > Scrivo 1 in A1 ed alla pressione del tasto invio il cursore si
> porta in A2
>  > Scrivo 3 in A1 ed alla pressione del tasto invio il cursore si
> porta in A3
>  > saltando A2 dato che 3 è il numero scelto come
> discriminante.
>  >
>  > Lo so che propongo cose di non semplice soluzione ma vedetela
> così: è un
>  > pungolo a sbirciare da nuovi punti di vista :-)
>  >
>  > Grazie per la pazienza di aver letto sta lunghissima mail
>  > Angelo
>  >
>  >
> ---------------------------------------------------------------------
>  > Per cancellarsi: [email protected]
>  > Per informazioni: http://www.openoffice.org/it/
>  > Per avviare una nuova discussione:
> [email protected]
>  > Archivi:
> http://mail-archives.apache.org/mod_mbox/incubator-ooo-utenti-it
>  >
>  Ciao,
>  se decidi di abbandonare le formule (te lo consiglio!) puoi provare
> con
>  le macro!
>  Ti mando un esempio che utilizza un event listner.
>  Vedi se fa al caso tuo:
> 
>  Attenzione alle righe di codice spezzate x motivi di spazio!
> 
>  Global oListener, oSheet, oCell
> 
>  Sub AddListenerA1
>  oSheet = ThisComponent.getSheets().getByName(\"Foglio1\")
>  oCell = oSheet.getCellRangeByName(\"A1\")
>  oListener = CreateUnoListener(\"OOO_\",
>  \"com.sun.star.chart.XChartDataChangeEventListener\")
>  oCell.addChartDataChangeEventListener(oListener)
>  End Sub
> 
>  Sub OOO_chartDataChanged
>  Dim aCellProtection As New com.sun.star.util.CellProtection
>  oCellToLock = oSheet.getCellRangeByName(\"F1\") 'La cella da
> proteggere è F1
>  If oCell.getValue() > 5 Then
>  oSheet.getCellRangeByName(\"C1\").String = \"XXXX\"
>  aCellProtection.IsLocked = true
>  oCellToLock.CellProtection = aCellProtection
>  Else
>  oSheet.getCellRangeByName(\"D1\").String = \"XXXX\"
>  End If
>  End Sub
> 
>  Sub RemoveListnerA1
>  oCell.removeChartDataChangeEventListener(oListener)
>  End Sub
> 
>  Il funzionamento è semplice, esegui AddListnerA1 e poi prova
> a inserire
>  un valore in A1.
>  Se il valore inserito è maggiore di 5 scrive in C1 e blocca
> F1,
>  altrimenti scrive in D1.
>  Dovrebbe essere più o meno quello che ti serviva...
> 
> 
> ---------------------------------------------------------------------
>  Per cancellarsi: [email protected]
>  Per informazioni: http://www.openoffice.org/it/
>  Per avviare una nuova discussione:
> [email protected]
>  Archivi:
> http://mail-archives.apache.org/mod_mbox/incubator-ooo-utenti-it
>   

Rispondere a