Condividi:        

macro per foglio elettronico a cascata

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

macro per foglio elettronico a cascata

Postdi maco1999 » 30/10/14 18:30

Buonasera a tutto il forum.
Premetto che non capisco nulla di macro, ho creato un foglio elettronico per il calcolo della trasmittanza termica dei pannelli prefabbricati.
All’interno del foglio elettronico c’è un foglio “ISTAT” dove sono state riportate tutte le informazioni delle zone climatiche.
Adesso vorrei che attraverso la scelta a cascata si filtrassero in ordine le province, comuni e una volta scelto il comune mi portasse dietro tutte le informazioni che trovo nella tabella “ISTAT”
La tabella “ISTAT” ha 13 colonne da A-M a partire dalla riga 6 (ove sono i titoli in realtà i valori partono dalla riga 7) sino alla riga 8106.
Nel foglio “TRAMITTANZA” ho creato delle celle per la scelta di regione (cella c21), provincia (cella C23), comune (cella C25).
Una volta arrivati alla scelta del comune di conseguenza si devo riempire le celle:
e23 è la sigla provincia (colonna D della tabella ISTAT)
C29 è la latitudine (colonna H della tabella ISTAT)
C30 è la longitudine (colonna I della tabella ISTAT)
C31 è l’altitudine (colonna J della tabella ISTAT)
C32 è la zona climatica (colonna K della tabella ISTAT)
C33 sono i gradi giorno (colonna L della tabella ISTAT)
La tabella nel foglio ISTAT è così composta:
Colonna A = CodReg (codice regione)
Colonna B= Regione
Colonna C= DesPro (lista province)
Colonna D= SigPro (sigla province)
Colonna E= CodPro (codice provincia)
Colonna F= CodLoc (codice località)
Colonna G= Toponimo (lista comuni)
Colonna H= latitudine
Colonna I= longitudine
Colonna J = Altitudine
Colonna K= Clima (zona climatica)
Colonna L=gradi (gradi giorno)
Grazie per l'aiuto
maco1999
Newbie
 
Post: 8
Iscritto il: 30/10/14 17:58

Sponsor
 

Re: macro per foglio elettronico a cascata

Postdi Zer0Kelvin » 31/10/14 09:28

Ciao.
Non c'è necessità di usare macro per questo.
Per impostare più convalide "a cascata" puoi seguire le indicazioni di questo articolo
Convalida - Più convalide sulla stessa riga
Per l'inserimento dei vari dati, presumendo che tu abbia una tabella con elencati i valori per comune, puoi usare la funzione CERCA.VERT().
Se hai bisogno di ulteriore assistenza, ti consiglio di allegare un file alla discussione.
Per allegare il file, lo devi prima caricare su un host esterno, io di solito uso filedropper.
Una volta caricato il file, l'host ti restituisce un link che dovrai inserire nella discussione.
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 388
Iscritto il: 08/04/12 11:23

Re: macro per foglio elettronico a cascata

Postdi maco1999 » 01/11/14 08:43

Buongiorno adesso non posso allegare il foglio in quanto è rimasto in ufficio.
Comunque cerco di spiegare un po meglio perché secondo me il cerca verticale non va bene.
Diciamo che le colonne di ricerca sono 3:
regione, provincia e comune.
I dati da cercare e filtrare si trovano nel foglio ISTAT e sono così divisi:
Colonna B7-B8106 ci sono le Regione ma da come protrai ben capire si ripetono in quanto sono solo 20
Colonna C7-C8106 ci sono le Province ma da come protrai ben capire si ripetono in quanto sono circa 109
Colonna G7-G8106 ci sono i Comuni.
N.B. Se c'è bisogno si modificare la tabella ISTAT sarebbe il caso di usare un altro foglio collegato a questo in maniera automatizzata in quanto queste tabelle vengono aggiornate spesso e quindi un domani basta che incollo i nuovi valori e tutto di aggiorna in auto senza are nessuna modifica.
Dal foglio TRASMITTANZA devono avvenire le scelte condizionate e cioè
cella c21 scelta della regione, se facessi un cerca verticale mi prenderebbe più righe con la stessa regione
cella c23 scelta della provincia, ma da un elenco che faccia riferimento solamente alle province della regione sopra scelta.
cella c25 scelta del comune, ma da un elenco che faccia riferimento solamente ai comuni della provincia sopra scelta.
Una volta arrivato a capolinea in altre celle si devono copiare i valori relativi alla riga scelta della tabella scelta e cioè
e23 è la sigla provincia (colonna D della tabella ISTAT)
C29 è la latitudine (colonna H della tabella ISTAT)
C30 è la longitudine (colonna I della tabella ISTAT)
C31 è l’altitudine (colonna J della tabella ISTAT)
C32 è la zona climatica (colonna K della tabella ISTAT)
C33 sono i gradi giorno (colonna L della tabella ISTAT
Infine sempre se non chiedo troppo, ma per voi è un gioco da ragazzi, quando di va a fare la convalida ad esempio delle regioni (analogamente per province e comuni) possibilmente non trovare righe vuote e una volta che si cancella un valore ad esempio comune si devono a loro volta cancellare le scelte fatte e cioè provincia e regione.
Grazie di cuore e spero che nessuna mi mandi da qualche parte.
maco1999
Newbie
 
Post: 8
Iscritto il: 30/10/14 17:58

Re: macro per foglio elettronico a cascata

Postdi Zer0Kelvin » 01/11/14 13:30

Da quanto scrivi sembra di capire che non hai letto l'articolo che ti ho consigliato...
Per i campi Regione-Provincia-Comune puoi utilizzare le convalide multiple come descritto nell'articolo.
Se hai difficoltà a realizzare gli elenchi necessari si pùo usare una macro per crearli, ma SERVE IL FILE...
Una volta ottenuto il comune, puoi utilizzare il CERCA.VERT per ottenere i dati necessari...
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 388
Iscritto il: 08/04/12 11:23

Re: macro per foglio elettronico a cascata

Postdi ricky53 » 02/11/14 02:07

Ciao,
nel tuo esempio (regioni-provincie-comuni) utilizzando le formule per realizzare una convalida a tre livelli non penso sia semplice da realizzare ...

Sarebbe stato utile avere un tuo file di esempio piuttosto che costringerci a costruircene un noi ... ricordatelo la PROSSIMA VOLATA !!!


Comunque io posso inviarti un File di Esempio che ho prodotto adattando un mio vecchio file di convalida a tre livelli.
Il file utilizza le colonne "AA:AB" del foglio "ISTAT" come colonne di appoggio quindi se le utilizzi va modificata la macro sostituendo queste colonne con due libere ...

Prova e ... sono QUI
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: macro per foglio elettronico a cascata

Postdi maco1999 » 05/02/15 11:14

Buongiorno tempo fa avevo scritto per foglio elettronico per scelta a cascata ma ad oggi non ci sono riuscito.
Allego file e se qualcuno mi aiuta glie ne sarei molto grato.
Ci sono 2 fogli:
"TRAMITTANZA" dove devo scegliere: regione-provincia-comune e di conseguenza si trascina dietro i valori di latitudine, long, temp, alt., clima e gradi.
"ISTAT" riportati tutti i comuni d'italia con le relative informazioni.
Grazie

https://www.dropbox.com/s/qrdn8odr97n34 ... .xlsx?dl=0
maco1999
Newbie
 
Post: 8
Iscritto il: 30/10/14 17:58

Re: macro per foglio elettronico a cascata

Postdi Flash30005 » 05/02/15 15:53

Ho scaricato il tuo file e avendo le convalide non funzionanti le ho eliminate quindi fai lo stesso e segui questa procedura
1) Aggiungi un foglio chiamandolo "Elenchi"
2) Copia le colonne A e B del foglio Trasmittanza e le incolli in questo nuovo foglio
3) con le due colonne selezionati ti porti nel Menu Dati e elimini i doppioni
4) Selezioni la colonna B (fino dove sono i dati: B1:B20) e definisci il nome "Regioni"
4) selezioni da C1 a C100 definendo il range con nome "prov"
5) Selezioni da D1 a D300 e definisci il nome "Comuni"
6) torni sul foglio trasmittanza e convalidi le tre celle C21, C23, C25 con i rispettivi elenchi Regioni, Prov, Comuni
7) Copia la macro1 nel Vba del foglio Trasmittanza
5) Copia la macro2 e inseriscila in un modulo
6) In E23 inserisci questa formula
Codice: Seleziona tutto
=SE(C23="";"";CERCA.VERT(C23;ISTAT!C8:D8107;2;FALSO))
(formula che puoi eliminare se aggiungi una riga codice alla macro che inserirà la sigla provincia in automatico)
7) Salva il file in formato .xlsm
e provi a cambiare la regione, dovresti ottenere solo pe province di quella regione nella convalida di appartenenza
una volta selezionata la provincia, dovresti trovare solo i comuni nella rispettiva convalida
selezionando il comune avrai la "Zona Climatica" aggiornata

Non sono andato oltre perché il file non corrisponde con la descrizione che hai fornito sui dati
ma potrai procedere da solo seguendo le istruzioni all'interno della macro

Macro1

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
AreaR = "C21:D22"
AreaP = "C23:D24"
AreaC = "C25:D26"
If Not Application.Intersect(Target, Range(AreaR)) Is Nothing Then
Application.EnableEvents = False
CreaElProv
Application.EnableEvents = True
End If
If Not Application.Intersect(Target, Range(AreaP)) Is Nothing Then
Application.EnableEvents = False
CreaElCom
Application.EnableEvents = True
End If
If Not Application.Intersect(Target, Range(AreaC)) Is Nothing Then
Application.EnableEvents = False
TrovaDati
Application.EnableEvents = True
End If
End Sub



Macro2

Codice: Seleziona tutto
Sub CreaElProv()
Dim WSI As Worksheet
Dim WST As Worksheet
Dim WSE As Worksheet
Set WSI = Worksheets("ISTAT")
Set WST = Worksheets("TRASMITTANZA")
Set WSE = Worksheets("Elenchi")
WSE.Columns("C").ClearContents
URIS = WSI.Range("A" & Rows.Count).End(xlUp).Row
For i = 8 To URIS
If WST.Range("C21").Value = WSI.Range("B" & i).Value Then
If Prov = WSI.Range("C" & i).Value Then GoTo Saltaprov
URE = WSE.Range("C" & Rows.Count).End(xlUp).Row + 1
WSE.Range("C" & URE).Value = WSI.Range("C" & i).Value
Prov = WSI.Range("C" & i).Value
End If
Saltaprov:
Next i
WST.Range("C23:D24").ClearContents
WST.Range("C25:D26").ClearContents
WST.Range("C29:D32").ClearContents

End Sub

Sub CreaElCom()
Dim WSI As Worksheet
Dim WST As Worksheet
Dim WSE As Worksheet
Set WSI = Worksheets("ISTAT")
Set WST = Worksheets("TRASMITTANZA")
Set WSE = Worksheets("Elenchi")
WSE.Columns("D").ClearContents
URIS = WSI.Range("A" & Rows.Count).End(xlUp).Row
For i = 8 To URIS
If WST.Range("C23").Value = WSI.Range("C" & i).Value Then
If Comu = WSI.Range("G" & i).Value Then GoTo SaltaCom
URE = WSE.Range("D" & Rows.Count).End(xlUp).Row + 1
WSE.Range("D" & URE).Value = WSI.Range("G" & i).Value
Comu = WSI.Range("G" & i).Value
End If
SaltaCom:
Next i
End Sub
Sub TrovaDati()
Dim WSI As Worksheet
Dim WST As Worksheet
Set WSI = Worksheets("ISTAT")
Set WST = Worksheets("TRASMITTANZA")
URIS = WSI.Range("A" & Rows.Count).End(xlUp).Row
MiaRic = WST.Range("C21").Value & WST.Range("C23").Value & WST.Range("C25").Value
For i = 8 To URIS
If MiaRic = WSI.Range("B" & i).Value & WSI.Range("C" & i).Value & WSI.Range("G" & i).Value Then
WST.Range("C29").Value = WSI.Range("K" & i).Value  '<<< riga da duplicare per ogni cella che deve essere compilata sul foglio "Trasmittanza"
'<<<< da qui in poi potrai inserire tutti gli altri campi copiando la riga precedente e adattandola alle coordinate celle
End If
Next i
End Sub


Allego il file esempio
Download File Test

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro per foglio elettronico a cascata

Postdi maco1999 » 05/02/15 22:10

Grazie mille!!!!
maco1999
Newbie
 
Post: 8
Iscritto il: 30/10/14 17:58


Torna a Applicazioni Office Windows


Topic correlati a "macro per foglio elettronico a cascata":


Chi c’è in linea

Visitano il forum: Nessuno e 8 ospiti