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