Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Tasto elimina fogli e collegamento celle

Ultimo Aggiornamento: 27/04/2018 10:18
Post: 26
Registrato il: 26/02/2018
Città: ROMA
Età: 32
Utente Junior
Excel 2010
OFFLINE
11/04/2018 15:31

Buongiorno a tutti!

Sto impostando un file Excel "dinamico" per il controllo di alcuni progetti.

Avrei bisogno del vostro prezioso aiuto per risolvere due cose:

1)Inserire una macro che al clic del pulsante "Elimina Fogli" cancellasse, previo avviso, TUTTI i fogli presenti nel file, ad eccezione dei primi due (foglio Elenco e foglio Fac-Simile) e dell'ultimo (foglio Dati)

2)Inserire una formula (o macro se necessario) che riporti in colonna L del foglio "Elenco" il contenuto della cella H35 di ciascun foglio, ma soltanto per i fogli in cui la colonna D non è vuota.
(nell'esempio che allego dovrebbe riportare il contenuto della cella H35 per i fogli PIPPO e TOPOLINO).
Ad eccezione dei primi due e dell'ultimo, il nome dei fogli è sempre uguale ai valori in colonna G.

Spero di essermi spiegato bene e che ci sia qualcuno in grado di aiutarmi!!

Grazie anticipatamente a tutti!!

Andrea.
Post: 548
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
11/04/2018 17:30

Ciao Andrea
per eliminare i Fogli, con preavviso, puoi usare questa macro (attento a che i nomi dei Fogli da NON eliminare corrispondano esattamente a quanto scritto fra i doppi apici nella macro)
Option Explicit
Option Compare Text

Sub Elimina_Fogli()
Dim i As Long
For i = 1 To Sheets.Count
    If Sheets(i).Name <> "Elenco" And Sheets(i).Name <> "Fac-Simile" And Sheets(i).Name <> "Dati" Then
        risp = MsgBox("Elimino il file " & Sheets(i).Name & "?", 4 + vbQuestion, "Domanda")
        If risp = 6 Then Sheets(i).Delete
    End If
Next i
End Sub


Per l'altro problema gradirei qualche chiarimento.
Nei Fogli PIPPO e TOPOLINO le colonne D sono vuote. Ti riferisci, per caso, alla col.D del Foglio Elenco? Ma dove è la corrispondenza tra quanto scritto in col.D di detto Foglio con i Foglio il cui valore è da riportare?

Fai sapere. Ciao,
Mario
[Modificato da Marius44 11/04/2018 17:31]
Post: 3.331
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
11/04/2018 17:42

Ok
Excel 2013
Post: 26
Registrato il: 26/02/2018
Città: ROMA
Età: 32
Utente Junior
Excel 2010
OFFLINE
12/04/2018 17:51

Ragazzi che dire...GRAZIE! [SM=x423030]

@Mario esatto, mi riferivo alla colonna D del foglio Elenco. In colonna D è assegnata una macro che inserisce un flag nella cella soltanto se il foglio è stato creato. (OGNI foglio, ad eccezione di quei tre, è sempre rinominato come le celle in colonna G).

@Raffaele è esattamente ciò che cercavo! come sempre...GRAZIE!
Ho visto che hai utilizzato la formula INDIRETTO con & all'interno(che online è descritta malissimo!)...saresti così gentile da spiegarmi come funziona?

Inoltre ho inserito la seguente macro da inserire in ciascun foglio per cancellare singolarmente il foglio attivo, tuttavia "funziona parzialmente" nel senso che cancella il foglio ma restituisce un errore che, dopo la conferma, blocca tutte le altre macro.
Sapreste dirmi dove ho sbagliato?

Sub EliminaUnFoglio()
Dim NomeFoglio, Risposta
Dim FL As Boolean
Dim WS As Worksheet
NomeFoglio = [F1]
FL = False
For Each WS In Worksheets
If LCase(WS.Name) = LCase(NomeFoglio) Then
FL = True
Risposta = MsgBox("Sicuro di voler eliminare il foglio " & NomeFoglio & "?", vbYesNo, "ATTENZIONE")
If Risposta = vbNo Then Exit Sub
Application.DisplayAlerts = False
Sheets(NomeFoglio).Delete
Application.DisplayAlerts = True
MsgBox "il foglio " & NomeFoglio & " è stao eliminato"
End If
Next
If FL = False Then
MsgBox "il foglio " & NomeFoglio & " non esiste" & vbCr _
& "Impossibile compiere l'operazione"
End If
End Sub



Grazie come sempre!! [SM=x423047]


Post: 3.341
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
12/04/2018 18:55

>>>la seguente macro da inserire in ciascun foglio per cancellare singolarmente il foglio attivo
Io avrei messo un bottone in ogni foglio con un codice scritto in un modulo
vb
Sub Elimina()
ActiveSheet.Delete
End Sub
'casomai
Sub Elimina2()
Application.Displayalert = False
ActiveSheet.Delete
Application.Displayalert = True
End Sub
(VBA senza verifiche).
Excel 2013
Post: 27
Registrato il: 26/02/2018
Città: ROMA
Età: 32
Utente Junior
Excel 2010
OFFLINE
13/04/2018 10:42

Ok così ovviamente funziona ma vorrei far apparire un MsgBox con Yes and No che confermi o meno l'eliminazione di quella scheda (nome scheda SEMPRE in cella C3)e, in caso di risposta affermativa, elimini la scheda e rimanda la visualizzazione al foglio Elenco. Ho provato ma non so perché funziona soltanto la prima volta e dopo va in palla...

Grazie come sempre!
Post: 3.703
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
13/04/2018 11:06

Ciao watera ed un saluto a Raffaele

Basta aggiungere un MsgBox in questo modo

vb
Sub Elimina2()
Dim messaggio
messaggio = MsgBox("Vuoi elininare il foglio?", vbYesNo)
If messaggio = vbYes Then
    Application.DisplayAlerts = False
    ActiveSheet.Delete
    Application.DisplayAlerts = True
End If
End Sub


@Raffaele

E' DisplayAlerts non DisplayAlert [SM=g27828]

Alfredo
Post: 3.344
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
13/04/2018 11:15

Ho cambiato la formula in J4 =SE(O(D4="";G4="");"";INDIRETTO(G4&"!H"&35))
Ps INDIRETTO di norma e un testo, pertanto metto nome+colonna tra "..." + & (il numero)
NB. Per quanto abbia capito, secondo me hai bisogno di un MASTER quando crei fogli
Non ho provato, dovrebbe essere...
vb
Sub Elimina_Fogli3()
Dim Risp As Integer, Sf As Worksheet
Set Sf = Worksheets(ActiveSheet.Name)
Risp = MsgBox(prompt:="Eliminare il foglio? " & ActiveSheet.Name, Buttons:=vbYesNo)
    If Risp = vbYes Then
        Application.Displayalert = False
        Sf.Delete
        Application.Displayalert = True
    Else 'se desideri elimina quest riga
        MsgBox "foglio non eliminato" 'se desideri elimina quest riga
    End If
Set Sf = Nothing
End Sub

Ha ragione alfrimpa(ciao) Displayalerts con s finale (la vecchiaia)
[Modificato da raffaele1953 13/04/2018 11:27]
Excel 2013
Post: 3.704
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
13/04/2018 11:25

Re:
raffaele1953, 13/04/2018 11.15:

Ha ragione alfrimpa(ciao) Displayalerts con s finale (la vecchiaia)



Ma hai la mia stessa età....... [SM=g27828]


[Modificato da alfrimpa 13/04/2018 11:26]

Alfredo
Post: 28
Registrato il: 26/02/2018
Città: ROMA
Età: 32
Utente Junior
Excel 2010
OFFLINE
13/04/2018 11:57

Ragazzi purtroppo ancora non ci siamo... [SM=x423044]
Con la macro di alfrimpa mi restituisce il messaggio di errore in allegato
La macro di Raffaele sembra funzionare ma fa crashare Excel!!

Aiutatemi...
Post: 29
Registrato il: 26/02/2018
Città: ROMA
Età: 32
Utente Junior
Excel 2010
OFFLINE
13/04/2018 11:58

Post: 3.346
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
13/04/2018 12:27

Dentro Dati/Modifica Collegamento c'è un URA PE.XLS che io non ho...
Il Codice và inserito in un MODULO e il mio (tranne s finale) è OK
Pure quello di alfrimpa è OK
Al massimo per sicurezza puoi aggiungere
If Sf.Name <> "Elenco" And Sf.Name <> "Dati" And Sf.Name <> "Fac-Simile" Then
[Modificato da raffaele1953 13/04/2018 12:39]
Excel 2013
Post: 30
Registrato il: 26/02/2018
Città: ROMA
Età: 32
Utente Junior
Excel 2010
OFFLINE
13/04/2018 17:19

Il problema non è nelle formule bensì nel file...
Ma ormai è troppo carico di dati e non posso perdere gli aggiornamenti apportati.
Non so proprio come risolvere...qualsiasi formula inserisco per eliminare il foglio mi restituisce lo stesso errore (anche la più "semplice" suggerita inizialmente da Raffaele)

[SM=x423054]
Post: 3.350
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
13/04/2018 17:27

Ps Nel forum in basso c'+ una chat
Quando mi vedi collegato mandami un msg (se riesco vederlo ti do l'email). Ameno posso verificare l'originale.
Excel 2013
Post: 31
Registrato il: 26/02/2018
Città: ROMA
Età: 32
Utente Junior
Excel 2010
OFFLINE
27/04/2018 10:18

Raffaele purtroppo non sono ancora riuscito a risolvere il problema e non ti ho mai trovato online!

Comunque ho di nuovo bisogno del vostro aiuto!!
Spero stavolta sia possibile...
Ho creato N file ciascuno con il cognome del responsabile che dovrà compilarli e con i fogli all'interno impostati esattamente allo stesso modo, diversi soltanto per numero e nome.
Il nome dei primi due fogli e dell'ultimo è uguale per tutti i file, gli altri file avranno un numero diverso di fogli ma tutti impostati allo stesso modo (esatta corrispondenza tra celle).

L'0biettivo è quello di riportare il contenuto di alcune celle (sempre le stesse) di tutti i file all'interno di un file Excel principale chiamato REPORT.xlsm
Es. nel file ROSSI.xlsm vi sono due fogli, nel file BIANCHI.xlsm vi è soltanto un foglio; all'interno del file REPORT vorrei riportare il contenuto delle celle C13:C30 di ciascun foglio; nella colonna B13:B30 di ciascun foglio vi è un menu a tendina con le stesse voci riportate in colonna nel file REPORT.

Al momento utilizzo un banale CERCA.VERT (vedi allegato) ma ogni volta devo inserire manualmente il nome del file e del foglio!
Magari è possibile scrivere una macro che mi eviti questo lavoro ogni volta...
Spero di essermi spiegato "abbastanza" bene e che qualcuno sia in grado di aiutarmi...

Come sempre grazie infinite a tutti per l'aiuto!!

Andrea.
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 13:50. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com