Condividi:        

Sbloccare tabella in foglio protetto

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

Sbloccare tabella in foglio protetto

Postdi marte1503 » 21/01/23 21:23

Ciao a tutti,
ai piedi del messaggio posto la macro che ho creato con il registratore, avrei bisogno di un aiuto per modificarla con questi criteri:

- se in CellaA1 di Foglio "Macchine Libere" è presente la scritta "NO" , Foglio "Macchine Libere" deve rimanere interamente protetto.
- se è presente la scritta "SI" , Foglio "Macchine Libere" deve rimanere protetto ma Tabella 213 (sempre in questo Foglio) deve perdere la protezione.

Non so se può complicare o meno l'operazione, ma dico questo dettaglio:
- La rimozione della protezione da Tabella213, avviene per poter selezionare e tagliare una riga a caso della Tabella in questione tramite l'attivazione di un'altra macro.

- Tabella213 ha un range variabile a seconda delle del numero di macchine presenti
- Tabella213 ha come prima riga il Range B12:S12)

Grazie per l'aiuto


Codice: Seleziona tutto
Sub Filtra_Vendite_Confermate_Magazzino()
'
' Filtra le MAcchine con vendita già confermata Macro

'

'
    Application.ScreenUpdating = False
    ActiveSheet.Unprotect
    ActiveSheet.ListObjects("Tabella213").Range.AutoFilter Field:=18
    ActiveSheet.ListObjects("Tabella213").Range.AutoFilter Field:=10
    ActiveSheet.ListObjects("Tabella213").Range.AutoFilter Field:=9
    ActiveSheet.ListObjects("Tabella213").Range.AutoFilter Field:=3
         ActiveSheet.ListObjects("Tabella213").Range.AutoFilter Field:=2
    ActiveSheet.ListObjects("Tabella213").Range.AutoFilter Field:=3, Criteria1 _
        :="Venduta"
   
     Range("G2").Select
    ActiveCell.FormulaR1C1 = "Vendita Confermata"
    Selection.Font.Size = 18
    Selection.Font.Bold = True
    With Selection.Font
        .Color = -16776961
        .TintAndShade = 0
    End With
    Selection.Font.Underline = xlUnderlineStyleSingle
    Range("B2:E2").Select
    Selection.ClearContents
    Range("A1").Select
    ActiveSheet.Protect
    Application.ScreenUpdating = True
   
End Sub
'
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Sponsor
 

Re: Sbloccare tabella in foglio protetto

Postdi Anthony47 » 22/01/23 13:19

La tua domanda (come proteggere il foglio lasciando pero' la possibilita' di selezionare e tagliare una riga a caso della Tabella in questione tramite l'attivazione di un'altra macro) mi lascia perplesso, perche' mi pare che gia' stai usando ActiveSheet.Unprotect /Protect all'inizio e fine di una macro; quindi la prima risposta e': usa ActiveSheet.Unprotect /Protect anche in quella macro.

Un'altra alternativa e' proteggere il foglio lasciando pero' mano libera alle modifiche da macro. A questo scopo devi impostare questa caratteristica all'apertura del file; esempio:
Codice: Seleziona tutto
Private Sub Workbook_Open()
Sheets("Foglio4").Protect Password:="segreta", UserInterFaceOnly:=True
End Sub

Va messa nel modulo QuestaCartellaDiLavoro /ThisWorkbook; Salva il file, chiudi e riaprilo: a questo punto tutte le macro sono libere da vincoli posti dalla protezione, senza doversi preoccupare di usare ActiveSheet.Unprotect /Protect
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Sbloccare tabella in foglio protetto

Postdi marte1503 » 22/01/23 15:19

Buon giorno Anthony,
Grazie per l'aiuto.

La seconda soluzione che mi hai proposto non fa a caso mio perchè funziona solo la prima volta che attivo una macro, poi rimane tutto modificabile. A me capita, dopo aver tagliato la riga dalla Tabella e averla spostata altrove, di tornare indietro nella Tabella e selezionare una nuova riga da tagliare, ma a quel punto trovo l'intero foglio senza protezione, non solo la Tabella.

Non so nemmeno se quello che vorrei ottenere sia o meno fattibile, provo a spiegare meglio.

In realtà l'informazione "activesheet.unprotect" l'ho usata ma non mi piace perchè rimuove la protezione da tutto il Foglio, non soltanto da Tabella213.

Visto che il Foglio, oltre alla Tabella contiene dati e formule che se fossero "toccate" o cancellate per errore comporterebbero problemi in altre parti del programma vorrei che:

- La rimozione della protezione dalla Tabella 213 avvenisse solo se in Cella A1 fosse presente la scritta "Sì" , lasciando protetto il resto del foglio

Semplificando, queste sono le informazioni che vorrei aggiungere in testa alla macro postata:

Se A1 ="Sì" rimuovi protezione da Tabella213 ma lascia protetto il resto del Foglio

Può essere fattibile? :-?

Grazie ancora per l'aiuto
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: Sbloccare tabella in foglio protetto

Postdi Anthony47 » 22/01/23 17:21

La protezione con UserInterFaceOnly:=True consente solo alle macro di modificare il foglio, l'utente e' bloccato. Se l'utente si trova il foglio sprotetto magari e' perche' qualche macro non l'ha riprotetto dopo averla sprotetto (ma con UserInterFaceOnly:=True le macro non hanno piu' bisogno di fare Unprotect /Protect!).
Se pensi che le macro possano sbagliare non sei in torto; ma la fase di debug serve proprio a garantire che le cose associate al codice facciano le cose che sono state progettate per fare: perche' il loro comportamento e' deterministico e non probabilistico (al contrario del comportamento di un umano).

Comunque non conosco un metodo per liberare totalmente una tabella e proteggere il resto del foglio; ad esempio con queste impostazioni di "consenti":
    Consenti Inserimento righe
    Consenti Cancellazione righe
    Consenti Inserimento colonne
    Consenti Cancellazione colonne
si riesce a inserire righe e colonne ma non a cancellarle; ne' si riesce a inserire righe o colonne all'interno di una tabella (col comando Inserisci /Righe o Colonne); e ovviamente non si riesce a cancellare righe o colonne della tabella

Insomma secondo me il modo piu' sicuro e' usare UserInterFaceOnly:=True
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Sbloccare tabella in foglio protetto

Postdi marte1503 » 23/01/23 19:53

Grazie per le informazioni!

Prima di provare ad applicare i tuoi consigli mi piacerebbe fare un'ultima prova, ho trovato un modo talmente brutto e rozzo per proteggere dati e formule che sicuramente tu non saresti mai arrivato a pensare :lol: :lol: ma sembra assolvere benissimo il suo compito :) mi occorre però una riga di codice per rimuovere la protezione che spero tu mi possa dare, sempre ammesso che si possa fare
sempre da mettere in testa alla mia macro:

- se "A1"= "Sì" rimuovi la protezione (questa volta da tutto il foglio) , se A1="NO" messaggio "non è possibile rimuovere la protezione" (per la seconda ipotesi ho già un piano..) :idea:

Grazie
Ciao
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: Sbloccare tabella in foglio protetto

Postdi Anthony47 » 23/01/23 20:48

Non voglio conoscere i dettagli; il codice:
Codice: Seleziona tutto
If Sheets("FoglioX").Range("A1").Value = "Sì" Then
    Sheets("FoglioX").Unprotect "segreta"
ElseIf Sheets("FoglioX").Range("A1").Value = "NO" Then
    MsgBox ("Non è possibile rimuovere la protezione")
End If


Attenzione, cheè scritto con l'accento grave, come ordina l'Accademia della Crusca; se la cella contiene Si non vale.
Magari conviene mettere una convalida per evitare che qualcuno scriva Si e qualcun'altro scriva Sì... O no?
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Sbloccare tabella in foglio protetto

Postdi marte1503 » 23/01/23 21:12

Grazie 1000 Antony!
Non ho questo tipo di problema perché la scritta no o si viene inserita tramite macro
Ciao, a presto
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como


Torna a Applicazioni Office Windows


Topic correlati a "Sbloccare tabella in foglio protetto":


Chi c’è in linea

Visitano il forum: Nessuno e 55 ospiti