Stellar Blade Un'esclusiva PS5 che sta facendo discutere per l'eccessiva bellezza della protagonista. Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

Foglio per orari ingresso/uscita lavoro (Badge)

  • Messaggi
  • OFFLINE
    paoloforumexcel
    Post: 1
    Registrato il: 08/12/2019
    Età: 50
    Utente Junior
    Excel 2011 per MAC
    00 08/12/2019 17:13
    Buonasera a tutti, sono nuovo del forum ma leggendo qua e la ho visto che siete veramente cortesi e bravi nell'aiutare a trovare soluzioni ottimali......
    Fino ad oggi ho sempre usato Excel solamente con le funzioni e mai ho utilizzato il linguaggio di programmazione Visual Basic Editor all'interno della sezione Macro......
    Adesso devo creare un foglio di calcolo per gestire gli orari di ingresso/uscita di un gruppo di persone a lavoro pertanto ho capito che devo farlo con l'ausilio del Visual Basic Editor......
    Cercherò di essere il più chiaro possibile:
    1) Tutto il foglio dovrà essere protetto da scrittura ad eccezione delle celle dove ogni singola persona dovrà inserire la scritta "entrata" / "uscita" e magicamente nella cella accanto dovrà apparire l'orario in cui è stata effettuato l'inserimento..... appena scritto "entrata/uscita" anche quella cella si dovrà bloccare e non dovrà più essere modificata mentre si dovrà sbloccare quella successiva.
    Per cercare di farmi capire meglio allego un file excel per rendere meglio l'ide di quello che dovrei fare.....
    Io avevo fatto un prototipo cercando in giro che allego... l'ho chiamato badge il file.... ma sarebbe meglio fare con le indicazioni del file "dafare" sempre allegato.
    Nel file Badge avevo usato questo:
    Sub Macro1()
    ActiveSheet.Unprotect "ahiahi"
    ActiveCell.FormulaR1C1 = Now()
    ActiveSheet.Protect "ahiahi", DrawingObjects:=True, Contents:=True, Scenarios:=True
    End Sub

    Grazie a tutti!!!😀
  • OFFLINE
    GiuseppeMN
    Post: 3.585
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 08/12/2019 19:48

    Buona sera, @paoloforumexcel;
    il primo File allegato è protetto da Password quindi, al momento, non è utilizzabile.

    Gli altri due File sembrano uguali e possono essere oggetto di analisi; per entrare nel File di ogni Collaboratore consiglio di utilizzare una Password all'apertura del File, in ogni caso considera che le Password in Excel non sono inviolabili.

    @paoloforumexcel, scrive:


    ... Fino ad oggi ho sempre usato Excel solamente con le funzioni e mai ho utilizzato il linguaggio di programmazione Visual Basic Editor all'interno della sezione Macro ...


    Questo mi preoccupa per eventuali aggiornamenti del Codice VBA.

    In ogni caso, domani provo ad analizzare la tua richiesta con più attenzione; ti tengo aggiornato.

     

    A disposizione.

    Buona serta.

    Giuseppe



    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • ABCDEF@Excel
    00 08/12/2019 21:12
    Password 123 Tramite convalida immetti l'orario
  • OFFLINE
    paoloforumexcel
    Post: 1
    Registrato il: 08/12/2019
    Età: 50
    Utente Junior
    Excel 2011 per MAC
    00 09/12/2019 12:34
    Buongiorno e grazie mille per le tempestive risposte.... Intanto volevo solo ringraziarvi e nel pomeriggio, quando da casa potrò aprire gli allegati, verificherò le soluzioni proposte e vi risponderò a tal proposito.
  • OFFLINE
    paoloforumexcel
    Post: 2
    Registrato il: 08/12/2019
    Età: 50
    Utente Junior
    Excel 2011 per MAC
    00 09/12/2019 15:48
    Re:
    ABCDEF@Excel, 08/12/2019 21.12:

    Password 123 Tramite convalida immetti l'orario



    Grazie mille, stavo verificando il funzionamento e mi sembra molto semplice, l'unico inconveniente che ho riscontrato è che se uno per errore invece di cliccare sulla convalida per errore digita dei caratteri appare la scritta "il valore immesso non è incluso nell'elenco dei valori richiesti" e poi a quel punto sia che uno clicchi su riprova o annulla accade che la cella "C" rimane vuota, viene bloccata e automaticamente accanto appare la data e l'orario..... e ovviamente si sblocca la cella sottostante...
    La mia domanda è: è possibile fare in modo che se uno scrive nella cella non venga effettuata nessuna operazione e l'unica accettata sia quella della scelta tra entrata e uscita?

    Per completezza di informazione la mia versione è: Excel 2011 per MAC Versione 14.0.0

    Grazie mille


  • OFFLINE
    paoloforumexcel
    Post: 3
    Registrato il: 08/12/2019
    Età: 50
    Utente Junior
    Excel 2011 per MAC
    00 09/12/2019 16:43
    Buonasera @GiuseppeMn,
    ringraziandoti anticipatamente per l'aiuto vorrei chiederti se possibile alcune varianti alla procedura:

    Ottimo il suggerimento di creare una password per Dip1, però vorrei un meccanismo un pochino più semplice e cioè:
    quando si prova ad aprire il file lui può accettare solo 2 password, quella mia come amministratore che poi mi permetterà di fare tutto e quella di Dip1 che una volta inserita gli permetterà di entrare ma in automatico non dovrà fare nulla: sarà lui che scriverà/metterà entrata o uscita a sua scelta nell'unica cella non protetta e immediatamente il programma dovrà bloccare quella cella, scrivere giorno e ora nelle celle accanto e sbloccare quella sotto per un nuovo inserimento di entrata/uscita, infine fare un salvataggio senza però chiudere il file.

    Ottimo anche in consiglio dell'orario GMT però a quel punto dove prende l'orario? da un server in rete e non più dal clock dell'orologio? potrebbe essere una cosa buona ma se non ci fosse internet in quel momento?

    Ultima cosa, entrando nel tuo file non mi riconosce la password ADMIN quando provo ad accedere al codice VBA..... mentre in fase di apertura lo riconosce.

    La versione che utilizzo è 14.0.0 Excel 2011 per MAC....... che mi sembra però abbia riconosciuto tutto della tua procedura, in alternativa ho un altro PC con win10 e Excel 2016 mi pare.....

    Grazie mille per la disponibilità.
  • OFFLINE
    GiuseppeMN
    Post: 3.592
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 09/12/2019 17:22

    All'apertura la Password è univova; quindi Dip1, Dip2, Dip3 ecc ...
    Dopo l'apertura il file può essere modificato liberamente solo da "ADMIN"
    La Password d'accesso a VBA è proprio "ADMIN" e funziona.



    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    paoloforumexcel
    Post: 4
    Registrato il: 08/12/2019
    Età: 50
    Utente Junior
    Excel 2011 per MAC
    00 09/12/2019 17:57
    GiuseppeMN, 09/12/2019 17.22:

    All'apertura la Password è univova; quindi Dip1, Dip2, Dip3 ecc ...
    Dopo l'apertura il file può essere modificato liberamente solo da "ADMIN"
    La Password d'accesso a VBA è proprio "ADMIN" e funziona.



    Purtroppo.... non so se dipende dalla versione di Excel (ho provato anche altre versioni successive) ma la Password di accesso a VBA (ADMIN) mi dice progetto protetto password non valida 😭😭.....
  • OFFLINE
    GiuseppeMN
    Post: 3.594
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 09/12/2019 19:41

    Con Excel per Windows la Password d'accesso a VBA "ADMIN" garantisco che funziona.


    In ogni caso non è necessario perdere tempo; utilizza la Procedura più semplice.


    Buon Lavoro.


     



    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • ABCDEF@Excel
    10 10/12/2019 00:09
    Premi ALT+F11 e sostituisci il codice
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Range("D:D")) Is Nothing Then
            If Target.Offset(0, 0) = "Entrata" Or Target.Offset(0, 0) = "Uscita" Then
                ActiveSheet.Unprotect "123"
                Application.EnableEvents = False
                Target.Offset(0, 1).Value = Now
                Application.EnableEvents = True
                Target.Offset(0, 0).Locked = True
                Target.Offset(1, 0).Locked = False
                ActiveSheet.Protect "123"
            End If
        End If
    End Sub

    Salva. Per quanto riguarda il MAC non saprei. Prova ALT+F11
    Strumenti/Proprietà di VbaProject/Protezione ad inserire una Password
  • OFFLINE
    rollis13
    Post: 899
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Senior
    Excel 2016-32bit Win11
    00 10/12/2019 18:32
    Un saluto a tutti.

    Dato che non riesco a reperire l'elaborato di GiuseppeMN (non trovo l'allegato) allora mi permetto di suggerire un'aggiunta alla macro di ABCDEF@Excel per gestire il verso indicato dall'utilizzatore visto che, di solito, deve essere diverso da quello precedente. Questa è la macro integrata:
    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    
        If Not Intersect(Target, Range("D:D")) Is Nothing Then
            'verifica verso
            If Target.Row > 10 Then
                If Target.Offset(-1, 0) = Target Then
                    MsgBox "Stai indicando lo stesso verso."
                    Application.EnableEvents = False
                    Target = ""
                    Application.EnableEvents = True
                    Exit Sub
                End If
            End If
            '--------------
            If Target = "Entrata" Or Target = "Uscita" Then
                ActiveSheet.Unprotect "123"
                Application.EnableEvents = False
                Target.Offset(0, 1).Value = Now
                Application.EnableEvents = True
                Target.Locked = True
                Target.Offset(1, 0).Locked = False
                ActiveSheet.Protect "123"
            End If
        End If
        
    End Sub

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    paoloforumexcel
    Post: 5
    Registrato il: 08/12/2019
    Età: 50
    Utente Junior
    Excel 2011 per MAC
    00 10/12/2019 19:05
    ABCDEF@Excel, 10/12/2019 00.09:

    Premi ALT+F11 e sostituisci il codice
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Range("D:D")) Is Nothing Then
            If Target.Offset(0, 0) = "Entrata" Or Target.Offset(0, 0) = "Uscita" Then
                ActiveSheet.Unprotect "123"
                Application.EnableEvents = False
                Target.Offset(0, 1).Value = Now
                Application.EnableEvents = True
                Target.Offset(0, 0).Locked = True
                Target.Offset(1, 0).Locked = False
                ActiveSheet.Protect "123"
            End If
        End If
    End Sub

    Salva. Per quanto riguarda il MAC non saprei. Prova ALT+F11
    Strumenti/Proprietà di VbaProject/Protezione ad inserire una Password

    Grazie mille !!! Adesso è perfetta..... anche se non capisco il significato del codice funziona alla grande!....
    ALT+F11 col MAC non funziona ma ho fatto il classico "copia" "incolla".....

    Ancora Grazie.
  • OFFLINE
    paoloforumexcel
    Post: 6
    Registrato il: 08/12/2019
    Età: 50
    Utente Junior
    Excel 2011 per MAC
    00 10/12/2019 19:13
    Re:
    rollis13, 10/12/2019 18.32:

    Un saluto a tutti.

    Dato che non riesco a reperire l'elaborato di GiuseppeMN (non trovo l'allegato) allora mi permetto di suggerire un'aggiunta alla macro di ABCDEF@Excel per gestire il verso indicato dall'utilizzatore visto che, di solito, deve essere diverso da quello precedente. Questa è la macro integrata:
    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    
        If Not Intersect(Target, Range("D:D")) Is Nothing Then
            'verifica verso
            If Target.Row > 10 Then
                If Target.Offset(-1, 0) = Target Then
                    MsgBox "Stai indicando lo stesso verso."
                    Application.EnableEvents = False
                    Target = ""
                    Application.EnableEvents = True
                    Exit Sub
                End If
            End If
            '--------------
            If Target = "Entrata" Or Target = "Uscita" Then
                ActiveSheet.Unprotect "123"
                Application.EnableEvents = False
                Target.Offset(0, 1).Value = Now
                Application.EnableEvents = True
                Target.Locked = True
                Target.Offset(1, 0).Locked = False
                ActiveSheet.Protect "123"
            End If
        End If
        
    End Sub



    Buonasera @rollis13
    grazie anche a te per l'interessamento.... ho provato anche il tuo di codice per capire che differenze ci fossero ma facendo una prova di inserimento di caratteri errati il programma si è bloccato e ha dato errore.... cmq ti ringrazio ugualmente per la cortesia ma ho risolto con il file di ADCDEF......
  • ABCDEF@Excel
    00 10/12/2019 20:47
    Rimane un particolare...
    A casa usi MAC e invece in ditta usi Windows???
    Ti rimane un grosso difetto nel proteggere il VBA...
    Devi proteggere pure il VbaProject (dove c'è scritto 123, post10)
    Col MAC non saprei come fare
    Ps. Comunque le password in Excel (sono facili)
    [Modificato da ABCDEF@Excel 11/12/2019 04:07]
  • OFFLINE
    GiuseppeMN
    Post: 3.606
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 11/12/2019 19:20
    Un dubbio molto personale.

    Buona sera, @paoloforumexcel;
    premesso che sono veramente felice che abbiate risolto brillantemente, consentimi una precisazione e, contestualmente, una domanda.

    In tutte le mie esperienze lavorative quando si trattava di timbrare il cartellino non ho mai dovuto inserire la data di Entrata/Uscita; inserivo il cartellino o il badge ed era l'apparecchio di timbratura che gestiva Data e Orari.
    Questo è il motivo per cui avevo privilegiato Entrate/Uscite in alternaza automatica senza alcun intervento esterno.

    Ora il mio dubbio è questo, per quale motivo dovrebbe essere il Collaboratore (Dipendente) a gestire il movimento di Entrata o Uscita con il pericolo di trovarsi con due entrate consecutive senza un'uscita intermedia o due uscite consecutive senza alcuna entrata intermedia?

    Che fosse il Collaboratore a decidere sull'entrata e sull'uscita mi sembrava un controsenso o mi sbaglio?

    Grazie dell'attenzione che potrai dedicarmi.

     

    Buona serata.

    Giuseppe



    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • 15MediaObject5,00115 1