Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

inserimento rip. e perm.

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

inserimento rip. e perm.

Postdi angelo72 » 14/01/14 10:39

Salve a tutti, avrei due piccoli problemi che non riesco a venirne fuori vista la mia poca conoscenza del vba.
Questito 1:
In questo forum ho trovato una formula di Tribuno sul calcolo dei riposi e permessi "sistema di lavoro 6+1+1" che ho modificato un pochino alla mie esigenze.
Però ciò che avrei di bisogno è questo:
in un Userform ho inserito una TextBox9 dove al suo interno dovrò digitare la data da cui calcolarmi i giorni di riposo e permesso ,ed un
pulsante "inserisci Riposi/Permessi".
Poichè ogni foglio è associato al nome di un dipendente "es. Rossi_Mario, Brambilla_Michele,ecc...", vorrei che quando effettuo la scelta dalla combobox2 - il nome
del dipendente- " che equivale al suo foglio" ed inserisco la data nella Textbox9, vada a calcolarmi e registrarmi i riposi e permessi nel foglio scelto
dalla Combobox2. La data che inserisco nella Textbox9, deve anch'essa essere registrata nel foglio scelto dalla Combo2, nella cella K1.
Altrimenti dovrei creare tanti moduli e pulsanti quanto sono i fogli dipendenti "un disastro".


La formula di Tribuno:

Codice: Seleziona tutto
Sub Crea_Riposi_Permessi()
    Application.ScreenUpdating = False
    Check = 0 ' 0
    For y = 2 To 3  ' foglio scelto (3) che equivale al foglio di Brambilla_Michele
        Primo = Sheets("Brambilla_Michele").Range("k1") ' dalla data inserita nella cella K1, calcola il primo riposo e permesso
       
        i = 4
        Do While IsDate(Sheets(y).Cells(i, 1))
            If Sheets(y).Cells(i, 1) >= Primo Then
                If Sheets(y).Cells(i, 1) / 8 - Primo / 8 = Int(Sheets(y).Cells(i, 1) / 8 - Primo / 8) Then
                    If IsDate(Sheets(y).Cells(i, 1).Value) Then Sheets(y).Cells(i, 6) = "Riposo" ' per scrivere nella colonna 2 sostituire 6 con 2
                    If IsDate(Sheets(y).Cells(i + 1, 1).Value) Then Sheets(y).Cells(i + 1, 6) = "Permesso"  ' per scrivere nella colonna 2 sostituire 6 con 2
                End If
            End If
            i = i + 1
        Loop
     Next y
     
    Application.ScreenUpdating = True
End Sub


Quesito 2:

Se inserisco i riposi e permessi nella colonna 2 "B", del foglio dipendente scelto dalla Combobox2, quando vado per inserire dei dati, me li inserisce
dall'ultima riga libera dopo l'ultimo riposo e permesso inserito. Come mai? dove sbaglio?
Quello che avrei di bisogno e che scrivesse i dati dalla prima riga libera. Es. Se in B4 ho Riposo in B5 Permesso deve inserirmi i dati dalla prima riga libera
che in questo caso e B6.

Incollo qui il codice della Combobox2:

Codice: Seleziona tutto
Private Sub ComboBox2_Change()
Dim uv As Integer, i  As Integer   ' i
On Error Resume Next

UserForm1.Caption = ComboBox2.Text

For i = 1 To ThisWorkbook.Sheets.Count  ' 1
    If Sheets(i).Name = ComboBox2 Then
    uv = Sheets(i).Range("B" & Rows.Count).End(xlUp).Row
        If uv >= 34 Then
        Me.TextBox5 = "Turno completo"
        Me.TextBox6 = Sheets(i).Cells(35, 5)
        Me.TextBox10 = Sheets(i).Cells(2, 2)
        Me.Textbox8 = Sheets(i).Cells(2, 2)
        Else
    Me.TextBox5 = Sheets(i).Range("A" & uv + 1).Text
    Me.TextBox6 = Sheets(i).Cells(35, 5)
    Me.TextBox10 = Sheets(i).Cells(2, 2)
    Me.Textbox8 = Sheets(i).Cells(2, 2)
   
    Exit For
    End If
    End If
Next i

End Sub

Grazie a tutti.....
angelo72
Utente Junior
 
Post: 70
Iscritto il: 28/10/13 17:04

Sponsor
 

Re: inserimento rip. e perm.

Postdi Anthony47 » 14/01/14 23:47

Forse e' meglio che alleghi un file esemplificativo su cui lavorare, altrimenti uno deve prima mettere in conto di capire la logica di quelle macro e prepararsi un ambiente di test; cosa che io mi riprometto di fare appena mi avanza del tempo che non so come impiegare (stima corrente, entro il 2020) :D

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: inserimento rip. e perm.

Postdi angelo72 » 15/01/14 13:18

Hai ragione Anthony e grazie per avermi risposto.
Allego le indicazioni del download del file....

http://www.filedropper.com/turni93

<a href=http://www.filedropper.com/turni93><img src=http://www.filedropper.com/download_button.png width=127 height=145 border=0/></a><br /><div style=font-size:9px;font-family:Arial, Helvetica, sans-serif;width:127px;font-color:#44a854;> <a href=http://www.filedropper.com >file storage online</a></div>

P.s. non sapendo quale ho inserito entrambi risultati che mi ha dato il sito.
Grazie
angelo72
Utente Junior
 
Post: 70
Iscritto il: 28/10/13 17:04

Re: inserimento rip. e perm.

Postdi angelo72 » 17/01/14 11:46

Salve a tutti, io sto continuando a fare delle prove, ma niente di che....
Resto in attesa in un Vostro aiuto.
Grazie a tutti
angelo72
Utente Junior
 
Post: 70
Iscritto il: 28/10/13 17:04

Re: inserimento rip. e perm.

Postdi Anthony47 » 18/01/14 03:20

Premetto che non mi sono mai emozionato di fronte al problema del calcolo dei turni: in genere queste cose si fanno conoscendo le esigenze dell' azienda e delle persone, informazioni che in genere solo gli addetti padroneggiano.

Nel caso in questione, la macro che indichi (Crea_Riposi_Permessi) e' disegnata per lavorare su piu' fogli [For y = 2 To 3 / Sheets(y) ], mentre tu parli di 1 foglio per ogni dipendente. E' evidente cioe' che la macro fu progettata da Tribuno su una struttura dati diversa dalla tua, quindi non ho idea di che adattamenti fargli.

La seconda macro che indichi e' quella che compila la userform1 quando in combobox2 scegli un nominativo; non fa l' opposto (compilazione del foglio). Quella che compila il foglio e' la Private Sub CommandButton1_Click di userform1, che (da una simulazione fatta) accoda i turni sulla prima riga libera.
E questo corrisponde a quello che chiedi:
Quello che avrei di bisogno e che scrivesse i dati dalla prima riga libera. Es. Se in B4 ho Riposo in B5 Permesso deve inserirmi i dati dalla prima riga libera che in questo caso e B6.

Nel file pubblicato pero' scrivi una cosa diversa, da cui si deduce che i riposi sono messi in modo preventivo nel calendario, occupando cosi' (mettiamo) i giorni 1-2, 9-10, 17-18 e 25-26; in questo caso, allora e' opportuno che il calcolo della riga su cui scrivere non venga fatto (nella Sub CommandButton1_Click di userform1) con
uv = Sheets(i).Range("B" & Rows.Count).End(xlUp).Row
ma con
uv = Sheets(i).Range("B2").End(xlDown).Row

Piu' di queste considerazioni non sono in grado di fare. Mi spiace

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: inserimento rip. e perm.

Postdi angelo72 » 18/01/14 14:16

Grazie Anthony.
Infatti, la macro di tribuno è fatta per lavorare anche su tutti i mesi dell'anno.
Questa cosa lo già fatta, nel senso che ho creato un file excel con fogli chiamamti per i mesi dell'anno es. gen., feb, ecc.. calcolandomi tutti i riposi/permesso per tutto l'anno.
Detto questo, pensavo che si potesse creare/modificare una macro che facesse lo stesso calcolo (riposi/permesso) a differenza che, invece di inserire il nome del foglio dentro la macro "modulo4" , si potesse abbinare alla scelta della Combo2. Però come immaginavo e dalla tua risposta, deduco che non sia possibile (Pazienza).

Per il 2° quesito effettivamente non sono stato molto chiaro, però vedo che hai capito qual'era il mio problema.
Questo grazie alla tua conoscenza nel linguaggio di programazione.
Infatti, grazie al tuo suggerimento ho modificato la riga (nella Sub CommandButton1_Click di userform1)

uv = Sheets(i).Range("B" & Rows.Count).End(xlUp).Row
con
uv = Sheets(i).Range("B2").End(xlDown).Row

L'unico problema riscontrato era che il contatore:Giornata di Turno-in "textbox5" era fermo nel senso che non andava
avanti nella lettura del giorno. Quindi, inserendo la tua riga anche nella combobox2, ho risolto il problema.
Adesso posso inserire preventivamente i Riposi/Permessi nella 2° colonna ("B" foglio dip.) con il contagiorni che funziona
e quando trova scrittto nella cella Riposo o permesso mi passa alla successiva prima riga libera.

Per il primo quesito cercherò di realizzare o quanto meno a pensare ad un'idea (da condividere con Voi) che, possa risolvere il fatto di creaare su ogni foglio dipendente un pulsante ed un modulo per il calcolo dei Riposi/permessi.
Se a qualcuno li venga in mente qualche idea, ne sarei grato.
Grazie davvero tanto Anthony per avermi aiutato a risolvere il secondo quesito che non era di poco conto....
By Angelo
angelo72
Utente Junior
 
Post: 70
Iscritto il: 28/10/13 17:04


Torna a Applicazioni Office Windows


Topic correlati a "inserimento rip. e perm.":


Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti