You are here:--[RISOLTO] Formattazione condizionale dato invisibile ;;;
[RISOLTO] Formattazione condizionale dato invisibile ;;; 2018-11-14T23:20:47+00:00

Home Forum Domande su Excel VBA e MACRO [RISOLTO] Formattazione condizionale dato invisibile ;;;

  • Autore
    Articoli
  • teto21162
    Partecipante
      Post totali: 37
      #6862 |

      Salve ragazzi,

      Lo scopo è rendere non visibile il dato in cella se una condizione non è soddisfatta

      in una cella uso la formattazione condizionale ” la formula è ”  =$U$11=”si”

      con la solita scelta dei colori se la condizione si realizza, altrimenti il dato di cella è colorato di bianco di default.

      Questa soluzione esteticamente funziona ma non è sufficiente a rendere realmente invisibile il dato infatti se seleziono la cella e il settore attiguo il dato appare e appare anche sopra nella barra.

      Ho provato a formattare la cella di default con ;;; ma in questo caso la formattazione non funziona se la condiziona è soddisfatta.

      Quello che mi serve è una formattazione condizionale puntata ad una cela che renda il dato invisibile ;;; se nella cella di riferimento c’è ” no ” e visibile se nella stessa cella c’è ” si ”

      Grazie a tutti

      Teto

      • Questo argomento è stato modificato 5 giorni, 7 ore fa da sid sid.
    • sidsid
      Moderatore
        Post totali: 445

        Non so se ho capito bene la tua esigenza
        1 – seleziona la cella interessata
        2 – formato celle –> protezione –> flag su “nascosta”–>OK
        3 – proteggi il foglio
        Nel caso dovessi proteggere la cella da eventuali cancellature, flag anche su “bloccata”.

      • teto21162
        Partecipante
          Post totali: 37

          Ciao Sid

          vorrei, con la formattazione condizionale poter rendere visibile o invisibile un dato di cella

          Ad esempio se in cella f11 ho un nome  vorrei che quel nome fosse visibile se in cella d11 c’è si e invisibile se in d11 c’è no

          So che formattando la cella con  ;;; si rendono invisibili i dati di quella cella ma non so il modo di legarli ad una condizione.

          Teto

        • sidsid
          Moderatore
            Post totali: 445

            Credo che quello che per vuoi fare te, ci vuole l’aiuto di vba.
            Almeno secondo le mie conoscenze.
            Opterei per l’evento change del foglio solo per la cella D11.

          • sidsid
            Moderatore
              Post totali: 445

              In ogni caso anche con la formattazione personalizzata “;;;” il valore nella cella sarà invisibile, ma nella barra della formula si vedrà. Come già spiegato per evitare questo, il foglio va protetto e la cella interessata nella protezione dovrà avere il flag su “nascosta”

            • sidsid
              Moderatore
                Post totali: 445

                Uno spunto da cui partire
                Attenzione: nella cella D11 devi togliere il flag dall’opzione “bloccata” nella parte relativa alla protezione

                Private Sub Worksheet_Change(ByVal Target As Range)
                
                If Not Intersect(Range("D11"), Target) Is Nothing And Target.Count = 1 Then
                    With Me.Range("F11")
                        Me.Unprotect
                        If Target.Value = "si" Then
                            .NumberFormat = "General"
                            .FormulaHidden = False
                        Else
                            .NumberFormat = ";;;"
                            .FormulaHidden = True
                        End If
                        Me.Protect
                    End With
                End If
                    
                End Sub
              • teto21162
                Partecipante
                  Post totali: 37

                  Ciao Sid,

                  ho provato la macro e naturalmente funziona benissimo nella riga indicata ma ora mi serve ancora un piccolo aiuto.

                  Devo rendere visibile o invisibile tramite la stessa condizione un range molto più vasto per la colonna F dalla riga 11 alla riga 10000 e comunque altri dati in altre 2 o 3 colonne  comunque tutto legato alla stessa condizione.

                  Teto

                • sidsid
                  Moderatore
                    Post totali: 445

                    Semplice: imposta un range con gli intervalli interessati, e inseriscilo nel costrutto With
                    Imposta anche il riferimento alla cella della convalida.
                    Un esempio da adattare ai tuoi intervalli:

                    Private Sub Worksheet_Change(ByVal Target As Range)
                    Dim rConvalida As Range, rng As Range
                    
                    Set rConvalida = Me.Range("D11") ' range della convalida
                    Set rng = Me.Range("F11:F10000,G11:G100,K11:K1000") 'range da rendere invisibile
                    
                    If Not Intersect(rConvalida, Target) Is Nothing And Target.Count = 1 Then
                        With rng
                            Me.Unprotect
                            If Target.Value = "si" Then
                                .NumberFormat = "General"
                                .FormulaHidden = False
                            Else
                                .NumberFormat = ";;;"
                                .FormulaHidden = True
                            End If
                            Me.Protect
                        End With
                    End If
                    Set rConvalida = Nothing
                    Set rng = Nothing
                    
                    End Sub

                    ATTENTO: ricorda che alle celle che vengono formattate , devi togliere il flag “bloccata” prima di proteggere il foglio.

                  • teto21162
                    Partecipante
                      Post totali: 37

                      Ciao Sid,

                      dopo aver inserito la macro nel foglio del mio sistema e adattato alle celle da errore ” utilizzo non valido della parola chiave me.

                      Devo togliere  la spunta di protezione alle celle che contengono la convalida cioè ” si ” o anche le celle alle quali verrà cambiata la formattazione ;;; o general ?

                      Teto

                       

                    • sidsid
                      Moderatore
                        Post totali: 445

                        dopo aver inserito la macro nel foglio del mio sistema e adattato alle celle da errore ” utilizzo non valido della parola chiave me.

                        Sicuro di aver messo il codice nel modulo del foglio, e non in un modulo standard?
                        Sia la cella della convalida, sia le celle che subiscono la formattazione, devono essere SBLOCCATE, quindi senza spunta

                      • teto21162
                        Partecipante
                          Post totali: 37

                          Come cella di convalida intendi quella cella guida che contiene la parola che fa scattare il codice che nel mio caso è si vero?

                          il codice è inserito nello spazio vba del foglio di riferimento che contiene i dati da formattare.

                          All’interno di questo spazio vba ci sono altri codici non verrei che contrastassero.

                          Il codice inserito nel foglio quando dovrebbe scattare? all’apertura del file oppure nel momento in cui si verifica un cambiamento nelle celle di riferimento?

                          Il codice inserito nel foglio (vba ) non da errore semplicemente non succede nulla

                          L’errore al quale mi riferisco è dopo che lo stesso codice ho provato di metterlo in un modulo perchè potrebbe servirmi anche li

                          Teto

                        • sidsid
                          Moderatore
                            Post totali: 445

                            Come cella di convalida intendi quella cella guida che contiene la parola che fa scattare il codice che nel mio caso è si vero?

                            La cella della convalida relativa al codice è D11, che contiene i valori “si” e “no”; quindi quando scegli “si” i valori nelle celle sono visibili; se scegli “no” vengono nascosti

                            All’interno di questo spazio vba ci sono altri codici non verrei che contrastassero.

                            Avevi già in uso l’evento Change del foglio? Se “si” dovrei vedere il codice, altrimenti nessun problema

                            Il codice inserito nel foglio quando dovrebbe scattare? all’apertura del file oppure nel momento in cui si verifica un cambiamento nelle celle di riferimento?

                            viene eseguito al cambio nella cella di convalida

                            L’errore al quale mi riferisco è dopo che lo stesso codice ho provato di metterlo in un modulo perchè potrebbe servirmi anche li

                            Come immaginavo.
                            La parolina chiave “Me” fa riferimento all’oggetto foglio, ma non può essere usata per un modulo standard. La macro è un evento del foglio; i moduli standard non hanno eventi.
                            Ripeto il codice scatta solo se cambia il valore nella cella D11 del foglio in cui si trova la convalida.

                            Nel caso spiega meglio come vorresti usare il codice extra “evento Change”

                          • teto21162
                            Partecipante
                              Post totali: 37

                              Ora la cella di convalida è cz11 il codice come è impostato funziona, quindi se in quella cella c’è si tutti i dati ad esempio del range f11:f10000 si vedono oppure no.

                              Quello che mi serve è fare in modo che il dato in f11 sia visibile o invisibile se la cella cz11 contenga il dato si come anche se f12 sia visibile o invisibile se cz12 contiene si

                              se f13 sia visibile o invisibile se cz13 contiene si

                              ………ecc fino alla riga 10000

                              in pratica come succede se potessi utilizzare la formattazione condizionale.

                              Mi serve per la privacy se ho il consenso il dato sarà visibile altrimenti no

                              Grazie Sid

                               

                              Teto

                              • Questa risposta è stata modificata 1 settimana, 5 giorni fa da  teto21162.
                            • sidsid
                              Moderatore
                                Post totali: 445

                                Quindi non devi nascondere tutto il range F11:F10000, ma solo la cella della riga relativa alla convalida; quindi tu da cz11 a cz10000 hai convalide?

                              • teto21162
                                Partecipante
                                  Post totali: 37

                                  si diciamo che in via teorica il range massimo considerato arriva alla riga 10000 ora sono poco sotto alla riga 1000.

                                  Quindi per rafforzare il mio esempio, se fino a ieri il dato di cella f348 era invisibile in quanto in cella cz348 non è presente il si perchè ancora non ho il consenso sul trattamento dati di quella persona, e oggi lo ottengo inserirò in cz348 il si e immediatamente il dato in f348 diventa visibile.

                                  Questo deve poter accadere per tutti i dati interessati fino alla riga 10000

                                • sidsid
                                  Moderatore
                                    Post totali: 445

                                    Si è così
                                    Però devi chiarire bene una cosa: scegliendo “si” devi nascondere il valore o renderlo visibile?

                                  • teto21162
                                    Partecipante
                                      Post totali: 37

                                      con si lo rendo visibile

                                    • sidsid
                                      Moderatore
                                        Post totali: 445

                                        Questo il codice modificato
                                        ATTENZIONE
                                        Te hai detto che hai più colonne a cui devi applicare questa soluzione; questo codice è funzionante (al momento) soltanto per nascondere i valori in colonna F, tramite le convalide in colonna “CZ”. Se la soluzione funziona, vedremo di adattarlo al resto dei tuoi intervalli.
                                        I range “F11:F10000” e “CZ11:CZ10000” non devono avere la spunta su bloccata.

                                        Private Sub Worksheet_Change(ByVal Target As Range)
                                        Dim rConvalida As Range, rng As Range
                                        
                                        Set rConvalida = Me.Range("CZ11:CZ10000") ' range della convalida
                                        Set rng = Me.Range("F" & Target.Row) 'range da rendere invisibile
                                        
                                        If Not Intersect(rConvalida, Target) Is Nothing And Target.Count = 1 Then
                                            With rng
                                                Me.Unprotect
                                                If Target.Value = "si" Then
                                                    .NumberFormat = "General"
                                                    .FormulaHidden = False
                                                Else
                                                    .NumberFormat = ";;;"
                                                    .FormulaHidden = True
                                                End If
                                                Me.Protect
                                            End With
                                        End If
                                        Set rConvalida = Nothing
                                        Set rng = Nothing
                                        
                                        End Sub

                                        Fa sapere
                                        :bye:

                                      • teto21162
                                        Partecipante
                                          Post totali: 37

                                          Ciao Sid,

                                          il codice funziona bene ora vorrei poter gestire oltre alla colonna F anche la N e  la P

                                          Grazie

                                          Teto

                                        • sidsid
                                          Moderatore
                                            Post totali: 445

                                            Sempre tramite le convalide in colonna CZ?

                                          • teto21162
                                            Partecipante
                                              Post totali: 37

                                              si certo

                                            • sidsid
                                              Moderatore
                                                Post totali: 445

                                                Ora non ho sottomano il pc….così a naso ma potrei sbagliare.

                                                Al posto di

                                                Set rng = Me.Range("F" & Target.Row)
                                                Metti
                                                Set rng = me.range("F" & target.row & ",N" & target.row & ",P" & target.row)

                                              • teto21162
                                                Partecipante
                                                  Post totali: 37

                                                  Ciao Sid,

                                                  per confermarti che l’ultimo codice che mi hai proposto per nascondere contemporaneamente anche dati di altre celle funziona perfettamente.

                                                  Grazie mille dell’aiuto

                                                  Vorrei togliermi una curiosità, il codice come è impostato rende il dato praticamente non presente se nella cella di convalida manca il “SI” con il formato ;;;. Ma se volessi che nelle celle interessate al posto del formato ;;; andasse un testo tipo “senza nome ” come andrebbe modificato?

                                                  Teto  :good:

                                                • sidsid
                                                  Moderatore
                                                    Post totali: 445

                                                    Ma dopo ti sovrascrive il testo esistente

                                                  • teto21162
                                                    Partecipante
                                                      Post totali: 37

                                                      Naturalmente per soddisfare il mio quesito iniziale è perfetto il sistema di convalida con formato ;;; che ti confermo funzionare benissimo anche su colonne multiple.

                                                      Era solo una curiosità per eventuali usi futuri.

                                                      Per il [RISOLTO] io ancora non riesco a vedere il tasto modifica all’inizio della discussione che serve per poter inserire la dicitura stessa.

                                                      Teto

                                                      • Questa risposta è stata modificata 5 giorni, 9 ore fa da  teto21162.
                                                    • sidsid
                                                      Moderatore
                                                        Post totali: 445

                                                        Se sei un normale utente non hai quell’opzione.
                                                        Chiudo io. Ciao

                                                      La discussione ‘[RISOLTO] Formattazione condizionale dato invisibile ;;;’ è chiusa a nuove risposte.

                                                      Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

                                                      Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

                                                      Chiudi