Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

VBA per automatizzare processo di 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

VBA per automatizzare processo di Formattazione Condizionale

Postdi rossomike1966 » 08/02/16 10:22

Buongiorno a tutti,
ho questo file di excel
Codice: Seleziona tutto
[url]https://www.dropbox.com/s/jtd3zshqtuunznj/prova.xlsm?dl=0[/url]
, dove un collega andato ormai in pensione mi aveva inserito una macro per copiare la formattazione condizionale.
Quando lavoro questo file, (ogni decade devo inserire una colonna con i nuovi valori), ho la necessità di inserire la formattazione condizionale in una colonna, subordinata al confronto della colonna precedente…e tutto questo lo devo fare manualmente, cioè:

1. Inserisco la colonna con i nuovi valori
2. Applico la formattazione condizionale alla prima cella della nuova colonna
3. Eseguo la macro che copia la formattazione condizionale su tutte le restanti celle della nuova colonna

Siccome la formattazione condizionale è sempre la stessa, e il confronto è sempre riferito alla colonna precedente, vorrei chiedere cortesemente se è possibile velocizzare e automatizzare il processo di cui sopra, anche perchè le colonne contengono molti più valori dell'esempio in questione.

Grazie a tutti.
rossomike1966
Utente Junior
 
Post: 10
Iscritto il: 12/01/16 15:59

Sponsor
 

Re: VBA per automatizzare processo di Formattazione Condizio

Postdi Anthony47 » 09/02/16 02:00

Le celle hanno una formattazione condizionale con set di icone, che non consentono riferimenti "relativi" ma solo "assoluti", per cui ogni cella ha una formattazione condizionale diversa e copiando l'intervallo la formattazione condizionale rimane ancorata alle celle di origine.

Ti propongo un'alternativa piu' semplice, magari puoi adottarla...
La tua tabella ora finisce in colonna D.
Nella colonna adiacente, quindi in E5, iserisci la formula
Codice: Seleziona tutto
=SE(F5<>"";F5/D5;"")

Applica a E5 una formattazione condizionale:
-Tipo di regola: Formatta tutte le celle in base ai relativi valori
-Stile formato: Set di icone
-Scegli lo stile con le 3 frecce
-seleziona l'icona Verde (su); imposta Tipo=Numero; scegli "quando il valore è... >... 1"
-seleziona l'icona Gialla (orizzontale): sempre Tipo=Numero; scegli "Quando <=1 e ... >= ... 1"
-seleziona l'icona Rossa (giu'); Tipo=Numero; la scelta residua e' "Quando <1"
-Completa con Ok, Ok
Assegna al carattere della cella il colore Bianco (quello dello sfondo), in modo che la scritta non sia visibile, e restringi la colonna fino a che si veda la sola icona.
A questo punto se in F5 scrivi un valore superiore a quello di D5 comparira' la freccia in su; freccia orizzontale e freccia verticale compariranno per valori uguali o inferiori a quelli di colonna D.
A parte la visualizzazione su due colonne, l'aspetto dovrebbe essere simile e il comportamento uguale a quello della colonna che usi oggi; inoltre e' immediatamente copiabile.

Quindi puoi copiare E5 e incollarla verso il basso fino a E29 e usare la colonna F per i nuovi input.

Quando devi aggiungere una nuova coppia di colonne, ti bastera' selezionare E5, estendere la seleziona verso il basso (Contr-Maiusc-Freccia in giu'), copiare (Contr-c), selezionare la nuova origine (che sara' G5), e incollare (Enter).
Tutto questo potra' anche essere ottenuto con questa macro:
Codice: Seleziona tutto
Sub NewCoppia()
'
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy Selection.Range("A1").Offset(0, 2)
    Selection.Range("A1").Offset(0, 3).Value = 1
    Selection.Range("A1").Offset(0, 2).ColumnWidth = Selection.EntireColumn.ColumnWidth
    Selection.Range("A1").Offset(0, 2).Select
End Sub

NB: La macro lavora sulla "selezione corrente", quindi prima di lanciarla assicurarsi di essere posizionato in testa alla colonna che contiene la formula e la formattazione condizionale.

La macro che adattava la formattazione condizionale sulle nuove colonne non sara' piu' necessaria.

Fai sapere se puoi adottare questa semplificazione...
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: VBA per automatizzare processo di Formattazione Condizio

Postdi rossomike1966 » 09/02/16 09:50

Anthony47 ha scritto:Fai sapere se puoi adottare questa semplificazione...


Ciao Grazie per la risposta, si in effetti la soluzione funziona ed è applicabile per la mia esigenza.
Ti prego però non me ne volere...
se volessi avere tutto in una cella (e quindi tutto in una colonna) così:

Immagine

anzichè in due celle (e quidi due colonne)

Immagine

per un puro gusto estetico..non c'e' altra soluzione?

Grazie comunque per il tuo interessamento e sopratutto la tua competenza.
rossomike1966
Utente Junior
 
Post: 10
Iscritto il: 12/01/16 15:59

Re: VBA per automatizzare processo di Formattazione Condizio

Postdi Anthony47 » 12/02/16 00:17

Se vuoi usare una sola colonna allora vale il discorso che la formattazione condizionale a set di icone non e' copiabile da un intervallo all'altro perche' deve usare riferimenti assoluti.
Appena ho un po' di tempo ...
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "VBA per automatizzare processo di Formattazione Condizionale":


Chi c’è in linea

Visitano il forum: alfrimpa e 32 ospiti