Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Codice vba che colora le celle a seconda della lettera inserita

938 views
Skip to first unread message

tartaruga....@gmail.com

unread,
Dec 1, 2009, 11:25:39 AM12/1/09
to
Ciao ragazzi,
dopo aver provato la comodissima soluzione da voi proposta per il mio
precedente problema vorrei ora fare un passo avanti sempre nello
stesso foglio di lavoro.

Ho sempre lo stesso foglio "Settore A" in cui devo inserire dei
prodotti utilizzando
dei codici

Ogni cella del foglio all'interno di questo range : $F$6:$I$85
ospiterà un solo codice che può corrispondere ad una o più lettere
("A" "G" "VE" "SSL" ecc)
In un secondo foglio "carichi settoreA" verranno effettuati dei
calcoli che prevedono inizialmente un conteggio di quante celle per
ogni prodotto,all'interno del range $F$6:$I$85 del foglo "Settore A"
sono presenti.

Per farlo utilizzo ora questa formula
=COUNTIF('SETTORE A'!$F$6:$I$85;B1)
che va a leggere il codice dell'articolo direttamente in una cella
comodamente modificabile ogni volta che cambia la sigla dell'articolo
modificando in contemporanea anche la formula.

Le lettere che identificano un prodotto
A= XY
G=XX
ecc
spesso cambiano
AB=XY
FS=XX

Ora ogni prodotto come dicevo deve essere inserito in un range di
celle F6:i85 all'interno del foglio "settore a".
In ogni cella un codice (ossia un articolo) e ad ogni articolo
corrisponde una colorazione praticolare e automatica della cella in
cui viene inserito.

Gli articoli sono tanti per cui non è possibile utilizzare la
formattazione condizionale.
Ho infatti inserito un codice VBA (suggeritomi all'interno di questo
NG tempo fa) che fa questo automaticamente.
Ecco il codice:

Option Explicit
Option Compare Text

Private Sub Worksheet_Change(ByVal Target As Range)
Dim RNG As Range
Dim Rng2 As Range
Dim rCell As Range

Set RNG = Intersect(Me.Range("f6:i85"), Target)
Set Rng2 = Intersect(Me.Range("D6:D85"), Target)

If Not RNG Is Nothing Then
For Each rCell In RNG.Cells
With rCell
Select Case .Value
Case Is = "A"
.Interior.ColorIndex = 33
Case Is = "G"
.Interior.ColorIndex = 6
Case Is ="Ve"
.Interior.ColorIndex = 4

avanti così per ogni articolo

E' possibile dire al codice di colorare la cella in base ad una o più
lettere inserite nella cella B1?

Ho provato a sostituire la lettera "a" con l'indirizzo di cella B1 ma
così mi dà errore.
Immagino occorra modificare anche il resto del codice?

Potete aiutarmi?
Grazie ancora e comunque :-)


Scossa

unread,
Dec 1, 2009, 1:24:13 PM12/1/09
to
In article <3ac4b266-6824-44b1-8e79-
c585f0...@e27g2000yqd.googlegroups.com>,
tartaruga....@gmail.com says...

> Set RNG = Intersect(Me.Range("f6:i85"), Target)
> Set Rng2 = Intersect(Me.Range("D6:D85"), Target)
>
> If Not RNG Is Nothing Then
> For Each rCell In RNG.Cells

Non ho capito cosa devi fare, e soprattutto non ho capito
il ciclo FOR quale scopo abbia: RNG è un range costituito
da UNA sola cella, essendo l'intersezione tra LA cella
Target e il range "F6:I85".


Intanto modificherei così:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim RNG As Range
Dim Rng2 As Range
Dim rCell As Range

If Not Intersect(Target, Range("F6:I85")) Is Nothing Then

' quello che vuoi

' cut

Per un aiuto migliore posta TUTTO il codice o metti il file
su un server di sharing.

Fai sapere se hai risolto, grazie

Bye!
Scossa

Scossa

unread,
Dec 2, 2009, 2:14:18 AM12/2/09
to

Una precisazione, onde evitare "rimproveri":

>RNG è un range costituito
> da UNA sola cella, essendo l'intersezione tra LA cella
> Target e il range "F6:I85".
>

Target è "NORMALMENTE" un range di una sola cella, perche se - per
esempio - seleziono più celle, digito un valore e premo CTRL+Invio
Target è costituito dalle celle selezionate.

Bye!
Scossa

Mauro Gamberini

unread,
Dec 2, 2009, 5:08:17 AM12/2/09
to
Target � "NORMALMENTE" un range di una sola cella, perche se - per
esempio - seleziono pi� celle, digito un valore e premo CTRL+Invio
Target � costituito dalle celle selezionate.
********************************************

Target � un riferimento *alle celle* modificate.
Sempre.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim c As Range
For Each c In Target
MsgBox c.Address
Next
Set c = Nothing
End Sub

--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/officeit/threads


Scossa

unread,
Dec 2, 2009, 5:52:32 AM12/2/09
to
On 2 Dic, 11:08, "Mauro Gamberini"
<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
>
> Target è un riferimento *alle celle* modificate.
> Sempre.
>

Scusa Mauro, questo lo so, ma con "Normalmente" intendo dire che se mi
posiziono in A5 scrivo Pippo e premo invio Target è la cella A5; per
cui nel contesto dell'OP (inserisce qualcosa in una cella e preme
invio):

For Each rCell In RNG.Cells

non mi pare abbia molto senso.
Poi avrò capito male le sue necessità ....

Bye!
Scossa

Mauro Gamberini

unread,
Dec 2, 2009, 7:43:05 AM12/2/09
to
Scusa Mauro, questo lo so, ma con "Normalmente" intendo dire che se mi
posiziono in A5 scrivo Pippo e premo invio Target � la cella A5; per

cui nel contesto dell'OP (inserisce qualcosa in una cella e preme
invio):

For Each rCell In RNG.Cells

non mi pare abbia molto senso.

Poi avr� capito male le sue necessit� ....
*****************************

Target rappresenta un riferimento
all'oggetto di tipo Range modificato.
E' il *normalmente* che mi suona
strano.

Il problema dell'OP e il resto del
thread non l'ho seguito.
Mi fido delle risposte che dai tu.

Scossa

unread,
Dec 2, 2009, 11:39:39 AM12/2/09
to
On 2 Dic, 13:43, "Mauro Gamberini"

<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
>
> Target rappresenta un riferimento
> all'oggetto di tipo Range modificato.
> E' il *normalmente* che mi suona
> strano.

"Normalmente" = per quello che ho visto in giro l'utente medio scrive
in una cella alla volta, la selezione estesa mette paura :-))

> Mi fido delle risposte che dai tu.

Grazie! molto onorato!! :-)

Bye!
Scossa

Mauro Gamberini

unread,
Dec 2, 2009, 12:01:48 PM12/2/09
to
> "Normalmente" = per quello che ho visto in giro l'utente medio scrive
> in una cella alla volta, la selezione estesa mette paura :-))
>

Nel 99% dei casi quando si cancella
il contenuto. E molte volte si solleva
l'eccezione.

Scossa

unread,
Dec 2, 2009, 1:03:19 PM12/2/09
to
In article <u#J2nE3cK...@TK2MSFTNGP06.phx.gbl>,
maurogsc...@RIMUOVEREaliceposta.it says...

>
> Nel 99% dei casi quando si cancella
> il contenuto. E molte volte si solleva
> l'eccezione.

Giusto, la cancllazione non l'avevo considerata.

Acc! maledetto NICK CARTER, anche questa volta l'hai vinta
tu! :-)))

--
Bye!
Scossa

Mauro Gamberini

unread,
Dec 2, 2009, 1:09:34 PM12/2/09
to
>> Nel 99% dei casi quando si cancella
>> il contenuto. E molte volte si solleva
>> l'eccezione.
>
> Giusto, la cancllazione non l'avevo considerata.
>

Un'idea(solo un'idea):

dim c as range
if target.cells.count = 1 Then
'codice
else
for each c in target
'codice
next
end if
set c = nothing

tartaruga....@gmail.com

unread,
Dec 3, 2009, 11:36:36 AM12/3/09
to
On 2 Dic, 19:09, "Mauro Gamberini"

Come sempre i tempi della tartaruga sono quelli che sono...

Grazie per le risposte, appena ho un attimo di tempo provo e vi
faccio sapere.
Comunque tutto il codice è questo sotto e funziona perfettamente:

Option Explicit
Option Compare Text

Private Sub Worksheet_Change(ByVal Target As Range)


Dim RNG As Range
Dim Rng2 As Range
Dim rCell As Range

Set RNG = Intersect(Me.Range("F6:I85"), Target)


Set Rng2 = Intersect(Me.Range("D6:D85"), Target)

If Not RNG Is Nothing Then

For Each rCell In RNG.Cells

With rCell
Select Case .Value
Case Is = "A"
.Interior.ColorIndex = 33
Case Is = "G"
.Interior.ColorIndex = 6

Case Is = "VE"
.Interior.ColorIndex = 4
Case Is = "Viola"
.Interior.ColorIndex = 7
Case Is = "sps"
.Interior.ColorIndex = 34
Case Is = "spm"
.Interior.ColorIndex = 34
Case Is = "spl"
.Interior.ColorIndex = 34
Case Is = "sss"
.Interior.ColorIndex = 35
Case Is = "ssm"
.Interior.ColorIndex = 35
Case Is = "ssl"
.Interior.ColorIndex = 35
Case Is = "FPs"
.Interior.ColorIndex = 8
Case Is = "FPm"
.Interior.ColorIndex = 8
Case Is = "FPl"
.Interior.ColorIndex = 8
Case Is = "FPxl"
.Interior.ColorIndex = 8
Case Is = "FSs"
.Interior.ColorIndex = 10
Case Is = "FSm"
.Interior.ColorIndex = 10
Case Is = "FSl"
.Interior.ColorIndex = 10
Case Is = "FSxl"
.Interior.ColorIndex = 10
Case Is = "FMs"
.Interior.ColorIndex = 38
Case Is = "FMm"
.Interior.ColorIndex = 38
Case Is = "FMl"
.Interior.ColorIndex = 38
Case Is = "FMXL"
.Interior.ColorIndex = 38
Case Is = "sms"
.Interior.ColorIndex = 38
Case Is = "smm"
.Interior.ColorIndex = 38
Case Is = "sml"
.Interior.ColorIndex = 38
Case Else
.Interior.ColorIndex = xlNone
End Select
End With
Next rCell
End If

End Sub

Grazie ancora, provo al più presto!

tartaruga....@gmail.com

unread,
Dec 4, 2009, 1:42:00 PM12/4/09
to
On Dec 3, 5:36 pm, "tartaruga.tecnolog...@gmail.com"

<tartaruga.tecnolog...@gmail.com> wrote:
> On 2 Dic, 19:09, "Mauro Gamberini"
>
>
>
> <maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> > >> Nel 99% dei casi quando si cancella
> > >> il contenuto. E molte volte si solleva
> > >> l'eccezione.
>
> > > Giusto, la cancllazione non l'avevo considerata.
>
> > Un'idea(solo un'idea):
>
> > dim c as range
> > if target.cells.count = 1 Then
> >     'codice
> > else
> >     for each c in target
> >         'codice
> >     next
> > end if
> > set c = nothing
>
> > --
> > ---------------------------
> > Mauro Gamberinihttp://www.riolab.org/http://www.maurogsc.eu/http://social.microsoft....

Scusate ,
volevo provare ad inserire il codice ma mi sono accorta di non capire
bene come devo fare e soprattutto dove lo scrivo il numero
appartenente al colore?
Oppure quello che avete messo è solo il codice preliminare ?!?
Se poteste spegarmi in modo più chiaro,please?!?!
Grazie mille

Scossa

unread,
Dec 5, 2009, 7:16:45 AM12/5/09
to
In article <4d9f34ce-6ae3-44f4-8666-f36447ceac87
@j11g2000vbi.googlegroups.com>,
tartaruga....@gmail.com says...

> Comunque tutto il codice è questo sotto e funziona perfettamente:
>
> Option Explicit
> Option Compare Text
>
> Private Sub Worksheet_Change(ByVal Target As Range)
> Dim RNG As Range
> Dim Rng2 As Range
> Dim rCell As Range
>
> Set RNG = Intersect(Me.Range("F6:I85"), Target)
> Set Rng2 = Intersect(Me.Range("D6:D85"), Target)
>
> If Not RNG Is Nothing Then
> For Each rCell In RNG.Cells
> With rCell
> Select Case .Value

... mega cut

Il tutto semplificabile così:

'----------------------


Private Sub Worksheet_Change(ByVal Target As Range)

Dim rCell As Range

If Not Intersect(Me.Range("F6:I85"), Target) Is Nothing
Then


For Each rCell In Target


With rCell
Select Case .Value
Case Is = "A"
.Interior.ColorIndex = 33
Case Is = "G"
.Interior.ColorIndex = 6
Case Is = "VE"
.Interior.ColorIndex = 4
Case Is = "Viola"
.Interior.ColorIndex = 7

Case Is = "sps", "spm", "spl"
.Interior.ColorIndex = 34
Case Is = "sss", "ssm", "ss1"
.Interior.ColorIndex = 35
Case Is = "FPs", "FPm", "FP1", "FPxl"
.Interior.ColorIndex = 8
Case Is = "FSs", "FSm", "FSl", "FSx1"
.Interior.ColorIndex = 10
Case Is = "FMs", "FMm", "FMl", "FMXL", _
"sms", "smm", "sml"


.Interior.ColorIndex = 38
Case Else
.Interior.ColorIndex = xlNone
End Select
End With
Next rCell
End If

End Sub
'--------------------

Però continuo a non capire l'utilità del ciclo for, vedi
risposta al tuo successivo post.

Bye!
Scossa

Scossa

unread,
Dec 5, 2009, 7:16:56 AM12/5/09
to
In article <71f54166-1f17-4fe2-85f5-
643f22...@v25g2000yqk.googlegroups.com>,
tartaruga....@gmail.com says...

> Scusate ,
> volevo provare ad inserire il codice ma mi sono accorta di non capire
> bene come devo fare e soprattutto dove lo scrivo il numero
> appartenente al colore?
> Oppure quello che avete messo è solo il codice preliminare ?!?
> Se poteste spegarmi in modo più chiaro,please?!?!
> Grazie mille
>


Questo il codice che userei io:

'--------------------


Option Explicit
Option Compare Text


Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Me.Range("F6:I85"), Target) Is Nothing
Then
With Target
Select Case .Cells(1, 1).Value


Case Is = "A"
.Interior.ColorIndex = 33
Case Is = "G"
.Interior.ColorIndex = 6
Case Is = "VE"
.Interior.ColorIndex = 4
Case Is = "Viola"
.Interior.ColorIndex = 7

Case Is = "sps", "spm", "spl"
.Interior.ColorIndex = 34
Case Is = "sss", "ssm", "ss1"
.Interior.ColorIndex = 35
Case Is = "FPs", "FPm", "FP1", "FPxl"
.Interior.ColorIndex = 8


Case Is = "FSs", "FSm", "FSl", "FSx1"

.Interior.ColorIndex = 10


Case Is = "FMs", "FMm", "FMl", "FMXL", _

"sms", "smm", "sml"


.Interior.ColorIndex = 38
Case Else
.Interior.ColorIndex = xlNone
End Select
End With

End If
End Sub
'--------------------


Come vedi non c'è bisogno di nessun ciclo FOR, in quanto
anche se selezioni più celle, per esempio per cancellarle o
per scrivere in esse un valore, assumeranno tutte lo stesso
valore di Target.cells(1,1) e seguiranno lo stesso suo
"destino".

Fai sapere se hai risolto, grazie.

--
Bye!
Scossa

plinius

unread,
Dec 5, 2009, 10:54:37 AM12/5/09
to

"Scossa" <Inv...@tiscali.it> ha scritto nel messaggio
news:MPG.25846da16...@news.individual.net...

In article <71f54166-1f17-4fe2-85f5-
643f22...@v25g2000yqk.googlegroups.com>,
tartaruga....@gmail.com says...


Come vedi non c'� bisogno di nessun ciclo FOR, in quanto
anche se selezioni pi� celle, per esempio per cancellarle o


per scrivere in esse un valore, assumeranno tutte lo stesso
valore di Target.cells(1,1) e seguiranno lo stesso suo
"destino".

Fai sapere se hai risolto, grazie.

--
Bye!
Scossa


****************
Risp. per scossa
****************
L'iterazione mi pare indispensabile in quanto, se l'operatore copiasse da
qualche parte e incollasse(per esempio in F5:F10) un blocco di codici
diversi, questa routine attribuirebbe all'intero range "Target" il colore
corrispondente alla prima cella.
Se in F5 c'� "G" tutte le celle da F5 a F10 sono colorate col colore 6,
ancorch� F6, F7, F8, F9 e F10 contengano altri codici.
Mi sbaglio?
Ciao, E.


Scossa

unread,
Dec 5, 2009, 11:13:45 AM12/5/09
to
In article <1nvSm.104238$9f6.1...@twister1.libero.it>,
punto....@libero.it says...

> L'iterazione mi pare indispensabile in quanto, se l'operatore copiasse da
> qualche parte e incollasse(per esempio in F5:F10) un blocco di codici
> diversi, questa routine attribuirebbe all'intero range "Target" il colore
> corrispondente alla prima cella.

> Se in F5 c'è "G" tutte le celle da F5 a F10 sono colorate col colore 6,
> ancorché F6, F7, F8, F9 e F10 contengano altri codici.
> Mi sbaglio?

No, hai perfettamente ragione, sono io che comincio sempre
- se non diversamente richiesto - pensando alle cose
semplici.


Bye!
Scossa

plinius

unread,
Dec 5, 2009, 1:23:36 PM12/5/09
to

<tartaruga....@gmail.com> ha scritto nel messaggio
news:71f54166-1f17-4fe2...@v25g2000yqk.googlegroups.com...

> Oppure quello che avete messo � solo il codice preliminare ?!?
> Se poteste spegarmi in modo pi� chiaro,please?!?!
> Grazie mille

Mi piacerebbe molto vedere questo file per capirci qualcosa di pi�.
Perch� - modificati i dati riservati - non ne fai l'upload in un sito di
hosting e ci dai il link?
Potremmo esserti moooolto pi� utili, con meno fatica...

Ciao,
E.


tartaruga....@gmail.com

unread,
Dec 6, 2009, 4:30:03 AM12/6/09
to
On 5 Dic, 19:23, "plinius" <punto.lin...@libero.it> wrote:
> <tartaruga.tecnolog...@gmail.com> ha scritto nel messaggionews:71f54166-1f17-4fe2...@v25g2000yqk.googlegroups.com...

> On Dec 3, 5:36 pm, "tartaruga.tecnolog...@gmail.com"
>
> <tartaruga.tecnolog...@gmail.com> wrote:
> > Scusate ,
> > volevo provare ad inserire il codice ma mi sono accorta di non capire
> > bene come devo fare e soprattutto dove lo scrivo il numero
> > appartenente al colore?
> > Oppure quello che avete messo è solo il codice preliminare ?!?
> > Se poteste spegarmi in modo più chiaro,please?!?!
> > Grazie mille
>
> Mi piacerebbe molto vedere questo file per capirci qualcosa di più.
> Perché - modificati i dati riservati - non ne fai l'upload in un sito di

> hosting e ci dai il link?
> Potremmo esserti moooolto più utili, con meno fatica...
>
> Ciao,
> E.

Ok stasera carico e poi vi do il link :-)
grazie ragazzi

tartaruga....@gmail.com

unread,
Dec 21, 2009, 10:24:11 AM12/21/09
to
On Dec 6, 10:30 am, "tartaruga.tecnolog...@gmail.com"

Ecco ragazzi, siccome sono bloccata in casa dalla neve ho potutto
caricare il file on line.
Il link al mio foglio excel su cui avrei bisogno della modifica è
questo
http://dl.dropbox.com/u/3616706/Copy%20of%20LISTAin1.9.1.xls

va bene così o devo darvi altre informazioni?

Intanto grazie :-)

plinius

unread,
Dec 21, 2009, 2:10:09 PM12/21/09
to

<tartaruga....@gmail.com> ha scritto nel messaggio
news:6cc0d16b-76d2-46e6...@j4g2000yqe.googlegroups.com...

On Dec 6, 10:30 am, "tartaruga.tecnolog...@gmail.com"
<tartaruga.tecnolog...@gmail.com> wrote:
> On 5 Dic, 19:23, "plinius" <punto.lin...@libero.it> wrote:
>
>
>
> > <tartaruga.tecnolog...@gmail.com> ha scritto nel
> > messaggionews:71f54166-1f17-4fe2...@v25g2000yqk.googlegroups.com...
> > On Dec 3, 5:36 pm, "tartaruga.tecnolog...@gmail.com"
>
> > <tartaruga.tecnolog...@gmail.com> wrote:
> > > Scusate ,
> > > volevo provare ad inserire il codice ma mi sono accorta di non capire
> > > bene come devo fare e soprattutto dove lo scrivo il numero
> > > appartenente al colore?
> > > Oppure quello che avete messo � solo il codice preliminare ?!?
> > > Se poteste spegarmi in modo pi� chiaro,please?!?!
> > > Grazie mille
>
> > Mi piacerebbe molto vedere questo file per capirci qualcosa di pi�.
> > Perch� - modificati i dati riservati - non ne fai l'upload in un sito di

> > hosting e ci dai il link?
> > Potremmo esserti moooolto pi� utili, con meno fatica...

>
> > Ciao,
> > E.
>
> Ok stasera carico e poi vi do il link :-)
> grazie ragazzi

Ecco ragazzi, siccome sono bloccata in casa dalla neve ho potutto
caricare il file on line.

Il link al mio foglio excel su cui avrei bisogno della modifica �
questo
http://dl.dropbox.com/u/3616706/Copy%20of%20LISTAin1.9.1.xls

va bene cos� o devo darvi altre informazioni?

Intanto grazie :-)

*********
Risp
*********

Ho scaricato il file e c'� un sacco di roba che, non sapendo cosa debba
fare, non ho proprio guardato.
Ho cancellato tutti i fogli lasciando solo "NUCLEO A", "CARICHI NUCLEO A" e
"legenda" per inserire il codice che nel foglio "NUCLEO A" colora le celle
in base al codice di prodotto inserito, copiandolo da quello della tabella
posta in "legenda".
Questa � la routine (posta nel modulo di "NUCLEO A"):
-------------------


Private Sub Worksheet_Change(ByVal Target As Range)

Dim rng As Range, Leg As Range, c1 As Range, c2 As Range
Set rng = Intersect(Me.Range("F6:I85"), Target)
If rng Is Nothing Then Exit Sub
Set Leg = ThisWorkbook.Worksheets("legenda").Range("B5")
Set Leg = Leg.Resize(Leg.End(xlDown).Row - Leg.Row + 1)
For Each c1 In rng.Cells
For Each c2 In Leg
If c1.Value = c2.Value Then
c1.Interior.ColorIndex = c2.Interior.ColorIndex
Exit For
Else
c1.Interior.ColorIndex = xlColorIndexNone
End If
Next c2
Next c1
End Sub
-------------------
e questo � il file

http://www.4shared.com/file/178195301/7e673c04/Tartaruga.html

Quando modifichi la tabella posta in "legenda" e inserisci nuovi prodotti,
colorali nel colore che ti pare.
I successivi inserimenti in "NUCLEO A" assumeranno automaticamente lo stesso
colore.
Almeno se ho capito quello che ti interessa...

Ciao,
E.

tartaruga....@gmail.com

unread,
Jan 5, 2010, 5:28:01 AM1/5/10
to
On 21 Dic 2009, 20:10, "plinius" <punto.lin...@libero.it> wrote:
> <tartaruga.tecnolog...@gmail.com> ha scritto nel messaggionews:6cc0d16b-76d2-46e6...@j4g2000yqe.googlegroups.com...
> questohttp://dl.dropbox.com/u/3616706/Copy%20of%20LISTAin1.9.1.xls

Ciao E,
non mi ero accorta della tua risposta.
Vado a verificare e intanto comunque ti ringrazio.
Ti faccio sapere
:-)

tartaruga....@gmail.com

unread,
Feb 23, 2010, 10:33:18 AM2/23/10
to
On 5 Gen, 11:28, "tartaruga.tecnolog...@gmail.com"
Finalmente dopo tanto tempo sono riuscita a verificare la routine che
mi hai così gentilmente fornito.
Purtroppo funziona bene con lettere singole (A oppure G ecc) ma se
come codice prodotto inserisco più di una lettera (AS oppure VL) non
mi colora la cella con il colore presente nel foglio legenda.

Forse la routine ammette solo una lettera come codice?

grazie ancora e scusate i tempi ...lunghi!

plinius

unread,
Feb 23, 2010, 10:43:54 AM2/23/10
to

<tartaruga....@gmail.com> ha scritto nel messaggio
news:255696e2-1b66-43ee...@x9g2000vbo.googlegroups.com...

Finalmente dopo tanto tempo sono riuscita a verificare la routine che
mi hai cos� gentilmente fornito.


Purtroppo funziona bene con lettere singole (A oppure G ecc) ma se

come codice prodotto inserisco pi� di una lettera (AS oppure VL) non


mi colora la cella con il colore presente nel foglio legenda.

Forse la routine ammette solo una lettera come codice?

grazie ancora e scusate i tempi ...lunghi!

***************

Non capisco quel che dici.
Nel file che hai scaricato ci sono codici di esempio di tutte le lunghezze.
Eccoli:
A
G
VE
VIOLA
LN
LE
LS
FM1
FM2
As
AM
AL
SSS
SSM
SSL
SMS
SMM

... li trovi gi� colorati e, se li cambi, funzionano!
Forse dovresti spiegarti meglio...
Ciao,
E.


Mauro Gamberini

unread,
Feb 23, 2010, 10:52:59 AM2/23/10
to
<cut>

Ciao Plinius.
La butto l�, vedo solo questo codice.
As e AS sono diversi. Come li avr� scritti
l'OP?

--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads

__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 4890 (20100223) __________

Il messaggio � stato controllato da ESET NOD32 Antivirus.

www.nod32.it


Mauro Gamberini

unread,
Feb 23, 2010, 10:56:27 AM2/23/10
to
<cut>

Partito un colpo....
... voleva essere:

If UCase(c1.Value) = UCase(c2.Value) Then

non sarebbe meglio?

plinius

unread,
Feb 23, 2010, 12:02:51 PM2/23/10
to

"Mauro Gamberini" <maurogsc...@RIMUOVEREaliceposta.it> ha scritto nel
messaggio news:hm0tsd$q4v$1...@news.eternal-september.org...


Non � chiaro quale sia il tipo di confronto che le serve e, d'altra parte,
dovrebbe essere predefinito quello di tipo "testo".
Il problema che evidenzia sarebbe il mancato funzionamento con stringhe di
lunghezza superiore a 1... mah!
Forse in primavera ci dir� qualcosa, non disperiamo! :-))
Ciao,
E.


Mauro Gamberini

unread,
Feb 23, 2010, 12:09:19 PM2/23/10
to
> Forse in primavera ci dir� qualcosa, non disperiamo! :-))
>

LOL!

tartaruga....@gmail.com

unread,
Feb 24, 2010, 4:48:16 AM2/24/10
to
On 23 Feb, 16:56, "Mauro Gamberini"

<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> <cut>
>
> Partito un colpo....
> ... voleva essere:
>
> If UCase(c1.Value) = UCase(c2.Value) Then
>
> non sarebbe meglio?
>
> --
> ---------------------------
> Mauro Gamberini
> Microsoft MVP - Excelhttp://www.riolab.org/http://www.maurogsc.eu/http://social.microsoft.com/Forums/it-IT/excelit/threads

>
> __________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 4890 (20100223) __________
>
> Il messaggio stato controllato da ESET NOD32 Antivirus.
>
> www.nod32.it

Ciao ragazzi,
allora cerco di spiegarmi meglio :-)

Il nuovo script in VBA funziona perfettamente rispetto alle mie
esigenze cioè io cambio un codice, ad esempio nella cella C8 del
foglio "legenda" metto la sigla Z con sfondo della cella giallo e lui
colora la cella di un qualunque foglio all'interno del file in cui la
inserisco con il colore con cui è colorata la cella C8 del foglio
legenda. Se cambio il colore della cella C8 lasciando la sigla Z la
cella in cui metterò la Z si colora con il nuovo colore.Perfetto.
Vorrei che facesse sempre così.
Invece se inserisco codici con due lettere ad esempio in C9 metto
"As"o "aS" (non credo sia sensibile alle maiuscole ma non sarebbe un
problema) e lo sfondo della cella è azzurro, la cella in cui inserisco
la sigla As (o sue varianti) resta bianca mentre dovrebbe colorarsi di
azzurro.

Ho notato una cosa che prima non avevo osservato.
Nel foglio excel su cui avete provato il codice che era composto da un
solo foglio legenda ed un solo foglio in cui vengono inserite le celle
in realtà il codice funziona perfettamente sia con codici di una sola
lettera che di due o di tre. Io però devo usare il codice in un file
excel composto da più fogli che si ripetono ,anche se con nomi
diversi, e in quello il codice produce il problema che vi ho spiegato
sopra.

Il file excel è composto da varie sheet: settore A, carichi settore A,
settore B, carichi settore B, settore C, carichi settore C ecc, alla
fine c'è una sheet carichi generali su cui la "colorazione variabile"
non serve(è solo un foglio riepilogativo) e un unico foglio "legenda"
che vale per tutte le sheet.
Io ho copiato lo script Vba in ogni sheet Settore (A,B,C ecc) che è
poi dove vado a inserire i codici prodotti e dove mi serve la
colorazione ma, come dicevo,colora solamente se il codice è ad una
lettera.

Spero di essere stata più chiara.
Grazie ancora

plinius

unread,
Feb 24, 2010, 6:21:09 AM2/24/10
to

<tartaruga....@gmail.com> ha scritto nel messaggio
news:aff97064-9f6e-4750...@b30g2000yqd.googlegroups.com...

Ciao ragazzi,
allora cerco di spiegarmi meglio :-)

Il nuovo script in VBA funziona perfettamente rispetto alle mie

esigenze cio� io cambio un codice, ad esempio nella cella C8 del


foglio "legenda" metto la sigla Z con sfondo della cella giallo e lui
colora la cella di un qualunque foglio all'interno del file in cui la

inserisco con il colore con cui � colorata la cella C8 del foglio


legenda. Se cambio il colore della cella C8 lasciando la sigla Z la

cella in cui metter� la Z si colora con il nuovo colore.Perfetto.
Vorrei che facesse sempre cos�.


Invece se inserisco codici con due lettere ad esempio in C9 metto
"As"o "aS" (non credo sia sensibile alle maiuscole ma non sarebbe un

problema) e lo sfondo della cella � azzurro, la cella in cui inserisco


la sigla As (o sue varianti) resta bianca mentre dovrebbe colorarsi di
azzurro.

Ho notato una cosa che prima non avevo osservato.
Nel foglio excel su cui avete provato il codice che era composto da un
solo foglio legenda ed un solo foglio in cui vengono inserite le celle

in realt� il codice funziona perfettamente sia con codici di una sola
lettera che di due o di tre. Io per� devo usare il codice in un file
excel composto da pi� fogli che si ripetono ,anche se con nomi


diversi, e in quello il codice produce il problema che vi ho spiegato
sopra.

Il file excel � composto da varie sheet: settore A, carichi settore A,


settore B, carichi settore B, settore C, carichi settore C ecc, alla

fine c'� una sheet carichi generali su cui la "colorazione variabile"
non serve(� solo un foglio riepilogativo) e un unico foglio "legenda"


che vale per tutte le sheet.

Io ho copiato lo script Vba in ogni sheet Settore (A,B,C ecc) che �


poi dove vado a inserire i codici prodotti e dove mi serve la

colorazione ma, come dicevo,colora solamente se il codice � ad una
lettera.

Spero di essere stata pi� chiara.
Grazie ancora

********************
Ecco... ora dovrebbe essere chiaro!

La macro � questa:
-----------------
Option Compare Text


Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, Leg As Range, c1 As Range, c2 As Range
Set rng = Intersect(Me.Range("F6:I85"), Target)
If rng Is Nothing Then Exit Sub
Set Leg = ThisWorkbook.Worksheets("legenda").Range("B5")
Set Leg = Leg.Resize(Leg.End(xlDown).Row - Leg.Row + 1)
For Each c1 In rng.Cells
For Each c2 In Leg
If c1.Value = c2.Value Then
c1.Interior.ColorIndex = c2.Interior.ColorIndex
Exit For
Else
c1.Interior.ColorIndex = xlColorIndexNone
End If
Next c2
Next c1
End Sub

--------------------
e, come vedi, alla terza riga controlla se la cella modificata rientra tra
quelle che si vuole assoggettare alla colorazione.
Per il foglio "NUCLEO A" questa zona � individuata in F6:I85
Questo vuol dire che se scrivi "AS" fuori da quella zona non succede un bel
niente mentre, se � all'interno di essa, la cella si colora.
Dopo aver copiato la macro nei moduli di tutti i fogli in cui hai bisogno
della colorazione, modifica per ciascuno di essi la zona che ti interessa
cambiando questa riga:

Set rng = Intersect(Me.Range("F6:I85"), Target)

...indicando, foglio per foglio, le zone che ti interessano.
Ciao,
E.


tartaruga....@gmail.com

unread,
Feb 25, 2010, 11:46:24 AM2/25/10
to
On 24 Feb, 12:21, "plinius" <punto.lin...@libero.it> wrote:
> <tartaruga.tecnolog...@gmail.com> ha scritto nel messaggionews:aff97064-9f6e-4750...@b30g2000yqd.googlegroups.com...

> Ciao ragazzi,
> allora cerco di spiegarmi meglio :-)
>
> Il nuovo script in VBA funziona perfettamente rispetto alle mie
> esigenze cioè io cambio un codice, ad esempio nella cella C8 del

> foglio "legenda" metto la sigla Z con sfondo della cella giallo e lui
> colora la cella di un qualunque foglio all'interno del file in cui la
> inserisco con il colore con cui è colorata la cella C8 del foglio

> legenda. Se cambio il colore della cella C8 lasciando la sigla Z la
> cella in cui metterò la Z si colora con il nuovo colore.Perfetto.
> Vorrei che facesse sempre così.

> Invece se inserisco codici con due lettere ad esempio in C9 metto
> "As"o "aS" (non credo sia sensibile alle maiuscole ma non sarebbe un
> problema) e lo sfondo della cella è azzurro, la cella in cui inserisco

> la sigla As (o sue varianti) resta bianca mentre dovrebbe colorarsi di
> azzurro.
>
> Ho notato una cosa che prima non avevo osservato.
> Nel foglio excel su cui avete provato il codice che era composto da un
> solo foglio legenda ed un solo foglio in cui vengono inserite le celle
> in realtà il codice funziona perfettamente sia con codici di una sola
> lettera che di due o di tre. Io però devo usare il codice in un file
> excel composto da più fogli che si ripetono ,anche se con nomi

> diversi, e in quello il codice produce il problema che vi ho spiegato
> sopra.
>
> Il file excel è composto da varie sheet: settore A, carichi settore A,

> settore B, carichi settore B, settore C, carichi settore C ecc, alla
> fine c'è una sheet carichi generali su cui la "colorazione variabile"
> non serve(è solo un foglio riepilogativo) e un unico foglio "legenda"

> che vale per tutte le sheet.
> Io ho copiato lo script Vba in ogni sheet Settore (A,B,C ecc) che è

> poi dove vado a inserire i codici prodotti e dove mi serve la
> colorazione ma, come dicevo,colora solamente se il codice è ad una
> lettera.
>
> Spero di essere stata più chiara.

> Grazie ancora
>
> ********************
> Ecco... ora dovrebbe essere chiaro!
>
> La macro è questa:

> -----------------
> Option Compare Text
> Private Sub Worksheet_Change(ByVal Target As Range)
>    Dim rng As Range, Leg As Range, c1 As Range, c2 As Range
>    Set rng = Intersect(Me.Range("F6:I85"), Target)
>    If rng Is Nothing Then Exit Sub
>    Set Leg = ThisWorkbook.Worksheets("legenda").Range("B5")
>    Set Leg = Leg.Resize(Leg.End(xlDown).Row - Leg.Row + 1)
>    For Each c1 In rng.Cells
>       For Each c2 In Leg
>          If c1.Value = c2.Value Then
>             c1.Interior.ColorIndex = c2.Interior.ColorIndex
>             Exit For
>          Else
>             c1.Interior.ColorIndex = xlColorIndexNone
>          End If
>       Next c2
>    Next c1
> End Sub
> --------------------
> e, come vedi, alla terza riga controlla se la cella modificata rientra tra
> quelle che si vuole assoggettare alla colorazione.
> Per il foglio "NUCLEO A" questa zona è individuata in F6:I85

> Questo vuol dire che se scrivi "AS" fuori da quella zona non succede un bel
> niente mentre, se è all'interno di essa, la cella si colora.

> Dopo aver copiato la macro nei moduli di tutti i fogli in cui hai bisogno
> della colorazione, modifica per ciascuno di essi la zona che ti interessa
> cambiando questa riga:
>
> Set rng = Intersect(Me.Range("F6:I85"), Target)
>
> ...indicando, foglio per foglio, le zone che ti interessano.
> Ciao,
> E.

Ciao ragazzi, rispondo al volo.
So quale parte del codice definisce il range di celle su cui agisce il
codice stesso che però è uguale per ogni nucleo quindi copiando il
codice nella pagina di ogni nucleo dovrebbe funzionare (come funziona
nel foglio con un sigolo nucleo) invece no.
Proverò a cancellare e a ricopiarlo ma se mancasse qualche pezzo mi
uscirebbe la finestra di debug invece no, semplicemente non colora.
Comunque provo a rifare tutto....
non si sa mai.

As soon as possible (magari prima di primavera ;-))))

Grazie

tartaruga....@gmail.com

unread,
Mar 25, 2010, 2:47:30 AM3/25/10
to
On Feb 25, 5:46 pm, "tartaruga.tecnolog...@gmail.com"

Ciao a tutti,
finalmente ho avuto modo di provare il form in excel con il codice VBA
che mi avete dato.
Ora ho capito che cosa bloccava la colorazione delle celle.
Nel foglio "legenda" in cui il codice VBA andava a raccogliere le
informazioni per sapere colore e lettera da abbinare avevo lasciato
delle righe vuote che di fatto bloccavano la routine. per cui il
codice funzionava solamente con le righe a monte della riga vuota.
Elimando il "salto" il codice funziona perfettamente.
Grazie :-)

plinius

unread,
Mar 25, 2010, 7:39:57 AM3/25/10
to

<tartaruga....@gmail.com> ha scritto nel messaggio
news:bdb0316d-5a6a-4726...@f8g2000yqn.googlegroups.com...

****************

Bene, bene, ma...


"As soon as possible (magari prima di primavera ;-))))"

Obiettivo mancato di 4 giorni! :-))

Grazie del riscontro!
E. :-)


tartaruga....@gmail.com

unread,
Mar 26, 2010, 1:49:39 AM3/26/10
to
On 25 Mar, 12:39, "plinius" <punto.lin...@libero.it> wrote:
> <tartaruga.tecnolog...@gmail.com> ha scritto nel messaggionews:bdb0316d-5a6a-4726...@f8g2000yqn.googlegroups.com...

Accidenti ;-)

tartaruga....@gmail.com

unread,
Apr 9, 2010, 4:26:54 AM4/9/10
to
On 26 Mar, 07:49, "tartaruga.tecnolog...@gmail.com"

<tartaruga.tecnolog...@gmail.com> wrote:
> On 25 Mar, 12:39, "plinius" <punto.lin...@libero.it> wrote:
>
>
>
>
>
> > <tartaruga.tecnolog...@gmail.com> ha scritto nel messaggionews:bdb0316d-5a6a-4726...@f8g2000yqn.googlegroups.com...
> > On Feb 25, 5:46 pm, "tartaruga.tecnolog...@gmail.com"
>
> > <tartaruga.tecnolog...@gmail.com> wrote:
> > > On 24 Feb, 12:21, "plinius" <punto.lin...@libero.it> wrote:
>
> > > > <tartaruga.tecnolog...@gmail.com> ha scritto nel
> > > > messaggionews:aff97064-9f6e-4750...@b30g2000yqd.googlegroups.com...
> > > > Ciao ragazzi,
> > > > allora cerco di spiegarmi meglio :-)
>
> > > > Il nuovo script inVBAfunziona perfettamente rispetto alle mie

> > > > esigenze cioè io cambio un codice, ad esempio nella cella C8 del
> > > > foglio "legenda" metto la sigla Z con sfondo della cella giallo e lui
> > > > colora la cella di un qualunque foglio all'interno del file in cui la
> > > > inserisco con il colore con cui è colorata la cella C8 del foglio
> > > > legenda. Se cambio il colore della cella C8 lasciando la sigla Z la
> > > > cella in cui metterò la Z si colora con il nuovo colore.Perfetto.
> > > > Vorrei che facesse sempre così.
> > > > Invece se inserisco codici con due lettere ad esempio in C9 metto
> > > > "As"o "aS" (non credo sia sensibile alle maiuscole ma non sarebbe un
> > > > problema) e lo sfondo della cella è azzurro, la cella in cui inserisco
> > > > la sigla As (o sue varianti) resta bianca mentre dovrebbe colorarsi di
> > > > azzurro.
>
> > > > Ho notato una cosa che prima non avevo osservato.
> > > > Nel foglio excel su cui avete provato il codice che era composto da un
> > > > solo foglio legenda ed un solo foglio in cui vengono inserite le celle
> > > > in realtà il codice funziona perfettamente sia con codici di una sola
> > > > lettera che di due o di tre. Io però devo usare il codice in un file
> > > > excel composto da più fogli che si ripetono ,anche se con nomi
> > > > diversi, e in quello il codice produce il problema che vi ho spiegato
> > > > sopra.
>
> > > > Il file excel è composto da variesheet: settore A, carichi settore A,

> > > > settore B, carichi settore B, settore C, carichi settore C ecc, alla
> > > > fine c'è unasheetcarichi generali su cui la "colorazione variabile"

> > > > non serve(è solo un foglio riepilogativo) e un unico foglio "legenda"
> > > > che vale per tutte lesheet.
> > > > Io ho copiato lo scriptVbain ognisheetSettore (A,B,C ecc) che è
> > Nel foglio "legenda" in cui il codiceVBAandava a raccogliere le

> > informazioni per sapere colore e lettera da abbinare avevo lasciato
> > delle righe vuote che di fatto bloccavano la routine. per cui il
> > codice funzionava solamente con le righe a monte della riga vuota.
> > Elimando il "salto" il codice funziona perfettamente.
> > Grazie :-)
>
> > ****************
>
> > Bene, bene, ma...
> > "As soon as possible (magari prima di primavera ;-))))"
>
> > Obiettivo mancato di 4 giorni! :-))
>
> > Grazie del riscontro!
> > E. :-)
>
> Accidenti ;-)- Nascondi testo citato
>
> - Mostra testo citato -

Comunque funzia alla grande :-)

0 new messages