PDA

View Full Version : [Excel] Riempimento percentuale


-Ivan-
24-11-2007, 19:51
Scusate devo fare una cosa piuttosto banale con excel ma non ricordo proprio come si faccia.
In pratica io ho una casella con un valore percentuale e voglio che lo sfondo della casella venga colorato per una porzione che rappresenti quella percentuale così da avere anche un impatto visivo immediato.
Non ricordo come si faccia, se è un'opzione di riempimento ma in formato celle non c'è, oppure se è una clip art o qualche altra cosa, non la trovo da nessuna parte.

MarcoGG
24-11-2007, 21:54
Un buon metodo, migliore sicuramente del mero utilizzo dei menu prefabbricati di Excel, è questo ( tramite VBA, ovviamente ) :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If ActiveCell.Text = "" Then
Exit Sub
End If
Dim forma As Shape
For Each forma In ActiveCell.Worksheet.Shapes
forma.Delete
Next
Set forma = ActiveCell.Worksheet.Shapes.AddShape(msoShapeRectangle, ActiveCell.Left, ActiveCell.Top, ActiveCell.Width * ActiveCell.Value, ActiveCell.Height)
With forma
.Line.Visible = False
.Fill.Transparency = 0.7
.Fill.ForeColor.RGB = ThisWorkbook.Colors(4)
End With

End Sub

Da inserire nel codice di uno Sheet di prova che contenga vari valori percentuali...
Customizzabile in mille modi diversi, a seconda delle esigenze... ;)

-Ivan-
25-11-2007, 09:11
Un buon metodo, migliore sicuramente del mero utilizzo dei menu prefabbricati di Excel, è questo ( tramite VBA, ovviamente ) :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If ActiveCell.Text = "" Then
Exit Sub
End If
Dim forma As Shape
For Each forma In ActiveCell.Worksheet.Shapes
forma.Delete
Next
Set forma = ActiveCell.Worksheet.Shapes.AddShape(msoShapeRectangle, ActiveCell.Left, ActiveCell.Top, ActiveCell.Width * ActiveCell.Value, ActiveCell.Height)
With forma
.Line.Visible = False
.Fill.Transparency = 0.7
.Fill.ForeColor.RGB = ThisWorkbook.Colors(4)
End With

End Sub

Da inserire nel codice di uno Sheet di prova che contenga vari valori percentuali...
Customizzabile in mille modi diversi, a seconda delle esigenze... ;)

:mc: grazie del consiglio ma non conosco molto bene excel, lo uso giusto per tenere conto di un paio di cose e sinceramente non so cosa sia VBA e nemmeno dove infilare il codice:D , comunque adesso mi informo grazie del consiglio...vediamo di imparare qualcosa su excel.

MarcoGG
25-11-2007, 12:32
:mc: grazie del consiglio ma non conosco molto bene excel, lo uso giusto per tenere conto di un paio di cose e sinceramente non so cosa sia VBA e nemmeno dove infilare il codice:D , comunque adesso mi informo grazie del consiglio...vediamo di imparare qualcosa su excel.


1. Apri Excel / Nuovo Workbook.
2. Menu Strumenti / Macro / Visual Basic Editor
3. Nell' editor / Colonna A Sinistra / Doppio Click su "Foglio1".
4. Nella parte destra >> Incolla il mio codice.
5. Metti qualche valore stile-percentuale nelle celle che vuoi su Foglio1, e poi Cliccaci sopra per vedere il risultato... ;)

-Ivan-
25-11-2007, 16:16
1. Apri Excel / Nuovo Workbook.
2. Menu Strumenti / Macro / Visual Basic Editor
3. Nell' editor / Colonna A Sinistra / Doppio Click su "Foglio1".
4. Nella parte destra >> Incolla il mio codice.
5. Metti qualche valore stile-percentuale nelle celle che vuoi su Foglio1, e poi Cliccaci sopra per vedere il risultato... ;)

Ah ok grazie, solo che volevo che si vedesse sempre anche senza cliccarci sopra, forse è proprio una opzione di riempimento.
Comunque ho scoperto qualcosa di nuovo, non sapevo che in excel si potesse implementare del codice VB.

MarcoGG
26-11-2007, 08:37
Ah ok grazie, solo che volevo che si vedesse sempre anche senza cliccarci sopra, forse è proprio una opzione di riempimento.


Era solo un esempio, quello...
Non credo proprio si possa fare semplicemente da menu di Excel. Forse solo con Excel 2007. Dovrei provare...
In ogni caso, con VBA arrivi dove vuoi... Anche a fare QUESTO ( Excel 2003 :cool: ) :

http://aycu29.webshots.com/image/35068/2000358945727470555_rs.jpg (http://allyoucanupload.webshots.com/v/2000358945727470555)

Se sei interessato, posto anche il mio relativo codice... ;)


Comunque ho scoperto qualcosa di nuovo, non sapevo che in excel si potesse implementare del codice VB.


Se Excel non fosse programmabile, almeno per quanto mi riguarda, perderebbe oltre il 60% del suo valore...

-Ivan-
26-11-2007, 16:48
Però...interessante. Io avevo bisogno (bisogno è dir troppo, diciamo che mi piaceva farlo) di una cosa come quella nel file scaricabile dal link, ma non ho capito come poterla fare.

http://www.visioniasiatiche.it/BB/BBeco.rar

Grzie comunque delle risposte.

MarcoGG
27-11-2007, 08:35
http://aycu09.webshots.com/image/34128/2001619386320854368_rs.jpg (http://allyoucanupload.webshots.com/v/2001619386320854368)

;)

-Ivan-
27-11-2007, 13:28
http://aycu09.webshots.com/image/34128/2001619386320854368_rs.jpg (http://allyoucanupload.webshots.com/v/2001619386320854368)

;)

Si proprio quella, solo che dalle opzioni non mi sembra ci sia niente di impostato. Ho controllato diverse volte nel formato celle se c'era qualche opzione particolare ma non cambia niente dalle altre caselle. Forse è fatto proprio in VBA.

MarcoGG
27-11-2007, 13:48
Si proprio quella, solo che dalle opzioni non mi sembra ci sia niente di impostato. Ho controllato diverse volte nel formato celle se c'era qualche opzione particolare ma non cambia niente dalle altre caselle. Forse è fatto proprio in VBA.


Veramente quella che ho postato io è l'immagine del file .xls DOPO che ho aggiunto il mio codice VBA. Alla prima apertura il file secco, così come l'hai postato tu, non visualizzava nessuna formattazione per le celle percentuale.

Per quanto riguarda l'altro file ( .xlsx ) non l'ho visto proprio perchè al momento non ho Excel 2007...

-Ivan-
27-11-2007, 17:54
Veramente quella che ho postato io è l'immagine del file .xls DOPO che ho aggiunto il mio codice VBA. Alla prima apertura il file secco, così come l'hai postato tu, non visualizzava nessuna formattazione per le celle percentuale.

Per quanto riguarda l'altro file ( .xlsx ) non l'ho visto proprio perchè al momento non ho Excel 2007...

Ah, porca pupazza sono un po' rincoglionito oggi:D (oggi?:mbe: ).
Ma io avevo provato a mettere il codice solo che me la mostrava solo quando cliccavo sopra la cella mi pare, adesso ci riprovo che magari ho sbagliato qualcosa.

MarcoGG
27-11-2007, 17:56
Ah, porca pupazza sono un po' rincoglionito oggi:D (oggi?:mbe: ).
Ma io avevo provato a mettere il codice solo che me la mostrava solo quando cliccavo sopra la cella mi pare, adesso ci riprovo che magari ho sbagliato qualcosa.


Non prenderla come un'offesa... Ma... Forse un tantino rinco oggi lo sei...
Non l'ho ancora mai postato quel codice... :D

Vuoi quello nuovo ? :D

-Ivan-
27-11-2007, 18:55
Non prenderla come un'offesa... Ma... Forse un tantino rinco oggi lo sei...
Non l'ho ancora mai postato quel codice... :D

Vuoi quello nuovo ? :D

Ah ecco perchè:D , allora si dai:p .
Grazie mille per l'aiuto.

MarcoGG
28-11-2007, 08:49
Associa questo codice al foglio desiderato ( nel nostro caso "S3_Palazzetto" ) :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Text = "" Then
Exit Sub
End If
If Target.Value > 1 Or Target.Value <= 0 Then
Exit Sub
End If

For Each Target In Range("D3:H30")
If Target.Style = "Percent" Then
Dim forma As Shape
For Each forma In Target.Worksheet.Shapes
If forma.Name = Target.Address Then
forma.Delete
Exit For
End If
Next
Set forma = Target.Worksheet.Shapes.AddShape(msoShapeRectangle, Target.Left, Target.Top, Target.Width * Target.Value, Target.Height)
forma.Name = Target.Address
With forma
.Line.Visible = False
.Fill.Transparency = 0.6
.Fill.ForeColor.RGB = RGB(0, 255, 100)
End With
End If
Next

End Sub

Funziona su qualsiasi range di celle ( [ D3:H30 ] di default ).
Va lanciato "manualmente" solo la prima volta, basta che fai doppio-Click in una cella percentuale, e poi Invio.
Si auto-aggiorna ogni volta che modifichi un valore percentuale che rientra nel Range impostato... Meglio di così... ;)