Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Cambio colore se le giornate lavorative continue sono uguali

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

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Anthony47 » 17/04/19 23:15

Quando hai i turni pronti allora manda in esecuzione la Sub Checkout: i nominativi che hanno 6 giorni consecutivi di turni lavorativi avranno lo sfondo colorato di Rosso, e le giornate che creano questa situazione avranno le scritte in caratteri Rossi (non ho usato lo Sfondo perche' gia' ampiamente manipolato con la formattazione condizionale)

Per inserire la macro nel posto giusto, vedi viewtopic.php?f=26&t=103893&p=647675#p647675
Per le opzioni per mandare in esecuzione una macro, viewtopic.php?f=26&t=103893&p=647678#p647678

Dopo l'inserimento della macro il file va salvato nel formato .xlsm (macro enabled)
Piu' di cosi' non so che dire...
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: 16569
Iscritto il: 21/03/06 16:03
Località: Ivrea

Sponsor
 

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Simo1 » 18/04/19 15:14

Haaaaaa..... Ok ho fatto xo bisogna dare il comando esegui ogni volta dopo l inserimento o qualsiasi modifica per far evidenziare o meno.... Pensavo che come qualsiasi macro andasse in automatico ossia appena riscontava l anomalia segnava subito l'errore
Simo1
Utente Junior
 
Post: 57
Iscritto il: 21/11/18 08:41

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi zsadist » 18/04/19 15:16

non ho tempo per spiegarti come fare, però.. con l'evento change nel codice del foglio puoi farlo
Adattati! L'incapacità di cambiare direzione porta alla sconfitta
zsadist
Utente Junior
 
Post: 76
Iscritto il: 04/04/19 13:48

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Simo1 » 18/04/19 16:41

Emh..... Evento change??? Scusate ma nn sono molto afferrato in excel..... Hehehehe comunque ho provato la macro in un altro foglio con un altra impaginazione ma non funziona anche cambiando la cella di ricerca x il nome nella formula. L ho attivata ovviamente anche dopo la modifica.... :-(
Simo1
Utente Junior
 
Post: 57
Iscritto il: 21/11/18 08:41

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Anthony47 » 19/04/19 01:46

Non e' vero che le macro per definizione si attivano da sole; d'altra parte avevi pubblicato un file con N dipendenti e 31 giorni compilati, mi sembrava un controllo da fare a posteriori...

Se vuoi farlo man mano che introduci i dati allora il codice da usare potrebbe essere:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myC As Range, I As Long, WDCnt As Long, J As Long
'
pPausa = Array("R", "F", "P", "A")          '<<< Le sigle che interrompono la sequenza lavorativa
'
For Each myC In Target
    If myC.Column < 32 Then
    I = Target.Row
        Cells(I, 1).Interior.Color = xlNone
        Cells(I, 1).Resize(1, 32).Font.Color = RGB(0, 0, 0)
        If Cells(I, 1) <> "" Then
            WDCnt = 0
            For J = 2 To 31
                If Cells(I, J) <> "" Then
                    mymatch = Application.Match(Cells(I, J), pPausa, False)
                    If IsError(Application.Match(Cells(I, J), pPausa, False)) Then
                        WDCnt = WDCnt + 1
                        If WDCnt >= 6 Then
                            RepCnt = RepCnt + 1
                            Cells(I, 1).Interior.Color = RGB(255, 0, 0)
                            Cells(I, J).Offset(0, -WDCnt + 1).Resize(1, WDCnt).Font.Color = RGB(255, 0, 0)
                        End If
                    Else
                        WDCnt = 0
                    End If
                Else
                    WDCnt = 0
                End If
            Next J
        End If
    End If
Next myC
End Sub

Va inserito nel "Modulo vba del foglio su cui lavori"; da Excel ci accedi rapidamente facendo tasto dx sul tab col nome del file, con la scelta Visualizza codice.

Il controllo viene fatto sulla riga quando viene modificata, se la colonna A non e' vuota.
Puo' convivere con la Sub Checkout, che rimane da avviare a mano quando si vuole fare un controllo su tuuto il foglio.

Prova e fai sapere...
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: 16569
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Simo1 » 23/04/19 11:05

http://www.filedropper.com/cartel1_1

Scusate ma non ci arrivo proprio.... Ho provato in diverse maniere nn so cosa sbaglio.

Ho postato il file originale, pensavo bastasse una semplice bozza per poi adattarlo ma a quanto pare non è così semplice, almeno per me.... Hehehehe

In pratica compilando il settimane AQ45 AW62 in automatico mi copia I turni sul mensile C8 AD25 ecco. In pratica vorrei che alla compilazione la cella del nome corrispondente al turno che sfora i giorni consegutovi lavorati diventi rosso e così il turno come dovrebbe essere la formula precedentemente postata.

Grazie mille per la pazienza
Simo1
Utente Junior
 
Post: 57
Iscritto il: 21/11/18 08:41

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Anthony47 » 23/04/19 18:30

Hai cambiato il formato dati; inoltre vedo che questo e' un foglio che si alimenta con dati presenti nel file [Servizio.xlsm], quindi teoricamente il lavoro dovrebbe essere fatto sui fogli di quel file (con la macro da avviare a mano, oppure con l'altra che si innescava automaticamente a ogni introduzione/modifica di nuovi dati).
Sul file che hai pubblicato vedo anche la quasi impossibilita' di capire dove finisce l'elenco del personale, cioe' delimitare l'area da controllare.
Torno quindi all'idea della macro che devi lanciare tu (Sub Checkout) quando vuoi controllare lo specchietto prodotto, con questa penultima variante:
Codice: Seleziona tutto
Sub Checkout2()
Dim pPausa, LNomi As String, LastA As Long, I As Long
Dim WDCnt As Long, CZ0 As Long
'
pPausa = Array("R", "F", "P", "A")          '<<< Le sigle che interrompono la sequenza lavorativa
''LNomi = "A5"
'
If Selection.Count < 28 Then
    MsgBox ("Selezionare l'intervallo da verificare, dal cognome all'ultimo gg del mese" & _
      vbCrLf & "Poi riprova")
    Exit Sub
End If
'
LNomi = Selection.Cells(1, 1).Address
CZ0 = Selection.Cells(1, 1).Column
LastA = Selection.Cells(1, 1).Offset(Selection.Rows.Count - 1, 0).Row
''LastA = Cells(Rows.Count, 1).End(xlUp).Row
Range(LNomi).Resize(LastA, 32).Interior.Color = xlNone
Range(LNomi).Resize(LastA, 32).Font.Color = RGB(0, 0, 0)
For I = Range(LNomi).Row To LastA
    WDCnt = 0
    For j = CZ0 + 1 To CZ0 + 32
   mymatch = Application.Match(Cells(I, j), pPausa, False)
        If IsError(Application.Match(Cells(I, j), pPausa, False)) Then
            WDCnt = WDCnt + 1
            If WDCnt >= 6 Then
                Cells(I, CZ0).Interior.Color = RGB(255, 0, 0)
                Cells(I, j).Offset(0, -WDCnt + 1).Resize(1, WDCnt).Font.Color = RGB(255, 0, 0)
            End If
        Else
            WDCnt = 0
        End If
    Next j
Next I
MsgBox ("Controllo completato nell'area Selezionata")
End Sub
Va messa in un Modulo standard del vba (per le istruzioni: viewtopic.php?f=26&t=103893&p=647675#p647675)

Ripeto che la riga marcata <<< va compilata come da commento.

Poi all'occorrenza selezioni la tabella da controllare (dal primo all'ultimo nominativo, fino all'ultimo giorno del mese) e avvii la Sub Checkout2 (per istruzioni e suggerimenti: viewtopic.php?f=26&t=103893&p=647678#p647678)

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: 16569
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Simo1 » 24/04/19 09:12

Grazie Anthony sempre molto esaustivo però purtroppo non è quello che cercavo diventa una cosa troppo macchinosa il dover selezionare il tutto e fare una vero verifica di volta in volta anche perché in ogni caso mi visualizza la cella col nome e i turni della settima sempre in rosso. La whorkshet change si avvicinava molto alle mie esigenze provando la su un altro foglio partendo coi dati dalla colonna A.... Se si potesse adattare quella al nuovo foglio che ho postato in precedenza sarebbe fantastico. Grazie comunque per il fantastico lavoro che stai facendo :-)
Simo1
Utente Junior
 
Post: 57
Iscritto il: 21/11/18 08:41

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Anthony47 » 24/04/19 13:52

diventa una cosa troppo macchinosa il dover selezionare il tutto e fare una vero verifica di volta in volta
Si, capisco, anche se...

La necessita' di selezionare l'area deriva dall'impossibilita' di determinare l'area dei nominativi; se sposti in altra posizione le tabelle sottostanti quelle da elaborare allora si puo' utilizzare la prima versione di Sub Checkout, che determinava in proprio l'area da esaminare.

anche perché in ogni caso mi visualizza la cella col nome e i turni della settima sempre in rosso
I nomi cambiano colore se nel calendario e' presente una situazione di troppe giornate lavorative continuate, come da richiesta. Idem le celle dei turni si colorano se e solo se quella specifica sequenza va oltre il limite di giornate continuative lavorate.
Insomma non capisco da cosa deriva la lamentela.

La whorkshet change si avvicinava molto alle mie esigenze provando la su un altro foglio partendo coi dati dalla colonna A.... Se si potesse adattare quella al nuovo foglio che ho postato in precedenza sarebbe fantastico
La worksheet_Change si applica a cambiamenti introdotti dall'utente, non tramite formule; se preferisci quella soluzione allora devi applicarla al file "Servizio.xlsm", adattando il codice pubblicato alla struttura dati lì utilizzata.

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: 16569
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Simo1 » 24/04/19 14:55

Ok perfetto grazie
Il mio problema più grande è che non conoscendo il linguaggio da sviluppatore non saprei che parametri cambiare sulla Worksheet_Change. Se potresti darmi un input su cosa si riferisce a cosa almeno da potermi fare le modifiche in autonomia.
Grazie ancora
Simo1
Utente Junior
 
Post: 57
Iscritto il: 21/11/18 08:41

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Simo1 » 24/04/19 15:03

C è un altro quesito da risolvere però se nella tabella settimanale compilo il servizio, in automatico mi compila la tabella principale del mese in alto a sinistra.... Ecco... Se compilato in automatico la worksheet non la riconosce mentre se la compilo manualmente si.... Quale può essere il problema? Non riconosce proprio di suo il fatto che venga richiamato da un altra cella? Si può raggirare facilmente? Faccio presente che per renderla funzionante ho eliminato la colonna A altrimenti non funzionava
Simo1
Utente Junior
 
Post: 57
Iscritto il: 21/11/18 08:41

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Simo1 » 24/04/19 15:17

Anthony il primo problema l ho risolto..... Ho provato cambiando i dati a uno ad uno, ripristinandoli e ho capito a cosa corrispondono.... Ed è un gran passo avanti per me.... Hehehehe rimane solo il problema della compilazione automatica... Che alla fine non è altro che ad esempio in C8 all interno ho messo =AQ44
Simo1
Utente Junior
 
Post: 57
Iscritto il: 21/11/18 08:41

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Anthony47 » 25/04/19 15:26

C è un altro quesito da risolvere però se nella tabella settimanale compilo il servizio, in automatico mi compila la tabella principale del mese in alto a sinistra.... Ecco... Se compilato in automatico la worksheet non la riconosce mentre se la compilo manualmente si.... Quale può essere il problema? Non riconosce proprio di suo il fatto che venga richiamato da un altra cella? Si può raggirare facilmente?
Come detto, "La worksheet_Change si applica a cambiamenti introdotti dall'utente, non tramite formule; se preferisci quella soluzione allora devi applicarla al file "Servizio.xlsm", adattando il codice pubblicato alla struttura dati lì utilizzata"

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: 16569
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Simo1 » 07/05/19 21:11

Ok grazie mille.

Una cortesia nella Worksheet_Change qual è il codice di riferimento che riguarda le celle selezionate..... Perché vorrei farla partire dalla riga 5.

Grazie e buona serata
Simo1
Utente Junior
 
Post: 57
Iscritto il: 21/11/18 08:41

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Anthony47 » 08/05/19 18:02

Il codice della Worksheet_Change che ti avevo proposto (vedi viewtopic.php?f=26&t=110516&p=649122#p648922) lavora su colonne da 1 fino a 32, su tutte le righe.
Se vuoi imporre che lavori solo a partire da riga 5 allopra dovrebbe essere sufficiente modificare la riga If myC.Column < 32 Then in
Codice: Seleziona tutto
If myC.Column < 32 and myC.Row >4 Then


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: 16569
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Simo1 » 27/05/19 20:21

Buona sera sono qui di nuovo a rompere.... Hehehehe

Vorrei sapere come si fa nella stringa di comando che gestisce le righe ad esempio

For J = 2 To 31

Mettere delle interruzioni ad esempio fare il calcolo da 2 a 7, da 9 a 10, da 13 a 15, da 20 a 31

Grazie mille
Simo1
Utente Junior
 
Post: 57
Iscritto il: 21/11/18 08:41

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Anthony47 » 28/05/19 11:21

Non so se c'e' una "regola" per individuare i numeri da saltare, dall'esempio mi pare arduo...
Potresti allora sostituire il codice attuale
For j = 2 To 31
'il codice attuale
'il codice attuale
Next j


Con quest'altro:
Codice: Seleziona tutto
myNo = Array(8, 11, 12, 16, 17, 18, 19)         '<<< L'elenco dei numeri da saltare
'
For j = 2 To 31
    If IsError(Application.Match(j, myNo, False)) Then
        'il codice attuale
        'il codice attuale
    End If
Next j

La riga marcata <<< va compilata con i numeri da ignorare

Oppure puoi controllare che il contenuto della cella contenga qualcosa di noto (una data, una stringa, un...); ma per approfondire queste opzioni dovresti pubblicare una file con i contenuti che la macro deve gestire.

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: 16569
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Simo1 » 28/05/19 16:49

In pratica sulla "private Sub worksheet" che si trova qualche riga qui sopra vorrei poter aggiungere la stringa di comando che mi hai messo appena sopra. Visto che sul foglio excel sul quale ci sono i dati le celle di ricerca possono essercene 3 di fila vuote e il conteggio va fatta dalla 4 esempio se da 1 a mi fa il conteggio con i parametri di fermata come R o A, poi da 8 a 11 c'è uno spazio vuoto e il conteggio continuo inizia dalla cella 12 a 19 poi da 23 a 31 e così via.
Grazie mille
Simo1
Utente Junior
 
Post: 57
Iscritto il: 21/11/18 08:41

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Anthony47 » 28/05/19 17:31

In pratica sulla "private Sub worksheet" che si trova qualche riga qui sopra vorrei poter aggiungere la stringa di comando che mi hai messo appena sopra. Visto che sul foglio excel sul quale ci sono i dati le celle di ricerca possono essercene 3 di fila vuote e il conteggio va fatta dalla 4 esempio se da 1 a mi fa il conteggio con i parametri di fermata come R o A, poi da 8 a 11 c'è uno spazio vuoto e il conteggio continuo inizia dalla cella 12 a 19 poi da 23 a 31 e così via.
Perdona, non ho capito granche'...

Allega un file dimostrativo, compreso della macro che usi, e inserisci un paio di questi casi nuovi che dobbiamo gestire.
Partendo dai dati di questo file spiega quali sono i risultati che al momento si ottengono e quali risultati invece si dovrebbero ottenere.

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: 16569
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Cambio colore se le giornate lavorative continue sono ug

Postdi Simo1 » 28/05/19 18:34

Simo1
Utente Junior
 
Post: 57
Iscritto il: 21/11/18 08:41

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "Cambio colore se le giornate lavorative continue sono uguali":


Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti