Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Macro turni sostituzione new

Ultimo Aggiornamento: 24/10/2022 10:17
Post: 79
Registrato il: 25/05/2015
Età: 53
Utente Junior
2007
OFFLINE
20/10/2022 04:15

Salve a tutti, sono di nuovo qui a chiedere il vostro aiuto, finalmente grazie al vostro aiuto avevo messo insieme un file Excel quasi ottimo per la compilazione dei turni di lavoro, ovviamente come sempre quando questo succede ti stravolgono tutto.
Purtroppo anche se la voglia di studiare sarebbe tanta il tempo è zero, e la richiesta richiede un livello che temo non raggiungerò mai.
Di seguito una descrizione ed il quesito:
Il foglio Excel contiene una serie di lettere che formano il turno di lavoro , le colonne sono i giorni, le righe i nomi ad ogni nome 2 righe.
Le lettere da prendere in considerazione sono D,M,P.
Leggendo il turno secondo le colonne, troverete che si ripetono queste sequenze 6 D, 5 D e 1M e 1P, 4 D e 2 M e 2 P e così via man mano che calano le D aumentano le P e le M.

Io vorrei che se possibile mi creaste una macro che in maniera automatica, assegnasse alle D i numeri da 1 a 6 (cioè D1-D2-D3-D4-D5-D6) se ce ne sono 6 e ovviamente 1 a 5 se ce ne sono 5 e così via, questo prendendo in esame ogni singola colonna , ma dovrebbero essere assegnate in maniera casuale nella colonna cioè non sempre il D1 deve essere la D che si trova nella riga con numero inferiore (cioè per prima), ma anche centrale o in basso, insomma a caso.
Ho allegato il file di esempio nel quale ho già modificato le D, evidenziandone le colonne in azzurro e scrivendole nelle celle in grassetto.

Secondo voi è fattibile?

Mi sa che ho allegato troppi file ma non riesco a togliere quelli in eccesso (che figuraccia scusate).

Grazie comunque per l'aiuto.
Post: 6.991
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
20/10/2022 10:36

Ciao Fabio, ma poi perdi il conteggio alla riga 68, sostituendo la D con D1-2-3-etc.., inoltre il D1-2-3 esistenti diventeranno doppioni

inoltre mi spieghi per "D" cosa si intende nel turno, poi chi compila i turni, perche si potrebbe fare questa differenza in fase di compilazione e non dopo modificando le "D"

Ciao By Sal (8-D
[Modificato da by sal 20/10/2022 10:41]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 79
Registrato il: 25/05/2015
Età: 53
Utente Junior
2007
OFFLINE
20/10/2022 21:20

Re:
by sal, 20/10/2022 10:36:

Ciao Fabio, ma poi perdi il conteggio alla riga 68, sostituendo la D con D1-2-3-etc.., inoltre il D1-2-3 esistenti diventeranno doppioni

inoltre mi spieghi per "D" cosa si intende nel turno, poi chi compila i turni, perche si potrebbe fare questa differenza in fase di compilazione e non dopo modificando le "D"

Ciao By Sal (8-D



" poi chi compila i turni, perche si potrebbe fare questa differenza in fase di compilazione e non dopo modificando le "D""
siamo in due a fare i turni, allora il turno lo fa il capoturno, io decido i ruoli all'interno del turno, ma questo è irrilevante ai fini della macro che mi serve.
In definitiva una volta assegnato i vari d1 d2 d3 etc. , cercherò di adattare una macro fornitami da un altro utente del forum per convertire le d1 etc. in es. M nella cella del D1 e P nella cella sottostante e così via.
ma cerco di fare le cose un passo alla volta perchè sono un pò complesse.

"Ciao Fabio, ma poi perdi il conteggio alla riga 68, sostituendo la D con D1-2-3-etc.."
i contatori servono solo nel turno originale , nel turno modificato dalle macro ne farò altri.

"inoltre mi spieghi per "D" cosa si intende nel turno"
la D vuol dire mattina +pomeriggio 12 0re filate che viene sempre smezzato poi da me.

spero di avre chiarito tutto altrimenti dimmelo
ciao


Post: 6.996
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
21/10/2022 10:48

Ciao Fabio, non so perche devi fare un ulteriore passaggio, la macro che ti propongo elimina il passaggio D1-2-3-etc.., visto che sono alternativi "M-P" la macro converte il primo "D" in "M" ed il secondo "D" in "P", questo un esempio del prima e dopo



la macro grezza è questa

Sub converti()
Dim r, c, d, x, y, k, rng

'rng = Range("A1:AE67")
k = 0
For x = 2 To 31
  For y = 2 To 67
    Cells(y, x).Select
    d = Cells(y, x)
    If Mid(d, 1, 1) = "D" And k = 0 Then
      Cells(y, x) = "M"
      k = 1
    ElseIf Mid(d, 1, 1) = "D" And k = 1 Then
      Cells(y, x) = "P"
      k = 0
    End If
  Next y
Next x
End Sub


ma mi resta un dubbio essendo sequenziali "M-P" quando cambia colonna non incomincia con "M" ma nel caso la colonna precedente finisca con "M" allora la colonna successiva incomincia con "P" certamente dove sono le "D".

nel caso deve incominciare sempre con "M" mattina allora bisogna spostare "K = 0" tra i primi 2 For, in questo modo ogni colonna incomincia con "M" dove si trova la "D"

fammi sapere se va bene in questo modo, anche se sono perplesso del perche sviluppi la cosa per colonna e non per riga, in quando ogni riga è un nominativo e quindi, con questo metodo, sicuramente capiterà che farà 2 mattine di seguito o due pomeriggi, cosa che non succederà se lo sviluppi per riga.
anche se poi potrà succedere un ulteriore problema se il nominativo è addetto ad una attrezzatura, la stessa potrà non essere utilizzata per il turno errato
il problema va visto globalmente e non singolarmente.

Ciao By Sal (8-D

[Modificato da by sal 21/10/2022 10:57]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 80
Registrato il: 25/05/2015
Età: 53
Utente Junior
2007
OFFLINE
23/10/2022 18:08

Re:
by sal, 21/10/2022 10:48:

Ciao Fabio, non so perche devi fare un ulteriore passaggio, la macro che ti propongo elimina il passaggio D1-2-3-etc.., visto che sono alternativi "M-P" la macro converte il primo "D" in "M" ed il secondo "D" in "P", questo un esempio del prima e dopo



la macro grezza è questa

Sub converti()
Dim r, c, d, x, y, k, rng

'rng = Range("A1:AE67")
k = 0
For x = 2 To 31
  For y = 2 To 67
    Cells(y, x).Select
    d = Cells(y, x)
    If Mid(d, 1, 1) = "D" And k = 0 Then
      Cells(y, x) = "M"
      k = 1
    ElseIf Mid(d, 1, 1) = "D" And k = 1 Then
      Cells(y, x) = "P"
      k = 0
    End If
  Next y
Next x
End Sub


ma mi resta un dubbio essendo sequenziali "M-P" quando cambia colonna non incomincia con "M" ma nel caso la colonna precedente finisca con "M" allora la colonna successiva incomincia con "P" certamente dove sono le "D".

nel caso deve incominciare sempre con "M" mattina allora bisogna spostare "K = 0" tra i primi 2 For, in questo modo ogni colonna incomincia con "M" dove si trova la "D"

fammi sapere se va bene in questo modo, anche se sono perplesso del perche sviluppi la cosa per colonna e non per riga, in quando ogni riga è un nominativo e quindi, con questo metodo, sicuramente capiterà che farà 2 mattine di seguito o due pomeriggi, cosa che non succederà se lo sviluppi per riga.
anche se poi potrà succedere un ulteriore problema se il nominativo è addetto ad una attrezzatura, la stessa potrà non essere utilizzata per il turno errato
il problema va visto globalmente e non singolarmente.

Ciao By Sal (8-D




Ciao , intanto ti ringrazio del tempo che mi dedichi, ti rispondo sperando di essere più chiaro possibile.

1)
"Ciao Fabio, non so perche devi fare un ulteriore passaggio, la macro che ti propongo elimina il passaggio D1-2-3-etc.., visto che sono alternativi "M-P" la macro converte il primo "D" in "M" ed il secondo "D" in "P", questo un esempio del prima e dopo"

Come ti dicevo è si un doppio passaggio, ma è obbligatorio per due motivi: il primo è che il turno con i giorni di lavoro lo crea e decide il capoturno e solo lui per ordine dell'azienda, e il ruolo ricoperto dall'operatore lo decido poi , questa , anzi queste macro, perchè saranno più di una mi aiuteranno a fare il lavoro grezzo in vari passaggi perchè la cosa è molto più comlessa di quello che sembra.
Quindi l'obiettivo è creare più macro piccole e settoriali per coi unirle .
Quindi per far chiarezza non è possibile partire già con i ruoli.

2)
Perchè compilo i ruoli per colonna?

Semplicemente per chè ila copertura del turno è per colonne , e la mia logica lavora per colonne, e da qui la necessità di avere una macro che:

Prima macro
Affiancare alle "D" i numeri da 1 fino ad arrivare a 6 se presenti 6 "D". Inoltre
una volte che la macro avrà fatto quanto sopra io manualmente controllerò il bilanciamento dei ruoli sul turno del singolo e rispetto agli altri operatori.
Penso che poi il problema che ne deriverà sarà che tutte le D sul turno dell'operatore della prima riga saranno tutte D1 per questo la macro dovrà avere un effetto random sull'assegnazione.

Seconda macro
modificare le "D1" "D2" etc. fino alla 6, tipo in "D1" diventa M-P1 (se es. D1 si trova nella cella A1, la macro scriverà in A1 "M" e in B1 "P1") come segue
D1 = m/p1
D2 = M1/p
D3 = m/p2
D4 = m2/p
D5 = M/p3
D6 = M3/p

per sommi capi la cosa è così.
grazie dell'aiuto
Post: 6.998
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
24/10/2022 10:17

Ciao Ok, nessun problema, ti ho creato le 2 macro, "Converti1-Converti2" la prima ti inserisce le "D" con "D1-2-3-4-5-6", la seconda modifica il tuo bilancimento, questo un esempio del funzionamento.

logicamente al momento sono senza bilanciamento, tocca a te, ma è solamente per vedere il funzionamento



ti allego anche il file con le macro, ho creato un nuovo foglio per avere i dati ti partenza altrimenti poi non li avrei avuti.

vedi se va bene, Ciao By Sal (8-D

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 07:56. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com