Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Eliminare protezione cella "condizionale"

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

Eliminare protezione cella "condizionale"

Postdi S+E » 23/06/16 14:38

Ciao a tutti.
Rieccomi a chiedere aiuto su Excel.
La versione Excel è la 2010.

Il punto di partenza è il seguente.
Ho un file con due fogli.
Il "Foglio1" presenta tutte le celle bloccate ed è protetto.
Nel "Foglio2" ho la possibilità di inserire vari dati.

Ciò che vorrei realizzare è fare in modo che se nella cella E2 del Foglio2 inserisco "SI", si sblocchino in automatico (quindi sia permesso inserire dati) le celle E6 F6 G6 I6 del Foglio1.
Questa cosa dovrebbe succedere per 500 righe.
Quindi se in E3 del Foglio 2 c'è "SI", si sbloccano E7 F7 G7 I7 del Foglio1,
se in E4 del Foglio 2 c'è "SI", si sbloccano E8 F8 G8 I8 del Foglio1...
e così via.

La formattazione condizionale non permette di realizzare quanto voglio.

Immagino che bisognerà lavorare usando VBA.
Qualcuno può darmi un suggerimento?

Grazie
S+E
Win7 + Office 2010 Ita
S+E
Utente Junior
 
Post: 10
Iscritto il: 26/04/16 09:27

Sponsor
 

Re: Eliminare protezione cella "condizionale"

Postdi alfrimpa » 23/06/16 16:47

Ciao

Una domanda: ma se un SI viene cancellato deve riproteggersi la relativa zona nel foglio1?
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 840
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Eliminare protezione cella "condizionale"

Postdi S+E » 24/06/16 07:18

Sì. In caso nelle celle del Foglio2 vi sia un valore diverso da SI, le relative zone del Foglio1 devono riproteggersi.
S+E
Win7 + Office 2010 Ita
S+E
Utente Junior
 
Post: 10
Iscritto il: 26/04/16 09:27

Re: Eliminare protezione cella "condizionale"

Postdi alfrimpa » 24/06/16 14:07

Ciao S+E

Prova con una macro di questo tipo da inserire nel modulo del foglio2

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("e2:e500")) Is Nothing Then
    If Target.Value = "SI" Then
        Worksheets("Foglio1").Unprotect
        Worksheets("Foglio1").Cells.Locked = True
        Worksheets("Foglio1").Range("e" & Target.Row + 4 & ":" & "i" & Target.Row + 4).Locked = False
    End If
End If
Worksheets("Foglio1").Protect
End Sub


E' da testare per bene perché, ad esempio, per il momento viene sbloccato un unico intervallo anche se vi sono due "SI" per cui credo vada ulteriormente modificata.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 840
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Eliminare protezione cella "condizionale"

Postdi alfrimpa » 24/06/16 14:39

Questa invece, sempre da inserire nel modulo del Foglio2 dovrebbe sbloccare gli intervalli del foglio1 per tutte le celle del foglio2 che hanno valore "SI".


Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Dim cel As Range
Set rng = Worksheets("Foglio2").Range("e2:e500")
Worksheets("Foglio1").Unprotect
Worksheets("Foglio1").Cells.Locked = True
If Not Intersect(Target, Range("e2:e500")) Is Nothing Then
    For Each cel In rng
        If cel.Value = "SI" Then
            Worksheets("Foglio1").Range("e" & cel.Row + 4 & ":" & "i" & cel.Row + 4).Locked = False
        End If
    Next cel
End If
Worksheets("Foglio1").Protect
End Sub


Però, ripeto, entrambe le macro vanno testate molto bene in tutte le situazioni possibili.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 840
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Eliminare protezione cella "condizionale"

Postdi S+E » 27/06/16 08:09

Perfetto alfrimpa.
Ho provato a testare il secondo codice e sembra che tutto funzioni alla perfezione.

Ti ringrazio tanto.

Posso rivolgere un'ulteriore domanda?
Ho un altro file, con 6 fogli bloccati (Foglio1, Foglio2, Foglio3, Foglio4, Foglio5 e Foglio6) ed il Foglio7 dove inserire i dati.
Vorrei ottenere lo stesso risultato che mi hai fatto raggiungere con il tuo codice.

Metto il tuo codice nel Foglio7 (ovviamente cambiando i riferimenti da Foglio2 a Foglio7).

Esiste la possibilità, modificando il codice che mi hai fornito, di sbloccare le stesse celle nelle stesse colonne su altri fogli?
Oppure devo ripetere il codice per ogni foglio? C'è un'istruzione che mi possa fare la modifica in modo cumulativo?

Grazie.
S+E
Win7 + Office 2010 Ita
S+E
Utente Junior
 
Post: 10
Iscritto il: 26/04/16 09:27

Re: Eliminare protezione cella "condizionale"

Postdi alfrimpa » 27/06/16 10:25

Cioè tu vuoi che agendo sul foglio7 con i Si e i NO vengano sbloccate le relative celle su tutti gli altri fogli della cartella?.

Allega il tuo file di esempio strutturato come hai detto e vediamo cosa riesco a fare.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 840
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Eliminare protezione cella "condizionale"

Postdi alfrimpa » 27/06/16 15:14

In attesa del file prova questa macro da inserire nel modulo del foglio7

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim rng As Range
Dim cel As Range
Set rng = Worksheets("Foglio2").Range("e2:e500")
For i = 1 To ThisWorkbook.Sheets.Count - 1
    Worksheets("Foglio" & i).Unprotect
    Worksheets("Foglio" & i).Cells.Locked = True
Next i
If Not Intersect(Target, Range("e2:e500")) Is Nothing Then
    For Each cel In rng
        If cel.Value = "SI" Then
            For i = 1 To ThisWorkbook.Sheets.Count - 1
                Worksheets("Foglio" & i).Range("e" & cel.Row + 4 & ":" & "i" & cel.Row + 4).Locked = False
            Next
        End If
    Next cel
End If
For i = 1 To ThisWorkbook.Sheets.Count - 1
Worksheets("Foglio" & i).Protect
Next i
End Sub
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 840
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Eliminare protezione cella "condizionale"

Postdi S+E » 28/06/16 08:43

Ciao.
Ora provo il codice che mi hai dato sul file.

Nel frattempo l'evoluzione della situazione ha complicato ancora un po' il file che devo preparare.

Qui il link al file: https://www.dropbox.com/s/e64pdwru7x7lspb/progetto_B_O.xlsx?dl=0

Quello che vorrei ottenere è che, alla presenza della stringa "SI" nelle varie righe della colonna E del foglio "dipendenti", si sblocchino le corrispondenti celle delle colonne E e G dei fogli gen, feb, mar, apr, mag e giu. Tutte le altre celle devono rimanere bloccate.
E poi che, alla presenza della stringa "SI" nelle varie righe della colonna F del foglio "dipendenti", si sblocchino le corrispondenti celle delle colonne E e G dei fogli lug, ago, set, ott, nov e dic. Anche in questo caso, tutte le altre celle restano bloccate.

E' fattibile?

Grazie per l'aiuto.
S+E
Win7 + Office 2010 Ita
S+E
Utente Junior
 
Post: 10
Iscritto il: 26/04/16 09:27

Re: Eliminare protezione cella "condizionale"

Postdi alfrimpa » 29/06/16 15:11

Ciao S+E

Prova questa macro

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim rng As Range
Dim cel As Range
Set rng = Worksheets("dipendenti").Range("e2:F500")
Application.ScreenUpdating = False
For i = 1 To ThisWorkbook.Sheets.Count - 1
    Sheets(i).Unprotect
    Sheets(i).Cells.Locked = True
Next i
If Not Intersect(Target, Range("e2:f500")) Is Nothing Then
    Select Case Target.Column
        Case Is = 5
              For Each cel In rng
                If cel.Value = "SI" Then
                    For i = 1 To 6
                        Sheets(i).Range("e" & cel.Row + 4).Locked = False
                        Sheets(i).Range("G" & cel.Row + 4).Locked = False
                    Next
                End If
            Next cel
        Case Is = 6
            For Each cel In rng
                If cel.Value = "SI" Then
                    For i = 7 To 12
                        Sheets(i).Range("e" & cel.Row + 4).Locked = False
                        Sheets(i).Range("G" & cel.Row + 4).Locked = False
                    Next i
                End If
            Next cel
    End Select
End If
For i = 1 To ThisWorkbook.Sheets.Count - 1
Sheets(i).Protect
Next i
Application.ScreenUpdating = True
End Sub


Testala per bene perché io non ho modo di farlo e fai sapere.

In cima al modulo della macro metti l'istruzione Option Compare Text così se anche scrivi i SI/NO in minuscolo la macro funziona egualmente.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 840
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Eliminare protezione cella "condizionale"

Postdi alfrimpa » 29/06/16 18:35

Scusa ma invece di metter su tutto questo "ambaradan" di protezione/sprotezione dei fogli e del resto non era meglio usare delle userform in modo che in alcun modo i fogli venissero "toccati"?
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 840
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Eliminare protezione cella "condizionale"

Postdi alfrimpa » 03/07/16 21:19

Richiedere un lavoro e poi "sparire" senza dare il minimo riscontro non mi sembra corretto.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 840
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Eliminare protezione cella "condizionale"

Postdi Flash30005 » 04/07/16 06:21

alfrimpa ha scritto:Richiedere un lavoro e poi "sparire" senza dare il minimo riscontro non mi sembra corretto.


Significa che sei stato bravo perché non ci sono stati problemi
altrimenti il giorno dopo lo avresti rivisto a chiederti di eliminare gli inconvenienti :D
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "Eliminare protezione cella "condizionale"":


Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti