Condividi:        

compilare calendario ferie FE

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

compilare calendario ferie FE

Postdi raimea » 20/04/21 20:34

ciao

tramite una macro vorrei compilare il fgl globale_fe
inserendo in ogni giorno di ferie la sigla FE con sfondo verde

1_partendo dal fgl generale prendo il nominativo di col D
analizzo solo le righe con la sigla fe in cl I
riportero' tante FE quante indicate in col J.

in col J mi fa gia' i conteggi saltando sab_dom_festivi della tabella

2_ in fgl globale_fe dovra iniziare ad inserire FE dalla data di inizio ferie
senza scrivere nulla nei sab_dom_festivi
( vedi esempio della pasqua >>> di arabo gino)

nel file allegato le celle fe sono state compilate manualmente.

https://www.dropbox.com/s/zp0nibd8m19qo1e/globale.rar?dl=0


ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Sponsor
 

Re: compilare calendario ferie FE

Postdi Anthony47 » 21/04/21 12:03

Penso che questa macro fara' il lavoro:
Codice: Seleziona tutto
Sub SpalmaFE()
Dim tSh As Worksheet, gSh As Worksheet
Dim rDate As Range, rHoli  As Range, rNomi As Range
Dim dMatch, nMatch, hMatch
Dim I As Long, J As Date
'
Set tSh = Sheets("globale_FE")
Set gSh = Sheets("generale")
Set rDate = tSh.Range("A5").Resize(1, 500)
Set rHoli = gSh.Range("T7:T30")
Set rNomi = tSh.Range("E6:E100")
gSh.Select
For I = 7 To Cells(Rows.Count, "I").End(xlUp).Row
    If Cells(I, "I") = "FE" Then
        For J = Cells(I, "F") To Cells(I, "G")
            If Weekday(J, vbMonday) < 6 Then
                hMatch = Application.Match(CLng(J), rHoli, False)
                If IsError(hMatch) Then
                    nMatch = Application.Match(Cells(I, "D"), rNomi, False)
                    dMatch = Application.Match(CLng(J), rDate, False)
                    If Not IsError(nMatch) And Not IsError(dMatch) Then
                        tSh.Cells(5 + nMatch, dMatch).Value = "FE"
                        tSh.Cells(5 + nMatch, dMatch).Interior.Color = RGB(0, 255, 0)
                    End If
                End If
            End If
        Next J
    End If
Next I
End Sub

Fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: compilare calendario ferie FE

Postdi raimea » 21/04/21 18:53

ciao

la macro >> SpalmaFE <<
svolge correttamente il suo lavoro
rispettando tutte le varie casistiche descritte.

rimarrebbe da gestire il fgl globale_fe
PRIMA di prelevare i dati con la macro.

vorrei cancellare i dati e togliere lo sfondo vende
nelle giornate LUN_SAB

poi proseguire con il codice.

grazie
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: compilare calendario ferie FE

Postdi Anthony47 » 21/04/21 20:41

vorrei cancellare i dati e togliere lo sfondo vende
nelle giornate LUN_SAB
Anche i Festivi? E poi: ci possono essere celle di altri colori che devono rimanere? E possono esserci celle colorate ma non contenenti "FE"?
Lo chiedo perche' condiziona parecchio la modalita' di esecuzione della macro (e quindi i tempi).

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

Re: compilare calendario ferie FE

Postdi raimea » 21/04/21 20:52

ciao
va cancellato tutto anche sotto i festivi
tranne sotto le domeniche.

ad ora non ci sono celle che contengano qualcosa di diverso di FE
nemmeno di diverse di altri colori.

va lasciato colore e scritte solo sotto le domeniche.

quindi vorrei pulire tutto sotto il LUN_SAB
togliendo tutto e mettendo sfondo bianco

grazie
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: compilare calendario ferie FE

Postdi Anthony47 » 22/04/21 15:21

Allora la prima parte della macro diventa:
Codice: Seleziona tutto
Sub SpalmaFE()
Dim tSh As Worksheet, gSh As Worksheet
Dim rDate As Range, rHoli  As Range, rNomi As Range
Dim dMatch, nMatch, hMatch
Dim I As Long, J As Date
Dim nCtn As Long, fWd As Long                       '+++
'
Set tSh = Sheets("globale_FE")
Set gSh = Sheets("generale")
Set rDate = tSh.Range("A5").Resize(1, 500)
Set rHoli = gSh.Range("T7:T30")
Set rNomi = tSh.Range("E6:E100")
gSh.Select
'                                                   '>>>+++
nCtn = rNomi.Cells(1000, 1).End(xlUp).Row - 5
fWd = Weekday(rDate.Cells(1, 6), 2)
If fWd < 7 Then
    rDate.Cells(2, 6).Resize(nCtn, 7 - fWd).ClearContents
    rDate.Cells(2, 6).Resize(nCtn, 7 - fWd).Interior.Color = xlNone
End If
For I = 6 + 8 - fWd To 500 Step 7
    rDate.Cells(2, I).Resize(nCtn, 6).ClearContents
    rDate.Cells(2, I).Resize(nCtn, 6).Interior.Color = xlNone
Next I
                                                    '<<<+++
'
For I = 7 To Cells(Rows.Count, "I").End(xlUp).Row   'ESISTENTE
'etc
'etc

Ci sono due nuove variabili in uso ed e' stato aggiunto il bloccco >>>+++/<<<+++ per la pulizia di globale_FE

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

Re: compilare calendario ferie FE

Postdi raimea » 22/04/21 18:03

ciao
e' tutto ok

grazie
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago


Torna a Applicazioni Office Windows


Topic correlati a "compilare calendario ferie FE":


Chi c’è in linea

Visitano il forum: Nessuno e 50 ospiti