Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Foglio presenze in stile calendario perpetuo: bloccare una c

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

Foglio presenze in stile calendario perpetuo: bloccare una c

Postdi BSara » 26/06/20 13:50

Buonasera a tutti. Sono in difficoltà con Excel (in ufficio uso il 2013, a casa il 2019) perché non so proprio come far fare, al mio foglio, un certo comportamento.
Ho creato su Excel una sorta di calendario perpetuo delle presenze (i template a disposizione non soddisfavano le mie esigenze) dividendolo in 2 fogli: il primo un elenco di festività, il secondo è così suddiviso:

CELLE A1 e A2 UNITE: ANNO (che cambio manualmente)
Da B1 a NC1 i giorni dell'anno
Da B2 a NC2 i giorni della settimana
Da A3 ad A10 i nomi dei dipendenti della ditta.

Sono riuscita, tramite formattazioni condizionali, a colorare di rosso le celle del fine settimana (riga 2 da colonna B a NC) e le date di festività nazionale impostate nel primo foglio (riga 1 da colonna B a NC). Sono riuscita a trovare la formula per la Pasqua e a gestire gli anni bisestili.

Quello che non sono capace di fare, perché non ne ho le competenze, è bloccare l'inserimento quando sono in presenza di festività e di fine settimana, per tutti i dipendenti (inibirle sia dal punto di vista fisico, che non ci posso scrivere, ma anche visivo tipo che diventano grigie), ovviamente che queste cambino a seconda dell'anno che digito in A. Da quello che ho trovato online dovrei usare il vba, ma non sono capace di costruire la formula.

Mi potete aiutare?

Allego in questo link il file che ho creato, così magari è più chiaro:
https://www.dropbox.com/s/7eyk5vkswkni360/Prova%20Piano%20Ferie.xlsx?dl=0

Grazie a chi riesce ad aiutarmi!

Sara
BSara
Newbie
 
Post: 5
Iscritto il: 26/06/20 13:39
Località: Firenze

Sponsor
 

Re: Foglio presenze in stile calendario perpetuo: bloccare u

Postdi Anthony47 » 26/06/20 14:42

Intanto "Benvenuta nel forum"

Puoi fare tutto con Excel senza dover ricorrere al vba. Ad esempio:
-seleziona l'area destinata a essere compilata (colonne B:NC), da riga 2 in giu' (puoi prevedere altre righe destinate a contenere altri nominativi); io ho usato l'area =$B$3:$NC$20
-avvia la formattazione condizionale, con la regola "Utilizza una formula per..."; come formula ho inserito:
Codice: Seleziona tutto
=E(O(CONTA.SE(Festività!$B$1:$B$20;B$1)>0;GIORNO.SETTIMANA(B$2;2)>5);$A3<>"")

-come formato ho scelto Riempimento in Grigio chiaro
In questo modo avro' formattato in grigio chiaro le giornate corrispondenti al weekend o a festivita'

Poi uso Convalida dati (tad Data, gruppo Strumenti dati):
-sul tab Impostazioni scegli "Personalizzato" e come formula inserisci
Codice: Seleziona tutto
=E(CONTA.SE(Festività!$B$1:$B$20;F$1)=0;GIORNO.SETTIMANA(F$2;2)<6)

-sul tab Messaggio di errore, come Stile scegli "Interruzione" e scrivi come testo del messaggio "Non popolare i giorni festivi " (o altra frase piu' idonea); volendo puoi inserire un messaggio anche nel tab Messaggio di input, e sara' visualizzato quando si seleziona una qualsiasi cella nell'area sottoposta a Convalida (es: "Inserire orario in formato hh:mm; non popolare le giornate non lavorative")

In questo modo quando provi a popolare un Sab, o Dom o festivo l'input sara' rifiutato

Ti segnalo che puoi anche semplificare la formattazione condizionale della riga 1:
-selezioni B1:NC1
-elimini tutte le regola ora impostate
-inserisci la nuova regola:
--come regola scegli "Usa una formula per..."
--come formula usi:
Codice: Seleziona tutto
=CONTA.SE(Festività!$B$1:$B$20;B$1)>0


Ciao, fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 17041
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Foglio presenze in stile calendario perpetuo: bloccare u

Postdi BSara » 26/06/20 16:40

Grazie mille!! Spettacolo!!! Sono molto "basica" nell'uso di excel, mi sarebbe sempre garbato impararlo a modo, ma non avendone mai grosse necessità ed esigenze non mi ci sono mai messa ad impararlo davvero. Non avevo mai usato il tasto di CONVALIDA e anche le formattazioni le ho "imparicchiate" leggendo online, ecco perchè ho creato 13 formattazioni per ciascuna festività.
Mi hai tolto una bella magagna!! Ti ringrazio!!! Sei stato gentilissimo!
BSara
Newbie
 
Post: 5
Iscritto il: 26/06/20 13:39
Località: Firenze

Re: Foglio presenze in stile calendario perpetuo: bloccare u

Postdi BSara » 26/06/20 17:15

Perdona la sfacciataggine: esiste anche un modo per impostare di default le ore lavorate, in modo da intervenire manualmente solo per inserire le ferie?
Mi spiego meglio: alcuni di noi lavorano full time 8 ore, alcuni 6 ore e una collega 4. Esiste modo di fare questa "discriminazione" compilando le giornate lavorative in automatico con le ore che ogni dipendente fa?
BSara
Newbie
 
Post: 5
Iscritto il: 26/06/20 13:39
Località: Firenze

Re: Foglio presenze in stile calendario perpetuo: bloccare u

Postdi Anthony47 » 26/06/20 23:07

Per questo ti servira' invece il vba, cioe' una macro...

A) Nel foglio Festività crea in colonne D:E una tabella con il nome del lavoratore e le sue ore lavorative.
B) Poi fai "tasto dx" sul tab col nome "Planning" e scegli Visualizza codice.
C) Copia il seguente codice e incollalo nella pagina dell'editor delle macro che così e' stata aperta:
Codice: Seleziona tutto
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim myMatch, hDay As Boolean
'
If Weekday(Cells(1, Target.Column), vbMonday) > 5 Or Application.WorksheetFunction.CountIf(Sheets("Festività").Range("B1:B20"), Cells(1, Target.Column)) > 0 Then hDay = True
myMatch = Application.Match(Cells(Target.Row, "A"), Sheets("Festività").Range("D1:D50"), False)
If Not IsError(myMatch) And Not hDay Then
    Target.Value = Sheets("Festività").Range("D1:D50").Cells(myMatch, 2).Value
    Target.NumberFormat = "h:mm;@"
Else
    Beep
End If
Cancel = True
End Sub


D) A questo punto chiudi l'editor delle macro e torna su Excel; seleziona una cella di un lavoratore /data e fai doppioclick; questo dovrebbe inserire nella cella selezionata l'orario che hai inserito su foglio Festività

Il file così preparato dovra' essere salvato in formato ".xlsm", cioe' macro enabled.
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17041
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Foglio presenze in stile calendario perpetuo: bloccare u

Postdi BSara » 29/06/20 10:12

Grazie!! Scusa, ho letto solo ora: ho seguito passo passo. Nella colonna D del foglio Festività ho messo il nome dei dipendenti e nella colonna E il numero delle ore svolte. Inizialmente vedevo una roba strana perché quando facevo doppio click in una cella di giornata lavorativa, mi metteva 0:00 anziché le ore lavorate. Poi ho visto che in alto mi metteva 06/01/1900 0:00 oppure 08/01/1900 0:00... ho notato che la prima cifra si riferiva alle ore quindi ho formattato in maniera diversa le varie celle e ora vedo 8, 6 oppure 4.
Devo necessariamente dare doppio click su ciascuna cella o c'è una sorta di funzione massiva?
BSara
Newbie
 
Post: 5
Iscritto il: 26/06/20 13:39
Località: Firenze

Re: Foglio presenze in stile calendario perpetuo: bloccare u

Postdi Anthony47 » 29/06/20 11:26

Nella tabella Lavoratore/ Ore lavorate le ore devi inserirle in formato "orario", es 8:00

L'automatismo e' fatto per semplificare l'input dei dati, qualcuno che si assuma le responsabilita' di dire che Tizio e' stato presente o no ci vuole, il doppioclick serve a questo.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17041
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Foglio presenze in stile calendario perpetuo: bloccare u

Postdi BSara » 29/06/20 11:43

Chiarissimo e molto gentile!!!
Grazie davvero!! Mi hai semplificato tanto il lavoro!!
BSara
Newbie
 
Post: 5
Iscritto il: 26/06/20 13:39
Località: Firenze


Torna a Applicazioni Office Windows


Topic correlati a "Foglio presenze in stile calendario perpetuo: bloccare una c":


Chi c’è in linea

Visitano il forum: Nessuno e 31 ospiti