Condividi:        

[Excel 07] Gestione degli orari

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

[Excel 07] Gestione degli orari

Postdi pir4ta » 01/12/09 16:40

Ciao ragazzi, complimenti per il vostro sito ed un grazie 1000 per qualsiasi supporto!!!

ho provato a vedere su google se c'erano formule adatte a questo tipo di "lavoro", ma non essendo una esperta di excel non sono riuscita ad inviduare una formula specifica, e quindi vi pongo il mio problema:

1- Dunque, ho un foglio Excel suddiviso in 2 parti (1°- LUN = giorno della settimana e 2° TOT = tabella con il resoconto degli orari dei dipendenti).
Immagine

2- Sempre nel foglio LUN ho dei settori (HOSTESS-CASSA-CUCINA-SALA), e vorrei che segnando il bordo della riga, mi comparisse automaticamente nel foglio TOT l'orario del DIP "che ho scelto".

Foglio LUN con DIP-A
Immagine

Foglio TOT con nome+orari
Immagine

DOMANDA, è possibile che segnando la riga dalla colonna tot fino alla colonna tot ed inserendo un qualsiasi nome, tipo mario rossi, Excel capisca ed inserisca "in modo automatico" nel foglio TOT il nome Mario Rossi con l'orario scelto nel foglio LUN???

• Per non scrivere tanto e confondervi, ho fatto un piccolo video per farvi capire meglio il mio problema.

Grazie 1000....
video youtube - http://www.youtube.com/watch?v=xS3rpLR9WR8
pir4ta
Newbie
 
Post: 5
Iscritto il: 03/11/09 10:53

Sponsor
 

Re: [Excel 07] Gestione degli orari

Postdi Anthony47 » 01/12/09 21:08

Ciao pir4ta e benvenuto nel forum.
Le "immagini" mancano, e personalmente guardando il filmino non mi sono fatto l' idea esatta della tua domanda. Se non arrivano contributi prova a descrivere l' esigenza, spiegando anche quale e' il tuo grado di autonomia con le macro.

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

Re: [Excel 07] Gestione degli orari

Postdi pir4ta » 02/12/09 00:32

Ciao Anthony47,
Grazie per il tuo intervento e scusate per le IMG, ora sono visibili. Dunque, vi allego il file excel per farvi capire meglio se c'è una soluzione al mio problema.

Riformulo la domanda: vorrei che excel riconoscesse in modo automatico le righe (bordi in grassetto) che traccio nel foglio LUN, inserendo e riconoscendo sia il nome che gli orari impostati.

Vi ricordo che nel foglio LUN ogni colonna vale 1/2 ora.

:arrow: eccovi il file
pir4ta
Newbie
 
Post: 5
Iscritto il: 03/11/09 10:53

Re: [Excel 07] Gestione degli orari

Postdi Flash30005 » 02/12/09 15:53

Ciao Pir4ta

Suppongo che dai singoli fogli settimanali tu voglia ricavarti il foglio totale ma...
nell'immagine pubblicata DIP A è a cavallo delle colonne G e H alla riga 24 (circa) del foglio "LUN" è qui che inserirai il nome di Mario Rossi (G24:H24)?
Perché dici di voler "intercettare" i "bordi in grassetto" (celle con colore nero) e non direttamente le righe precedenti la riga colorata di nero?
esempio: hai colorato la riga 17 e vorresti avere i totali (somma) dalla riga 14 alla riga 16 (Hostess)?
e così anche per la 21 = totali riga 18 + 19 + 20 per Patata?

fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel 07] Gestione degli orari

Postdi pir4ta » 02/12/09 21:57

Ciao Flash e grazie per l'intervento. Dunque, le righe 17,21,35 ecc sono soltanto le divisioni dei vari settori (hostess - cassa - cucina - sala).

esempio: coloro il bordo della riga "D27:K27" e se guardiamo la riga "6" "che corrisponde alla riga degli orari 7-7.30-8.00-8.30-..." risulterebbe l'orario dalle 08:00 alle 12:00.
Immagine

Praticamente seleziono la riga in modo orizzontale come "D27:K27", vorrei che nel foglio TOT mi venisse riconosciuto l'orario che ho impostato prima nel fogli LUN, cioè "08:00-12:00"

in poche parole excel dovrebbe riconoscere tramite numero "impostato come orario" i bordi delle celle che seleziono + il nome del dipendente.

Grazie di cuore
Nilson & Rossella
pir4ta
Newbie
 
Post: 5
Iscritto il: 03/11/09 10:53

Re: [Excel 07] Gestione degli orari

Postdi Flash30005 » 03/12/09 01:24

Domande:
1) Le righe che colorerai saranno sempre le stesse?
es. (preso dal tuo post) sempre la 27? oppure può diventare riga 28?
2) il "DIP A" in quale cella è scritto? Sempre nella riga 26 colonna G e H?
3) In quella/e cella/e scrivi il codice "DIP A" oppure Nome e Cognome?

Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel 07] Gestione degli orari

Postdi pir4ta » 03/12/09 07:28

Ciao Flash,
1) Le righe che colorerai saranno sempre le stesse?

> No, però visto che ci sono le righe CASSA e la righa vuota poi la CASSA e l'altra vuota in modo alternato, potrei in questo caso mettere i nomi nelle righe dove compiono le parole "cassa" e di conseguenza la righa nelle "righe vuote"

2) il "DIP A" in quale cella è scritto? Sempre nella riga 26 colonna G e H?

>Dovrei scrivere il nome in qualsiasi cella in senso orizzontale ovviamente", poi "DIP A" e' solo un nome casuale, ma dovrebbe esserci una lista già con i nomi fissi nel foglio TOT, in modo tale che appena scritto Flash, Mario Rossi ed ecc lui automaticamente mi riconosca il nome.
esempio
Immagine di un lineare FULL di SABATO

3) In quella/e cella/e scrivi il codice "DIP A" oppure Nome e Cognome?

>Scrivo solo il nome, al massimo visto che ho 2 paola, scrivo Paola M. e Paola G.


GRAZIE
Nilson & Rossella
pir4ta
Newbie
 
Post: 5
Iscritto il: 03/11/09 10:53

Re: [Excel 07] Gestione degli orari

Postdi Flash30005 » 03/12/09 11:00

Ehmm
Excel non è un CAD comunque prova a vedere se questa modifica delle tue macro risolve il problema

Codice: Seleziona tutto
Public ColI, ColF, ColN, RigaI, RigaN, RN, ColOI, ColOF As Integer, OraI, OraF As Date
Sub bordo()
'
' bordo Macro
'
' Scelta rapida da tastiera: CTRL+b
'
If ActiveCell.Offset(0, -1).Borders(xlEdgeBottom).LineStyle = xlNone Then
    ColI = ActiveCell.Column()
    RigaI = ActiveCell.Row()
    ColOI = ColI
    Minu = ":00"
    If Cells(6, ColOI).Value = "" Then
        Minu = ":30"
        ColOI = ColI - 1
    End If
    OraI = Format(Cells(6, ColOI).Value & Minu, "hh:mm")
   ' MsgBox OraI
End If
If ActiveCell.Offset(0, 1).Borders(xlEdgeBottom).LineStyle = xlNone Then
    ColF = ActiveCell.Column()
    MinuF = ":00"
    ColOF = ColF
    If Cells(6, ColOF).Value = "" Then
        MinuF = ":30"
        ColOF = ColF - 1
    End If
    OraF = Format(Cells(6, ColOF).Value & MinuF, "hh:mm")
    'MsgBox OraF
End If
If ColI < 15 Then
ColN = 12
Else
ColN = 26
End If
For RN = RigaI To RigaI - 3 Step -1
If Cells(RN, ColN).Value <> "" Then
    RigaN = RN
    Nome = Cells(RigaN, ColN).Value
End If
Next RN

'MsgBox Nome

For CTot = 4 To 16 Step 2
'MsgBox Mid(Worksheets("TOT").Cells(1, CTot).Value, 1, 3)
If Mid(Worksheets("TOT").Cells(1, CTot).Value, 1, 3) = ActiveSheet.Name Then
    ColOT = CTot
    Exit For
End If
Next CTot

For RNTot = 4 To 20
If Nome = Worksheets("TOT").Cells(RNTot, 2).Value Then
    RigaNT = RNTot
    GoTo Rtrov
End If
Next RNTot
Rtrov:
Worksheets("TOT").Cells(RigaNT, ColOT).Value = OraI
Worksheets("TOT").Cells(RigaNT, ColOT + 1).Value = OraF

    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        '.TintAndShade = 0
        .Weight = xlMedium
    End With
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    ActiveCell.Offset(0, 1).Select
End Sub
Sub pausa()
'
' pausa Macro
'
' Scelta rapida da tastiera: CTRL+p
'
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
      '  .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        '.TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        '.TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        '.TintAndShade = 0
        .Weight = xlThin
    End With
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    ActiveCell.FormulaR1C1 = "p"
    ActiveCell.Offset(0, 1).Select
End Sub

E' necessario che i nomi che sono sul foglio settimanale "LUN" corrispondano (anche se abbreviati) a quelli trascritti sul foglio "TOT" e che utilizzi i tasti Ctrl+B e Ctrl+P come da te impostati e i bordi relativi al dipendente vengano eseguiti in una unica volta (senza interruzione).
Comunque ti invio il link del file

Fai sapere
Ciao

P.s. Molte righe di codice della tua macro potrebbero essere eliminate (tipo .ColorIndex = 0 e '.TintAndShade = 0 etc etc)
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel 07] Gestione degli orari

Postdi pir4ta » 03/12/09 19:03

Ciao Flash,
Complimenti, il tuo lavoro è stato fenomenale. Non avevo dubbi che Excel fosse in grado di farlo "ormai fa quasi tutto :lol: ".

In ogni caso c'è un problemino, quando imposto l'orario esempio "paola g. 12-16 - Look IMG" Excel mi da nel foglio TOT colonna dalle, "una data + orario" vedi l'esempio e nella colonna alle l'orario d'inizio cioè le 12. (l'orario invertito insomma)

PS. Il mio livello con le macro è veramente basico, spero di poter smanettare abbastanza e di trovare una soluzione, sperando insieme a voi.

PS2. Mi piacere sapere il ragionamento che hai fatto con la macro "riconosce bordo", se l'hai fatta a mano o se l'hai registrata tramite il pulsantino registra macro. In ogni caso grazie 1.000

Io nel fratempo provo a risolvere.

Nilson & Rossella
pir4ta
Newbie
 
Post: 5
Iscritto il: 03/11/09 10:53

Re: [Excel 07] Gestione degli orari

Postdi Flash30005 » 03/12/09 23:57

Molto probabilmente è male impostata la formattazione (che io non ho modificato lasciando quella impostata da te nel foglio TOT)
perché a me dava e dà tuttora il formato corretto
Immagine
La formattazione corretta non è proprio quella che vedi nell'immagine ma è:
hh:mm

Per il "riconoscimento" del bordo non è stato difficile perché sapendo che il bordo viene eseguito con questo codice:
Codice: Seleziona tutto
.Borders(xlEdgeBottom).LineStyle = xlContinuous

Non ho fatto altro che controllare se, in caso di inizio conteggio colonna, la cella precedente ( con Offset(0, -1) ) non ha bordi con il codice
Codice: Seleziona tutto
If ActiveCell.Offset(0, -1).Borders(xlEdgeBottom).LineStyle = xlNone Then
etc

Fisso la colonna di inizio e procedo, poi, a determinare la colonna fine ( con Offset(0, 1) ) che sarebbe appunto la colonna (cella) successiva alla cella attiva a parità di riga

Nel tuo schema dati ho notato che la riga con bordo si distanzia a volte di 1 riga da quella contenente il nome e a volte 2 righe cosicché ho creato una piccola routine che avviandosi dalla riga attiva retrocede di una riga alla volta per un massimo di 3 righe proprio per ricavarmi il nome
Codice: Seleziona tutto
For RN = RigaI To RigaI - 3 Step -1
If Cells(RN, ColN).Value <> "" Then
    RigaN = RN
    Nome = Cells(RigaN, ColN).Value
End If
Next RN

Ti faccio notare che ho lasciato dei messaggi commentati per testare l'effettivo funzionamento della macro in questo caso
Codice: Seleziona tutto
'MsgBox Nome

se togli il commento ai messaggi potrai fare un po' di pratica per vedere (anche passo passo) cosa succede

Le tue macro attivate dalla scelta rapida Ctrl+B avevano un piccolo inconveniente: non si spostavano alla cella a fianco costringendo l'utente a spostarsi manualmente, con tastiera (freccia a destra) o con il mouse, ora invece lo spostamento avviene, di una colonna, in automatico sempre utilizzando la funzione offset questo permette, oltre a semplificare la scrittura dei bordi in continuo, di ricavarsi la colonna inizio e fine ;)

Spero che con la formattazione abbia risolto il tuo problema altrimenti scrivi di nuovo

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "[Excel 07] Gestione degli orari":


Chi c’è in linea

Visitano il forum: Carletto Ribolla e 128 ospiti