Cruscotto Indicatori con Mappa coropletica

Stato
Chiusa ad ulteriori risposte.
C

calibro22

Guest
Buongiorno a tutti,
volevo condividere con la comunità questo mio lavoro con cui rappresento sulla mappa della mia regione
alcuni indicatori sanitari.
In questo preciso lavoro, la mappa è stata divisa per ASL e di conseguenza anche gli indicatori rappresentati sulla mappa sono stati calcolati\aggregati per tale entità geografica.

E' quasi un mega pertanto non sono riuscito a caricarlo direttamente sul forum
questo però è il link dove poterlo scaricare:
https://drive.google.com/file/d/191VhLkHGZPWrko1o6FOztmgvSuTxvKcz/view?usp=sharing


Vado a descrivere (cerco il più sinteticamente possibile) le features di questo "dashboard".

In alto a SX ci sono due pulsanti neri. Cliccando sul primo pulsante imposto il tema indicatore mentre se
clicco sul secondo pulsante posso selezionare un indicatore del tema prima selezionato.

Come si può vedere, cambando indicatore i valori delle singole ASL vengono riscritti sulla mappa come anche il colore\gradiente delle singole ASL che vengono riassegnati e ricolorati.

Con un singolo click o su una ASL della mappa oppure su una ASL del tabellino riepilogativo in basso a SX metto in evidenza quella particolare ASL colorandola di un verde fosforescente.
Di riflesso anche la corrispondente ASL sui grafici verrà evidenziata con lo stesso colore. (la cosa inversa non è prevista, cioè cliccare sul grafico per evidenziare una ASL).
Sulla mappa può essere anche applicato (entro certi limiti) lo Zoom (In e Out) cliccando sulle immagini delle lenti (in basso a sx del riquadro della mappa)

Ho predisposto poi due canvas per dei grafici-chart, il primo canvas a sx per chart a "barre" o istogramma
mentre il secondo canvas per grafici a torta o ciambella.
Per entrambi i canvas è possibile cambiare il tipo di grafico rappresentato cliccando sull'immagine della pergamena, mentre cliccando sull'immagine della freccetta verde è possibile ingrandire il grafico a schermo intero (che poi sarebbe un chart-sheet).
Per tornare indietro dalla visualizzazione schermo intero a quella di default, basta fare un doppio-click sul chart-sheet.

Ho predisposto poi una legenda con cui metto in evidenza il range di ogni singola fascia-colore.
Cliccando sulla pergamena mi si aprirà una piccola userForm in cui potrò scegliere quante fasce\classi utilizzare (da un minimo di 3 ad un massimo di 7).
Inoltre posso decidere come calcolare queste classi (quantili, intervalli uguali, scala logaritmica oppure per deviazioni standard sopra o sotto la media).
Cambiando il numero di classi e\o il tipo il gradiente colori sulla mappa verrà ridisenato "al volo".

Infine, nella parte più in basso a destra ci sono dei pulsanti\immagine verdi con cui si può accedere a dei grafici speciali.
Il "population chart" in cui rappresento la popolazione maschile e femminile col classico grafico a "campana\lisca di pesce" (sullo stesso chart viene rappresentata sia la popolazione italiana che quella straniera dell'ASL selezionata)
Il "performance chart" che rappresenta su una semplice barra orrizzontale colorata (che ha come estremi il minimo e il massimo dell'indicatore che rappresenta) il valore dell'ASL selezionata con un pallino giallo .
Il bello di questo tipo di (multi)grafico è che in un colpo solo rappresento l'andamento di una singola entità (ASL) su più indicatori contemporaneamente.
Ogni singola barra è "incastrata" nello stesso spazio orrizzontale condiviso con gli altri indicatori, pertanto il range tra il minimo e il massimo di ogni barra\indicatore è dinamico.

Per questo tipo di grafico è doveroso uno speciale ringraziamento a Marius44
A quel tempo avevo picchiato la testa sul muro per diversi giorni TestateSulMuro poi Mario mi ha risolto il problema in un batter d'occhio :StrettaDiMano:

Tutto questo lavoro può essere riutilizzabile con altri indicatori di diversa natura
entrando nel foglio nascosto "Indicatori" e apportando le modifiche alle righe dalla 13 alla 19 e dopo la 120.
Ammetto che questa parte di configuirazione potevo farla sicuramente meglio Fischiettando

Il progetto VBA è sprotetto, i fogli e la struttura del workbook sono invece protetti (da accidentale manipolazione) con password 123

Ho stra-testato questo workbook su Excel 2010 sia a 32 bit che a 64 bit.
Su Excel 2013 ho altresì fatto qualche timido test; se qualcuno intercetta dei bachi o delle "stranezze" e avrà la bontà di segnalarmeli, io vedrò poi di corregerli.

Segnalo anche che sempre sul Excel 2010 il foglio principale "MappaInterattiva" dovrebbe essere "responsive" a livello di workbook (cioè se si cambia la dimensione della finestra del workbook all'interno dell'applicazione Excel (ma non quella più esterna dell'aplicazione Excel) il foglio "MappaInterattiva" dovrebbe fare un re-scaling in automatico.

Spero che possa essere di qualche utilità per progetti simili o come spunto per migliorare un tipo di reportistica che, secondo me, viene sempre più richiesto nel mio ambito lavorativo

Un saluto
 

Bruno

Utente abituale
Expert
13 Settembre 2015
973
63
Italy
365/64 Bit W10
96
Ciao
In apertura si ferma sulla riga...
Codice:
Private Sub Worksheet_Calculate()
    Application.EnableEvents = False
    Dim ch As Chart
    LiberaFoglio "MappaInterattiva"
    
[COLOR=#ff0000]    Set ch = Worksheets("MappaInterattiva").ChartObjects("Grafico_" & idChartToChange).Chart[/COLOR]

Uso Excel 2016 64 Bit Windows 10
 
C

calibro22

Guest
Ciao Bruno come va?
credo di aver messo per sbaglio su Drive una versione prototipale.
Puoi provare a scaricare la versione che ho adesso sostituito?
Il link è sempre lo stesso.
Dal portatile con Excel 2013 a 64 bit su cui sto facendo 2 prove adesso alla prima apertura da un errore .
Se chiudi e riapri non dovrebbe però darlo più.
Spero che non ci siano particolari errori individuabili solo con Excel 2016 perché non ho la possibilità di testare e correggere al riguardo.

Grazie
 

Powerwin

VBA Expert
Expert
17 Marzo 2016
4.512
83
vicino a Milano
2019
96
Ciao a tutti, Bruno hai provato ad andare nelle proprietà del file ed annullare il blocco che è presente su tutti i files scaricati da internet?

A me funziona senza errori


Grazie Calibro per averlo condiviso:StrettaDiMano:
 

ges

Excel/VBA Expert
Amministratore
Expert
21 Giugno 2015
21.687
1.733
Como
2011MAC 2016WIN
463
Complimenti calibro :StrettaDiMano:
Ottimo lavoro :ok:

E grazie per la condivisione.
 
C

calibro22

Guest
Grazie, ma come diceva Wolf in "Pulp Fiction" è ancora presto per farci i ***ini a vicenda
(spero di aver asteriscato a sufficienza SmileForum)
come dicevo con 2013 ho testato poco e con 2016 per niente perché non ho modo di farlo.
Speriamo, se è il caso ci metterò qualche pezza qua e la.
 

Bruno

Utente abituale
Expert
13 Settembre 2015
973
63
Italy
365/64 Bit W10
96
Ciao calibro22

Ho scaricato nuovamente il file come indicato


Come vedi compare ancora un errore MartelloTesta

Ho aperto il file ed inserito la password Vba corretta, poi ho salvato il file sul mio Pc.

Nelle successive aperture non compare più alcun problema nota anche con passsword Vba inserita.
Complimenti per il grafico
 
C

calibro22

Guest
@Bruno puoi fare ancora una prova?
Riscarica il file dallo stesso link, salva il file con un nome diverso.
quando lo vai ad aprire, se compare un errore non entrare nel dubugger ma premi su fine.
Chiudi il file, se ti viene chiesto di salvare NON salvare e poi riprova ad aprire quest'ultimo file che hai scaricato.
Anche a me da una cosa così ogni tanto con 2013 (ma non sempre) e comunque solo alla prima apertura.
Con 2010 non mi succedere mai e devo capire ancora adesso cosa sia la discriminante.

P.S. E' possibile che con 2016 tutto quello che ti ho scritto non valga, con 2013 però si riesce a by-passare il problema.
Ciao

PS al PS. Non ci dovrebbe essere una password del VBA,
123 è la password standard dei fogli e del workbook, sul progetto prima c'era la password ma poi l'ho tolta
 

Bruno

Utente abituale
Expert
13 Settembre 2015
973
63
Italy
365/64 Bit W10
96
Ciao

In effetti hai rimosso la password Vba nell'ultimo allegato

Vero se salvo con altro nome il file quando successivamente lo apro è tutto OK

Ho cercato il motivo che genera l'errore, lascio a te risolvere il BACO

L'errore si attiva quando esegui la seguente Sub dove il valore restituito è = 0
Premi ctrl alt F9

Codice:
Private Sub Worksheet_Calculate()
    MsgBox idChartToChange
 
C

calibro22

Guest
Ciao a tutti, Bruno hai provato ad andare nelle proprietà del file ed annullare il blocco che è presente su tutti i files scaricati da internet?

A me funziona senza errori


Grazie Calibro per averlo condiviso:StrettaDiMano:
Ciao PowerWin, sto provando a correggere il baco alla PRIMA apertura del file, ma non ne esco fuori.
E' un problema che ho anche su altri workbook e che NON generano alcun problema con Excel 2010.

Ho fatto delle prove per testare se il workbook è aperto in modalità protetta oppure no (quindi prima volta o successive volte)
più o meno in questo modo:
Codice:
    Dim wb As workbook
    If Application.ProtectedViewWindows.Count > 0 Then
          Set wb = Application.ProtectedViewWindows(1).Workbook
    Else
          Set wb = ThisWorkbook
    End If
    wb.Activate
ma sembra proprio che non si riesca ad accedere ai fogli del workbook o a maggior ragione a dei range senza che venga generato un errore.

Hai qualche strada da suggerirmi?
Grazie
 

Bruno

Utente abituale
Expert
13 Settembre 2015
973
63
Italy
365/64 Bit W10
96
Ciao

Ciao a tutti, Bruno hai provato ad andare nelle proprietà del file ed annullare il blocco che è presente su tutti i files scaricati da internet?
Non centra nulla.

Evidentemente in apertura del file si attiva prima la routine presente nel Foglio7(Tipo_Grafico) senza aver aggiornato i dati
con: Private Sub Workbook_Open()

Quando mi compare l'errore che ho segnalato è sufficente eseguire Private Sub Workbook_Open() per utilizzare il programma.

Controlla attentamente se le variabili contengono i valori corretti prima di eseguire il codice.
 
C

calibro22

Guest
Ciao Bruno,
a me l'errore mi salta fuori qua:
Codice:
Public Sub MostraNascondiFogli(ByRef arrf, s_h As Boolean, pwd)
    Dim j As Integer
[COLOR=#ff0000]    ActiveWorkbook.Unprotect Password:=pwd
...[/COLOR]
se provo a sostituire ActiveWorkBook con ThisWorkBook il debugger va avanti ma si inceppa nella riga successiva della macro quando vado ad usare i fogli.

A te da quanto ho capito sembrerebbe che dia errore nella Sub WorkSheet.Calculate
Puoi provare a cambiare il nome al file aggiungendo che ne so un progressivo in fondo e riprovare?
 

Bruno

Utente abituale
Expert
13 Settembre 2015
973
63
Italy
365/64 Bit W10
96
Ciao calibro22

Ho modificato l'estensione del file e si è aperto correttamente
Era già così anche prima, piuttosto con aperto un altro file excel il tuo foglio non compare mai sullo schermo devo selezionarlo manualmente.

Penso che l'errore si verifica quando il foglio scaricato dalla rete esegue la routine nel Foglio7(Tipo_Grafico) Private Sub Worksheet_Calculate()

Se generi qualche errore in debug perdi sicuramente le variabili caricate con Private Sub Workbook_Open()

Selezionando successivamente il grafico otterrai l'errore segnalato.
 
C

calibro22

Guest
Ciao Bruno,
ti ringrazio per l'aiuto che mi stai dando, mi sa però che siamo su due pianeti diversi nel senso che da quanto ho capito a te il PRIMO errore che viene generato è quello in Worksheet.Calculate.
Mi sbaglio?
Se invece ricevi un errore prima e poi poni fine all'esecuzione del codice allora credo che se non riapri il file e lavori su quello aperto non funzioni più niente oppure tu ottenga errori a ogni interazione col foglio perché si è interrotto il flusso del codice e le variabili come dicevi te si sono perse.
Altra domanda: hai per caso altri file excel aperti nella stessa istanza o altre istanze?
 

rollis13

Utente assiduo
15 Novembre 2015
1.602
63
Cordenons
Office 2016 x64
82
Un saluto a tutti Saluto_saluto.
Ho Excel 2016 64bit su Win 10
Mi compare lo stesso errore segnalato da Bruno post #2 sul Worksheet_Calculate dato che la variabile idChartToChange è ancora a 0 :
1) togliere il blocco al file suggerito da Powerwin post #4 non ha sortito effetti;
2) la soluzione più rapida (per ora) è cliccare Fine e Salvare, se si esce senza salvare il problema si ripropone.

3) non trovo il pulsante per uscire dal grafico visualizzato con Population Chart.
 

Bruno

Utente abituale
Expert
13 Settembre 2015
973
63
Italy
365/64 Bit W10
96
Per calibro22

Nota bene:
Il Baco è presente nei soli file scaricati dal Web
Nel file aperto presente in rete e successivamente salvato sul l'errore non compare più.

Quando è comparso l'errore ho notato:
Codice:
Private Sub Worksheet_Calculate()
    Application.EnableEvents = False
    Dim ch As Chart
    LiberaFoglio "MappaInterattiva"
    
    Set ch = Worksheets("MappaInterattiva").ChartObjects("Grafico_" &[COLOR=#ff0000] idChartToChange[/COLOR]).Chart
Che il valore presente in idChartToChange era uguale a zero mentre per eseguire la riga di codice deve essere uguale a uno
modificato manualmente il valore ed eseguita la riga il codice prosegue per fermarsi nuovamente in mancanza di un secondo parametro non valido

Se interrompo il codice causa errore posso tornare ad utilizzare normalmente il foglio aggiornando le variabili con:
Private Sub Workbook_Open() presente in: Questa cartella di lavoro

Ripeto alcune variabili non sono impostate correttamente quando si verificano gli errori
 

rollis13

Utente assiduo
15 Novembre 2015
1.602
63
Cordenons
Office 2016 x64
82
Bloccando le macro all'avvio per iniziare con il Debug da Workbook_Open proseguendo con F8 si giunge fino alla fine senza problemi e non viene MAI attivato il Worksheet_Calculate presente nel modulo del Foglio 7.
Ho messo uno Stop alla macro Worksheet_Calculate ma utilizzando le varie funzioni l'evento non si è MAI attivato !! a cosa e a chi serve allora !!?? e a questo punto, perché viene attivato solo quando se si avvia il file in modo 'normale' ? cosa attiva l'evento ?

Vado a dormire … Saluto_saluto.
 
C

calibro22

Guest
@Rollis: Per uscire dai tutti i chart-sheet ho impostato il doppio-click
Powerwin @Powerwin Sui sistemi a 32 bit non ho riscontrato problemi di sorta.
Sto ancora facendo delle prove su un laptop del lavoro con 2013 e win 10, con scarsi risultati.
Prima di impazzire se mai vedo di riprodurre il problema su un file molto più semplice per vedere se si ripresentano quegli errori all'apertura con 2013 o sup (sembrerebbe solo a 64 bit).

Grazie a tutti
 
Ultima modifica di un moderatore:
Stato
Chiusa ad ulteriori risposte.

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!