Condividi:        

gestione condizionata delle pagine

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

gestione condizionata delle pagine

Postdi sandro01 » 05/02/16 12:51

Buon pomeriggio, sono ancora io. Spero di non rompere troppo.....
Sto' usando excel e vi chiedo se è possibile fare quanto vi chiedo.
Ho un documento composto da tre pagine (in basso allo schermo pagina1,pagina, pagina3)
Sulla pagina1 alla cella F15 metto una condizione SE
E' possibile in base a quanto si verifica alla cella F15 della pagina1 fare scomparire (cancellare la pagina con una macro ?) per esempio la pagina 2, lasciando inalterata la pagina 3?
Grazie per la risposta
sandro01
Utente Junior
 
Post: 13
Iscritto il: 04/02/16 16:12

Sponsor
 

Re: gestione condizionata delle pagine

Postdi Anthony47 » 06/02/16 00:10

Ciao sandro01, benvenuto nel forum.
Si puo' fare, ma dovresti indicare quale e' la cella che scatena il risultato del SE in cella F15, e se per cancellare intendi "rimuovere definitivamente il foglio" oppure "nascondere alla vista".

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: gestione condizionata delle pagine

Postdi sandro01 » 08/02/16 09:23

Nel foglio1 generale ho la cella I15 dove è presente un elenco a tendina con le voci LOC, GP, MKR, ..... A ciascuna voce è associato un foglio dedicato (es. se seleziono la voce LOC nel menu I15 nel corrispondente "foglio LOC" si attivano una serie di dati che posso andare a vedere cliccando sul "foglio LOC" che si apre: Stessa cosase se seleziono la voce GP nel menu I15 nel corrispondente "foglio GP" si attivano una serie di dati che posso andare a vedere cliccando sul "foglio GP" che si apre).
La mia intenzione sarebbe di lasciare il menu I15 e impostare sulla cella che lo contiene la condizione SE (es. =SE(foglio1!I15=LOC;"allora nascondi alla vista il foglio!GP") e così via.
Spero di aver chiarito cosa voglio
Ciao
sandro01
Utente Junior
 
Post: 13
Iscritto il: 04/02/16 16:12

Re: gestione condizionata delle pagine

Postdi Anthony47 » 09/02/16 01:56

Mahh... Insomma quando in I15 scrivi PIPPO vorresti visualizzare il foglio Pippo, e quando scrivi PLUTO vorresti visualizzare il foglio Pluto?

Se non e' cosi' allora ti sara' chiaro che sono lontano dall'aver capito...
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: gestione condizionata delle pagine

Postdi sandro01 » 09/02/16 16:59

Ciao, ci siamo quasi!
Quando in I15 scrivo PIPPO voglio visualizzata la pagina PIPPO; se in I15 scrivo PLUTO deve scomparire la pagina PIPPO.
E' fattibile?
A presto
sandro01
Utente Junior
 
Post: 13
Iscritto il: 04/02/16 16:12

Re: gestione condizionata delle pagine

Postdi sandro01 » 10/02/16 17:02

Ancora ciao!
Girando per il forum ho trovato qualcosa che potrebbe fare per me, ma non mi funziona.
Mi spiego.
Ho due pagine di cui la prima chiamata" Frontespizio" e la seconda "MKRDME". Sulla prima pagina "Frontespizio" alla cella M29 se il contenuto è 1 allora si attiva la macro sotto, se è uguale a 2 no. La macro fa apparire o scomparire il foglio"MKRDME". Ho pensato erroneamente che il modificarsi del valore in cella M29 potesse far scomparire/apparire il foglio "MKRDME". Invece non succede niente. Ho creato un pulsante e gli ho assegnarto la macro e agendo su questo, dopo aver modificato il valore in cella M29, allora funziona. Solo che non voglio un pulsante, ma deve essere la sola cella M29 nel foglio1 o "frontespizio" a gestire il tutto. Potete aiutarmi?
Sub Priva()
If Sheets(1).[M29] = 1 Then
Sheets("MKRDME").Visible = False
Else
Sheets("MKRDME").Visible = True
End If

End Sub
sandro01
Utente Junior
 
Post: 13
Iscritto il: 04/02/16 16:12

Re: gestione condizionata delle pagine

Postdi Anthony47 » 12/02/16 00:10

Allora assumiamo che quando scrivi un certo valore vuoi rendere visibile solo un foglio associato, e nascondere tutti gli altri eccetto quello su cui e inserita la scelta (foglio "Frontespizio")

Devi usare una macro di WorksheetChange...
Sul foglio Frontespizio creati da qualche parte una tabella che abbia in prima colonna il valore da scegliere e in seconda colonna il foglio associato alla scelta.
Io l'ho fatto in colonna S e T come da immagine:
Immagine
caricare immagini
Definisci ora un "Nome", e chiamalo Convalida; come "Riferito a" usa questa formula:
Codice: Seleziona tutto
=SCARTO(Frontespizio!$S$2;0;0;CONTA.VALORI(Frontespizio!$S$2:$S$100);1)

Supponiamo che la cella in cui fare la scelta sia M29: assegna a questa cella una Convalida da Elenco, e come "Origine" scrivi =Convalida

In questo modi in M29 potrai solo inserire uno dei valori scritti nella tabella che hai prima creato.
Ora fai Tasto Dx sul tab col nome foglio Frontespizio; scegli Visualizza codice; copia questo codice e incollalo nel frame vuoto dell'editor delle macro che si e' aperto:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myEccez, myTarg As String, myMatch
'
myTarg = "M29"                              '<<< 1) La cella con la scelta
myEccez = Array("Frontespizio", "Foglio3")  '<<< 2) I fogli che vuoi rimangano sempre visibili
If Application.Intersect(Target, Range(myTarg)) Is Nothing Then Exit Sub
'
For I = 1 To Worksheets.Count
    myMatch = Application.Match(Sheets(I).Name, myEccez, 0)
    If IsError(myMatch) Then
        Sheets(I).Visible = False
    Else
        Sheets(I).Visible = True
    End If
Next I
myMatch = Application.Match(Range(myTarg).Value, Range("Convalida"), 0)
If Not IsError(myMatch) Then
    Sheets(Range("Convalida").Cells(1, 1).Offset(myMatch - 1, 1).Value).Visible = True
End If
'
End Sub

Personalizza le righe marcate <<<; in particolare nella riga "<<< 2)" inserira l'elenco dei foglio che vuoi rimangano sempre visibili.

Torna a questo punto su Frontespizio, prova a modificare la scelta in M29 e vedi l'effetto che fa.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: gestione condizionata delle pagine

Postdi sandro01 » 16/02/16 09:31

la macro che mi hai proposto funziona. Solo che funziona solo se vado a modificare il valore nell'elenco in cella M29, che per me è solo una cella di appoggio, dove il valore viene variato da una condizione =SE().
Ti riepilogo cosa vorrei:
Il documento è composto da tre pagine "Frontespizio", "LOCALIZER" e "MKRDME".
Nella pagina "Frontespizio" ho:
1. Cella F15 dove è presente menu a tendina (in questa cella è il solo e unico posto dove posso operare una scelta). Se scelgo tra tutti i valori quello di "SENSITIVE AREAS" allora:
2. Cella M29 (di appoggio) dove è presente la condizione =SE(F15="SENSITIVE AREAS";"1";"0") mi da:
La condizione "1" mi deve far vedere le pagine "Frontespizio" e "LOCALIZER".
La condizione "2" mi deve far vedere le pagine "Frontespizio", "LOCALIZER" e "MKRDME".
Spero di essermi chiarito
A presto
sandro01
Utente Junior
 
Post: 13
Iscritto il: 04/02/16 16:12

Re: gestione condizionata delle pagine

Postdi Anthony47 » 17/02/16 02:03

Spero di essermi chiarito
Si, spero anche io :D :D ...anche se la condizione "2" non esiste.
Comunque allora butta tutto quello che abbiamo fatto, e al posto della precedente Sub Worksheet_Change metti questa:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
'
If Target.Address <> "$F$15" Then Exit Sub
If Target.Value = "SENSITIVE AREAS" Then
    Sheets("LOCALIZER").Visible = True
    Sheets("MKRDME").Visible = False
Else
        Sheets("MKRDME").Visible = True
End If
End Sub

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: gestione condizionata delle pagine

Postdi sandro01 » 17/02/16 07:33

Perfetto! Funziona
Grazie ancora
sandro01
Utente Junior
 
Post: 13
Iscritto il: 04/02/16 16:12

Re: gestione condizionata delle pagine

Postdi sandro01 » 17/02/16 11:36

Ho un altro quesito da porti!
Oltre alle pagine "Fontespizio", "LOCALIZER", "MKRDME" ho aggiunto la pagina "GLIDEPATH" per un totale di 4 pagine.
Con la macro incollata sul foglio "Frontespizio" che mi hai fornito e la condizione che se F15 in "Frontespizio" assume il valore "SENSITIVE AREAS" mi nasconde la pagina "MKRDME" è OK!
Se volessi estendere con altre macro, sempre sul foglio "Frontespizio", altre condizioni di visibilità o meno di altri fogli sarebbe possibile? Ti spiego cosa vorrei aggiungere.
Se le caselle AF## dello stesso foglio "Frontespizio", in funzione di diverse circostanze assumono i valori 11, 16 e 29 è possibile rendere invisibili certi fogli?
Esempio: AF11= 11 Voglio vedere dei quattro fogli elencati sopra solo "LOCALIZER"
AF12 = 11 Voglio vedere dei quattro fogli elencati sopra solo "GLIDEPATH"
E' possibile creare una macro, da aggiungere (dove e come?) a quella funzionante nello stesso foglio "Frontespizio" con due variabili (indice della cella AF11, AF12;..... AF15) e (valore che assume la cella AF## ) da combinare tra loro per far apparire o meno una o la combinazione delle quattro pagine?
Spero in un aiuto
Ciao
sandro01
Utente Junior
 
Post: 13
Iscritto il: 04/02/16 16:12

Re: gestione condizionata delle pagine

Postdi Anthony47 » 18/02/16 23:40

sandro01 ha scritto:Spero di essermi chiarito
Evidentemente non abbastanza :diavolo:
Comunque tra la vecchia risposta e l'ultima oramai sai come si visualizza e come si nasconde un foglio e come si struttura una condizione If Condizione Then SeVero Else SeFalso End If. Quindi prova e riprova, comunque se non riesci allora scrivi i tentativi che hai fatto e vedremo come risolvere insieme...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: gestione condizionata delle pagine

Postdi sandro01 » 19/02/16 09:08

Sono ancora qui!
Ho modificato la macro che mi avevi dato ma non funziona. Cioè, funziona sempre e solo la prima parte.
Ti allego quello che ho fatto. Tutte le celle sono nella stessa pagina "Frontespizio":

Private Sub Worksheet_Change(ByVal Target As Range)
'
If Target.Address <> "$F$15" Then Exit Sub
If Target.Value = "SENSITIVE AREAS" Then
Sheets("LOCALIZER").Visible = True
Sheets("MKRDME").Visible = False
Else
Sheets("MKRDME").Visible = True
End If
'
If Target.Address <> "$AF$138" Then Exit Sub
If Target.Value = "29" Then
Sheets("LOCALIZER""MKRDME").Visible = True
Sheets("GLIDEPATH").Visible = False
Else
Sheets("GLIDEPATH").Visible = True
End If
End Sub


Spero in un aiuto: Ciao
sandro01
Utente Junior
 
Post: 13
Iscritto il: 04/02/16 16:12

Re: gestione condizionata delle pagine

Postdi Anthony47 » 19/02/16 21:02

Prova questa versione:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
'
If Target.Address = "$F$15" Then
    If Target.Value = "SENSITIVE AREAS" Then
        Sheets("LOCALIZER").Visible = True
        Sheets("MKRDME").Visible = False
    Else
        Sheets("MKRDME").Visible = True
    End If
End If
If Target.Address = "$AF$138" Then
    If Target.Value = "29" Then
        Sheets("LOCALIZER""MKRDME").Visible = True
        Sheets("GLIDEPATH").Visible = False
    Else
        Sheets("GLIDEPATH").Visible = True
    End If
End If
End Sub

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: gestione condizionata delle pagine

Postdi sandro01 » 20/02/16 07:40

Ciao Anthony47
Continua a funzionare solo la prima istruzione sula cella F15. La seconda istruzione sulla cella AF138 non viene mai attivata.
In cosa sbaglio? C'è un qualche blocco da qualche parte che fa attivare solo un'istruzione per volta?
Attendo fiducioso.
Ciao
sandro01
Utente Junior
 
Post: 13
Iscritto il: 04/02/16 16:12

Re: gestione condizionata delle pagine

Postdi Anthony47 » 21/02/16 11:36

Una macro di "Worksheet_Change" si attiva quando sul foglio l'utente modifica qualcosa (ripeto: l'utente, non le formule).
Nel codice ultimo la macro esegue un'operazione se si modifica la cella F15 e un'altra se si modifica AF138.
E' probabile che la cella AF138 non sia in grado di innescare l'evento "Worksheet_Change" perche' il contenuto e' una formula.
Quindi devi individuare quale e' la cella (o quali sono le celle) che modificata causa una variazione di contenuto nella AF138 e usare quell'indirizzo /quegli indirizzi nella struttura dell 'If /Then /Else.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: gestione condizionata delle pagine

Postdi sandro01 » 29/02/16 08:13

Ho afferrato il concetto! Solo che non ho una singola cella che va a modificare AF138. Cerco di spiegarmi.
Ho una combinazione di celle: W,X,Y,Z,AA,AB,AC,AD,AE il cui contenuto lo vario da altre celle con menu a tendina. Per ciascuna combinazione viene scritto un valore di AF (AF1......AF353).

In particolare AF183 si realizza per la combinazione sotto:

AF183=MATR.SOMMA.PRODOTTO(((W18:W48="PERIODIC")*(X18:X48="-")*(Y18:Y48="-")*(Z18:Z48="SPECIAL")*(AA18:AA48="LOC")*(AB18:AB48="Tx2")*(AC18:AC48="SPECIAL")*(AD18:AD48="GP")*(AE18:AE48="Tx1")))

Cosa pensi si possa fare?
Ciao
sandro01
Utente Junior
 
Post: 13
Iscritto il: 04/02/16 16:12

Re: gestione condizionata delle pagine

Postdi Anthony47 » 01/03/16 00:18

In estreme sintesi devi sapere quale /quali è/sono il/i dato/i introdotti a mano che innescano un cambiamento della cella AF138.

Oppure ripieghi su una macro da attivare con un pulsante.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "gestione condizionata delle pagine":

consumo pagine web
Autore: nikita75
Forum: Software Windows
Risposte: 4

Chi c’è in linea

Visitano il forum: Nessuno e 77 ospiti