Condividi:        

Formattazione condizionale.....

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Formattazione condizionale.....

Postdi luigi99 » 26/08/08 11:58

La formattazione condizionale permette l'inserimento di massimo 3 condizioni e so che il problema è stato già trattato, con il trova ne ho letto diverse soluzioni, ma tutte molto complesse per l'uso che voglio farne. :oops: :oops:
Ho solo bisogno di avere un paio di condizioni in più (5) poter colorare delle celle con lo stesso colore delle celle in cui occasionalmente viene inserito un valore ;)
C'è un modo semplice per arrivarci?
Grazie.
Ciao
ex Autodidatta, ma ancora in cerca di grane con il computer
luigi99
Utente Senior
 
Post: 563
Iscritto il: 21/11/01 01:00
Località: Vigliano Biellese

Sponsor
 

Re: Formattazione condizionale.....

Postdi Anthony47 » 26/08/08 17:19

Ciao Luigi, so che si possono impostare colori diversi (da formattazione Personalizzata) per valori negativi, o zero, o positivi, a cui sommare i 3 livelli di formattazione condizionata.
Mi pare che il tuo obiettivo sia pero' un po' piu' complesso, io lo affronterei con una macro di Worksheet_Change e nella macro andrei a verificare le condizioni per l' applicazione dei colori.

Se serve ulteriore aiuto dovresti spiegare su quali celle devi applicare il colore e su quali condizioni.

Ciao.

PS: oppure Excel2007
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Formattazione condizionale.....

Postdi luigi99 » 27/08/08 23:57

Ciao Anthony,
cerco di spiegarmi meglio:
nelle celle di una colonna di excel ho una serie di numeri (normalmente 3).
Questa colonna ha sfondo bianco.
La serie di numeri viene inserita, manualmente, e secondo le necessità, in altre celle con sfondi diversi.
Quando ciò avviene la cella che contiene la serie uguale deve assumere come sfondo il colore della cella in cui viene inserita la serie.
Con la formattazione condizionale ho solo tre possibilità e a me servirebbe avere la possibilità di evidenziare almeno cinque serie di numeri, ma non trovo come fare.....
Una cella soggetta a formattazione condizionale può accettare anche una macro?? oppure una macro può prevaricare una formattazione condizionale?
È una cosa fattibile?...e come??
Grazie ancora.
Buonanotte
ex Autodidatta, ma ancora in cerca di grane con il computer
luigi99
Utente Senior
 
Post: 563
Iscritto il: 21/11/01 01:00
Località: Vigliano Biellese

Re: Formattazione condizionale.....

Postdi Anthony47 » 28/08/08 01:05

Lascerei stare la formattazione condizionale e procederei con una macro; ad esempio qualcosa come questa:
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
DataEntryR = "D1:E100"     '<<< Area in cui si scrivono dati
CheckR = "A1:A100"         '<<< Area in cui va cambiato il colore
If Intersect(Target, Range(DataEntryR)) Is Nothing Then Exit Sub
If Selection.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Application.EnableEvents = False
For Each Cella In Range(CheckR)
If Cella.Value = Target.Value Then Cella.Interior.ColorIndex = Target.Interior.ColorIndex
Next Cella
Application.EnableEvents = True
End Sub


Modifica le istruzioni marcate <<< per riflettere la tua situazione; tieni presente che modificare un colore per excel non e' un evento, quindi se modifichi il colore su una cella gia' scritta dell' area DataEntryR la casella corrispondente in CheckR non vera'' modificata, salvo che non la selezioni "nuovamente". Ho usato l' evento SelectionChange (invece di Change) proprio perche' e' piu' semplice "revisionare" tutte le celle di DataEntryR scorrendole con le frecce di spostamento selezione.
Va inserita nel foglio codice del foglio su cui lavori: tasto dx sul tab col nome foglio, scegli Visualizza codice; copia e incolla nel frame di dx.

Se non fa quello che chiedi o se non riesci ad adattarla fatti sentire.
PS: una macro non prevarica la formattazione condizionale, anzi e' il contrario.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Formattazione condizionale.....

Postdi luigi99 » 28/08/08 11:37

La macro funziona, ma ci sono un paio di problemi:
La colorazione della cella deve annullarsi quando io cancello i valori dalla cella che ha condizionato la colorazione.....(sono chiaro?? :D )

Come faccio a ripetere n volte il comando cambiando colore e serie di celle?
Ho copiato e incollato la macro due volte nello stesso foglio (cambiando i riferimenti), ma quando esco dalla compilazione ricevo:
ERRORE DI COMPILAZIONE
Rilevato nome univoco: Worksheet_selection_Change
Ho provato ad aggiungere nella stessa macro:

DataEntry = "Q2:Q9"
CheckR = "M1:M200"
DataEntry = "R2:R9"
CheckR = "M1:M200"
ma la macro non funziona più :eeh: :eeh:
Che faccio??
Buon appetito :) :)
ex Autodidatta, ma ancora in cerca di grane con il computer
luigi99
Utente Senior
 
Post: 563
Iscritto il: 21/11/01 01:00
Località: Vigliano Biellese

Re: Formattazione condizionale.....

Postdi Anthony47 » 28/08/08 15:05

Ovviamente non puoi mettere due macro per gestire lo stesso evento (SelectionChange); ma perche' hai cercato di mettere due copie del codice?

Se ho capito bene, con le due definizioni di DataEntryR vorresti definire un range tipo Q2:R9; se e' cosi', basta che scrivi DataEntryR="Q2:R9"

Ma soprattutto, vorrei sapere bene quello che vorresti ottenere:
-diciamo che hai un' area tipo M1:M200 e un' area Q2:R9
-vuoi colorare Q2:R9 quando digiti in M1:M200 o viceversa?
-o vuoi cololare tutte le volte che c' e' un incrocio tra l' area M1:M200 e Q2:Q9, comunque si sia prodotto ? In questo caso spiega quale e' la sorgente del colore
-i colori "sorgente" sono preimpostati, o li vuoi poter cambiare e riportarli contemporaneamente sull' area di "destinazione"
-quante sono le celle coinvolte (dimensione dei due range)?

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Formattazione condizionale.....

Postdi luigi99 » 28/08/08 16:10

Vedo di spiegare meglio:
Ho un'area M1:M200 dove vengono inseriti in celle diverse tre numeri tipo: 21-22-23, 45-46-47 ecc. ecc..
Questi numeri vengono manualmente e provvisoriamente inseriti (21-22-23 o 44-45-46 o altra serie) in un'altra area a sfondo azzurro: Q2:Q9
oppure nell'area a sfondo verde: R2:R9
oppure nell'area a sfondo giallo: S2:S9 fino a un massimo
di 5/6 aree diverse.
Quando ciò avviene la cella dell'area M1:M200 che contiene la serie dovrebbe assumere il colore dell'area in cui la terzina viene inserita.
Nel caso che nessuna terzina sia inserita nelle aree provvisorie (Q2:Q9 ecc.) l'area M1:M200 deve ritornare con sfondo predefinito bianco.
Io ho usato la formattazione condizionale e il colore di sfondo per evidenziare la posizione delle terzine perchè mi è parso il metodo più veloce e semplice, ma andrebbe bene anche una qualunque formattazione (anche del testo) basta che mi evidenzi la posizione della terzina nella colonna base M1:M200.
Sono stato più chiaro? ho complicato un pò le cose? :D :D
Ciao e ancora grazie per la pazienza con cui mi segui.
Luigi.

P.S.= Ricordi che tempo fa avevo chiesto se si poteva cambiare il colore predefinito della griglia di excel? :?:
io ho continuato a cercare per un pò, ma neanche Microsoft ha delle soluzioni :eeh:
ex Autodidatta, ma ancora in cerca di grane con il computer
luigi99
Utente Senior
 
Post: 563
Iscritto il: 21/11/01 01:00
Località: Vigliano Biellese

Re: Formattazione condizionale.....

Postdi luigi99 » 28/08/08 16:33

Peccato non si possa modificare il messaggio!!! :( :( ti avrei evitato tanti ragionamenti!! :D :D

Allora, modificando il range DataEntryR="Q2:T9"
ho ottenuto la possibilità di avere quattro colori diversi da scegliere come evidenziatori!!!! :lol: :lol:
E con una cosa così posso arrivare tutte le possibilità che voglio!!!!

L'unico intoppo che rimane è che quando cancello la serie dall'area Q2:T9, la casella in M1:M200 dovrebbe ridiventare bianca!!!!
ex Autodidatta, ma ancora in cerca di grane con il computer
luigi99
Utente Senior
 
Post: 563
Iscritto il: 21/11/01 01:00
Località: Vigliano Biellese

Re: Formattazione condizionale.....

Postdi Anthony47 » 29/08/08 00:01

Bravo luigi,
ma per gestire le cose che vuoi tu io ti cambio le macro; sempre nel modulo di codice del foglio su cui lavori metti questo codice in sostituzione di quello che hai personalizzato:

Codice: Seleziona tutto
Dim TarAd As String

Private Sub Worksheet_Change(ByVal Target As Range)
'Exit Sub
DataEntryR = "D2:F100"   '<<< Area in cui si scrivono dati
CheckR = "A1:A100"       '<<< Area in cui va cambiato il colore
If Intersect(Target, Range(DataEntryR)) Is Nothing And Intersect(Target, Range(CheckR)) Is Nothing Then Exit Sub
Application.EnableEvents = False
CC1 = Range(DataEntryR).Range("A1").Column
RR1 = Range(DataEntryR).Range("A1").Row
CCC = Range(DataEntryR).Columns.Count
RRC = Range(DataEntryR).Rows.Count
Application.ScreenUpdating = False
Range(CheckR).Interior.ColorIndex = xlNone
For Each Cella In Range(CheckR)
For I = 1 To CCC
Range(DataEntryR).Range(Cells(RR1, I), Cells(RR1 + RRC - 1, I)).Select
If Cella.Value = "" Then Exit For
If Application.WorksheetFunction.CountIf(Range(DataEntryR).Range(Cells(RR1, I), Cells(RR1 + RRC - 1, I)), Cella.Value) > 0 Then
Cella.Interior.ColorIndex = Cells(RR1, CC1 + I - 1).Interior.ColorIndex
End If
Next I
Next Cella
Range(TarAd).Select
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
TarAd = Target.Address
Target.Select
End Sub

Ho deciso di usare l' evento Worksheet_Change per intercettare qualsiasi cambiamento, e di fare il controllo con la funzione CountIf, ripetuta su ogni colonna dell' area DataEntryR. Attenzione, presume che tutte le celle di una colonna dell' area DataEntryR abbiano lo stesso colore.
L' evento SelectionChange e' usato solo per selezionare il cursore sul nuovo indirizzo, secondo quanto digitato sulla tastiera (Enter, freccia a dx, etc).

Vedi se fa tutto quello che ti serve.
Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Formattazione condizionale.....

Postdi luigi99 » 29/08/08 12:05

Caro Anthony, mi piace il linguaggio che usi:
Worksheet_Change per intercettare qualsiasi cambiamento, e di fare il controllo con la funzione CountIf, ripetuta su ogni colonna dell' area DataEntryR. Attenzione, presume che tutte le celle di una colonna dell' area DataEntryR abbiano lo stesso colore.
Anche se per me è cinese!!! :neutral: :neutral: :D :D

Le mie macro non si discostano dalla registrazione di qualche serie di tasti premuti!!! :oops: :oops:
Un abbecedario del Visual Basic mi sarebbe stato utile? :idea: :?:

Comunque la nuova macro funziona con un solo intoppo: l'evento non si verifica se inserisco i dati nella prima riga dell'area selezionata.
L'area che ho creato è compresa tra le celle R2:V6 (quindi 5 colonne e 5 colori), ma se inserisco i dati nelle celle R2,S2,T2,U2,V2 l'evento non si verifica.

Tutto il resto dell'area funziona benissimo!!!

Ho cambiato
CC1 = Range(DataEntryR).Range("A1").Column
RR1 = Range(DataEntryR).Range("A1").Row
in
CC1 = Range(DataEntryR).Range("M1").Column
RR1 = Range(DataEntryR).Range("M1").Row
pensando si riferisse all'area da colorare e che nel mio foglio è riferibile alla conna M, ma a quel punto la macro non funziona più.....
Al limite posso aggiungere una linea arrivando a V7 ed nascondere la prima riga che non funziona.......
o hai la soluzione?
Ciao e buon appetito ;)
ex Autodidatta, ma ancora in cerca di grane con il computer
luigi99
Utente Senior
 
Post: 563
Iscritto il: 21/11/01 01:00
Località: Vigliano Biellese

Re: Formattazione condizionale.....

Postdi Anthony47 » 29/08/08 19:03

Ooppsss...
usa questa al posto di quella che ti ho dato:
Codice: Seleziona tutto
If Application.WorksheetFunction.CountIf(Range(DataEntryR).Range(Cells(1, I), Cells(RRC, I)), Cella.Value) > 0 Then

E puoi cancellare questa:
Range(DataEntryR).Range(Cells(RR1, I), Cells(RR1 + RRC - 1, I)).Select
faceva parte del ciclo di debug; non fa danni ma e' inutile.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Formattazione condizionale.....

Postdi luigi99 » 29/08/08 20:38

:D :D :D
perfetto!!!!!!!
Ciao e alla prossima ;) ;)
Luigi
ex Autodidatta, ma ancora in cerca di grane con il computer
luigi99
Utente Senior
 
Post: 563
Iscritto il: 21/11/01 01:00
Località: Vigliano Biellese

Re: Formattazione condizionale.....

Postdi luigi99 » 30/08/08 01:46

ecco la prossima :( :( :(
Ho appena finito di impostare tutte le macro nei relativi fogli 8) 8) , ma, c'è sempre una ma.....anzi due :mmmh: :mmmh:
uno dei fogli non vuol saperne di accettare la macro :-? :-?
eppure ho seguito per tutti la stessa strada.
Non ho allarmi di sorta, ma quando la macro deve agire ho un effetto sul foglio come se ci fosse un aggiornamento della pagina....non so se mi spiego....e la casella relativa non si colora :o :o

L'altro intoppo è relativo alla struttura dei fogli.
Il foglio di lavoro è composto da una parte fissa e una parte che scorre sotto dove vengono aggiunte righe ogni volta che serve, e qui mi capita un'altra cosa: quando premo ctrl+y per ripetere aggiungi righe, il comando non viene eseguito e la riga su cui sono posizionato diventa bianca o, se in R2:X13 c'è una terzina assume il colore dello sfondo della cella che contiene la terzina.
Devo eliminare la macro, aggiungere le righe e poi rimettere la macro!!!oppure usare il mouse e aggiungi :neutral: :neutral:
Si può ovviare all'inconveniente??
Scusa ancora se rompo :oops: :oops:
Buonanotte.
Luigi
ex Autodidatta, ma ancora in cerca di grane con il computer
luigi99
Utente Senior
 
Post: 563
Iscritto il: 21/11/01 01:00
Località: Vigliano Biellese

Re: Formattazione condizionale.....

Postdi Anthony47 » 30/08/08 12:00

Dovendo fare lo stesso lavoro su piu' fogli hai replicato le macro sui vari "moduli di foglio", correggendo dove necessario le definizioni di DataEntryR e CheckR; ma funziona su tutti meno che su un foglio? Giusto?
Da quello che descrivi, soprattutto la sensazione che il foglio si aggiorni senza pero' modificarsi, le mie ipotesi preferite sono che non hai applicato il colore alla prima riga delle colonne appartenenti a DataEntryR (nota1), oppure che una delle colonne di DataEntryR e' "bianca" e questa colonna contiene (anche lei) il dato che non si colora.
Nota1: il colore infatti viene copiato dalla prima cella utile della singola colonna (la prima riga della definizione DataEntryR), da cui il warning che avevo dato: "presume che tutte le celle di una colonna dell' area DataEntryR abbiano lo stesso colore"

Se non ti si accende subito una lucina fai questa prova:
-carica un nuovo valore in una cella di CheckR, e applicagli un colore
-carica poi lo stesso valore in una cella di DataEntryR e vedi se e come cambia il colore in CheckR

Vorrei anche sapere se durante le prove hai mai avuto errori di macro in cui hai deciso di "terminare" la macro senza farla eseguire completamente; se hai questo sospetto:
-dal foglio che non funziona, tasto dx sul nome foglio, scegli Visualizza codice;
-dall' editor del vba premi Contr-g; ti si aprira' un frame titolato "immediata"
-vai in coda alle cose visualizzate, e sulla prima riga libera scrivri Application.EnableEvents = True e digiti Enter.
-torna sul foglio excel e prova.

Fai sapere come evolve, ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Formattazione condizionale.....

Postdi luigi99 » 01/09/08 10:31

dopo lunghe ed estenuanti prove :eeh: :eeh: seguendo le tue indicazioni sono giunto alla soluzione del problema :D :D
Peccato che il problema non fosse riferibile a macro o altre cose, ma a una mia svista 8) 8)
Infatti chissà perchè in quel foglio lì la colonna dei dati da cambiare non erano in M ma in L, e con tutte le ore che ci ho passato non me ne sono mai accorto!!!!! Cambiato il riferimento CheckR da M1:M200 in L1:L200 la macro ha fatto il suo dovere :D :D :D
Ora mi resta il problema in Aggiungi righe che non vuol saperne di funzionare!!!!
(anche aggiungi Colonne non funziona :cry: :cry: )
Al limite le aggiungerò manualmente :neutral:
Ciao.
Luigi
ex Autodidatta, ma ancora in cerca di grane con il computer
luigi99
Utente Senior
 
Post: 563
Iscritto il: 21/11/01 01:00
Località: Vigliano Biellese

Re: Formattazione condizionale.....

Postdi Anthony47 » 01/09/08 14:50

Bene...
Per il problema del Contr-y, semplicemente l' esecuzione della macro (appena cambia la selezione) rende inutilizzabile il "ripeti". Devi quindi ripetere il comando.
Se inserisci righe all' interno degli intervalli che abbiamo chiamato DataEntryR e CheckR, allora io suggerisco di assegnare in ogni foglio dei "nomi" a questi intervalli, e poi nella macro usare questi nomi invece dei valori definiti tramite le due variabili; altrimenti devi modificare il vba a ogni inserimento riga.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Formattazione condizionale.....

Postdi luigi99 » 01/09/08 23:08

L'inserimento delle righe interessa l'intervallo CheckR.
Cambiare CheckR da M1:M200 a Nome ci arrivo (sempre che sia giusto ;) ), ma come faccio a dare il Nome alla colonna?
Ho provato a dare come intestazione Nome alla colonna sia all'inizio del foglio (parte fissa), sia alla prima riga che scorre, ma dopo aver cliccato Inserisci riga ottengo:
Errore di Run-Time - 1004
Metodo Range dell'oggetto_worksheet non riuscito
Quindi vuol dire che non ho capito cosa fare :oops: :oops:
Ciao.
Luigi
ex Autodidatta, ma ancora in cerca di grane con il computer
luigi99
Utente Senior
 
Post: 563
Iscritto il: 21/11/01 01:00
Località: Vigliano Biellese

Re: Formattazione condizionale.....

Postdi Anthony47 » 01/09/08 23:34

Si, credo di aver capito :D
In ogni foglio devi assegnare un nome diverso al range che ti interessa, tramite Menu /Inserisci /Nome /Definisci (o tramite la "casella nome"; se hai bisogno di dettagli prova a chiedere); per semplicita' diciamo che li chiami Check1 su Foglio1, Check2 su Foglio2, etc.
A quel punto nella macro cambierai questa CheckR = "A1:A100" '<<< Area in cui va cambiato il colore
in questa:
Codice: Seleziona tutto
CheckR = Range("Check1").Address      '<<< su Foglio1; ovviamente Check2 su Foglio2 e cosi' via...


Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Formattazione condizionale.....

Postdi luigi99 » 02/09/08 10:14

Anthony, se non ci fossi bisognerebbe inventarti :D :D :D
Tutto perfetto 8) 8)
Ciao.
Luig....e alla prossima ;) ;)
ex Autodidatta, ma ancora in cerca di grane con il computer
luigi99
Utente Senior
 
Post: 563
Iscritto il: 21/11/01 01:00
Località: Vigliano Biellese

Re: Formattazione condizionale.....

Postdi luigi99 » 25/05/09 11:34

Anthony47 ha scritto:Bene...
Per il problema del Contr-y, semplicemente l' esecuzione della macro (appena cambia la selezione) rende inutilizzabile il "ripeti". Devi quindi ripetere il comando.
Se inserisci righe all' interno degli intervalli che abbiamo chiamato DataEntryR e CheckR, allora io suggerisco di assegnare in ogni foglio dei "nomi" a questi intervalli, e poi nella macro usare questi nomi invece dei valori definiti tramite le due variabili; altrimenti devi modificare il vba a ogni inserimento riga.

Ciao.

ciao Anthony, rispolvero il topic per aggiornare il problema :D :D
l'altro giorno ho avuto un lampo di genio (sic):) :) :)
dovevo aggiungere delle linee al foglio e mi è venuto in mente di provare a creare una macro che effettuasse ciò: l'ho registrata e funzionaaaaaa...ora basta che clicchi ctrl+a e le linee si aggiungono :) :) :) :)
Saluti
Luigi
ex Autodidatta, ma ancora in cerca di grane con il computer
luigi99
Utente Senior
 
Post: 563
Iscritto il: 21/11/01 01:00
Località: Vigliano Biellese


Torna a Applicazioni Office Windows


Topic correlati a "Formattazione condizionale.....":


Chi c’è in linea

Visitano il forum: Marius44 e 46 ospiti