Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

vba excel macro per rotazioni

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

vba excel macro per rotazioni

Postdi macio66 » 01/03/17 21:53

Buonasera
Immagineimage hosting

Come mi ha fatto (giustamente) notare Anthony, riparto da zero spiegando cosa ho fatto, e cosa non riesco proprio a fare.
Per dare un'idea di cosa sto cercando di fare. inizio con una piccola anteprima. In pratica ci sono 30 postazioni gioco/lavoro, dove a turno dei bambini, in base a delle loro difficoltà, usano nell'arco della giornata. Le rotazioni sono tre e ogni postazione può essere usata una sola volta nella giornata.
1° Rotazione (Pulsante Rotazione1)
La macro inserisce i nomi presenti nella colonna "Y" nella colonna "F" facendo in modo che le classi presenti nella colonna "B" (Limitazioni della postazione) non siano presenti nelle colonne "G,H,I" (Difficoltà del bambino). Stessa cosa con la colonna "C" confrontandola con la colonna "M".
2° Rotazione (Pulsante Rotazione2)
La macro (come sopra) inserisce i nomi presenti nella colonna "Y" nella colonna "L" facendo in modo che le classi presenti nella colonna "B" (Limitazioni della postazione) non siano presenti nelle colonne "M,N,O" (Difficoltà del bambino). Stessa cosa con la colonna "C" confrontandola con la colonna "P". In più in questa rotazione controlla la colonna "F" con la colonna "L", impedendo che lo stesso bambino, finisca nella postazione precedente.
3° Rotazione (Pulsante Rotazione3)
Per ultimo la macro inserisce i nomi presenti nella colonna "Y" nella colonna "R" facendo in modo che le classi presenti nella colonna "B" (Limitazioni della postazione) non siano presenti nelle colonne "S,T,U" (Difficoltà del bambino). Stessa cosa con la colonna "C" confrontandola con la colonna "V". In più in questa rotazione controlla la colonna "F,L" con la colonna "R", impedendo che lo stesso bambino, finisca nella postazione precedente. A questo punto le tre rotazioni sono terminate (vedi immagine allegata.
Ora arriva la parte che vorrei aggiungere, ma che proprio non riesco a fare.
Come ho detto all'inizio, le postazioni sono 30, ma per come è strutturata la macro devo, in base ai bambini presenti, eliminare quelle in più, altrimenti la rotazione non mi funziona. Ho aggiunto la colonna "E" (Sel.), perchè cercavo di fare in modo che, selezionando le postazioni che mi occorrono (per esempio con una X), la macro saltasse le righe vuote (postazioni non selezionate) e mi creasse la rotazione (non ci sono proprio riuscito)
Altra cosa che vorrei fare e usare la colonna "D" (Preferenze) delle postazione con le colonne "K,Q,W" dei bambini, per fare in modo che la macro (in questo caso con simboli uguali), inserisse per primi i bambini con una preferenza (dove non ci sono problemi con le limitazioni).
In pratica la postazione con la preferenza "a" dovrebbe avere se presente x primo il bambino con la stessa preferenza "a" , se non lo trova o già inserito nella rotazione , passare al bambino con la preferenza "a1" e se non trova nulla inserire un qualsiasi altro bambino (che non ha preferenza).
Non so se è fattibile (sicuramente non per me).
Spero di essere stato chiaro nello spiegare quello a cui vorrei arrivare.
Allego anche il file, così forse è più chiaro.
http://www.filedropper.com/provarotazione2
macio66
Utente Senior
 
Post: 134
Iscritto il: 13/06/13 14:59

Sponsor
 

Re: vba excel macro per rotazioni

Postdi Anthony47 » 02/03/17 02:41

Se vuoi poter marcare (con la X) le postazioni da utilizzare puoi farlo liberamente, poi (prima di eseguire le macro) procedi a ordinare le colonne A:E in primo ordine per colonna Sel e poi per colonna Postazione.

Quanto alle preferenze non sono in grado di aiutare, mi spiace.

Inoltre ricordo che tempo fa le tre rotazioni erano parte di una unica macro. Ora sono state spezzate in tre, ma si e' trascurato il fatto che la seconda rotazione eredita le scelte fatte dalla prima, e la terza eredita le scelte fatte dalla prima e dalla seconda; col risultato che ptrebbe succedere che la terza rotazione (ma non si puo' escludere che succeda anche con la seconda) risulti "incagliata", cioe' non si trovi una combinazione che risolva tutte le limitazioni poste e la macro continui all'infinito.
Cosa che mi e' successa puntualmente dopo alcuni tentativi di Rotazione a cascata (1, 2 e 3).

Quindi secondo me piu' che pensare alle preferenze, su cui comunque non sarei in grado di aiutare, bisogna pensare a risolvere gli incagli che possono verificarsi in Rotazione2 e Rotazione3
Credo che la cosa possa essere risolta creando dei contatori che contano quanti ricicli fa una singola RotazioneN, e dopo un tot di volte rimandi in esecuzione la Rotazione(N-1) (cioe' Rotazione3 -->Rotazione2, e Rotazione2-->Rotazione1)
Purtroppo in questo periodo non ho molto tempo a disposizione, quindi non mi candido (non nel breve) a realizzare questa logica.

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

Re: vba excel macro per rotazioni

Postdi macio66 » 02/03/17 08:12

Ciao Anthony
grazie x la dritta (non ci avevo pensato).
Per quel che riguarda la rotazione, è vero, la mia idea di partenza prevedeva la rotazione in una sola macro, ma come mi hanno fatto notare, se durante la giornata (e capita sovente nel pomeriggio), dei bambini vanno a casa e ne arrivano altri, dobbiamo creare la terza rotazione a mano, in quanto la rotazione automatica è fatta e non più modificabile.
Ti chiedo ancora una cosa, se possibile, e soprattutto quando avrai tempo. Mi piacerebbe adattare la tua di macro a questo nuovo progetto (secondo me meglio strutturata della mia), ma io non ci sono proprio riuscito.
Quello delle preferenze, temevo fosse una cosa facile da dirsi, ma difficile da attuare.
Grazie ancora del tuo interessamento.
macio66
Utente Senior
 
Post: 134
Iscritto il: 13/06/13 14:59

Re: vba excel macro per rotazioni

Postdi macio66 » 03/03/17 17:57

Ciao
Per risolvere il problemi degli incagli durante la Rotazione2 e Rotazione3 (dietro suggerimento di Anthony), ho imposto un tempo max per ogni Rotazione (60 sec per la 1, 120 per la 2, 180 per la tre). Inoltre ho imposto un numero max di volte in cui effettuare la 3 Rotazione (3). Per la durata di ogni rotazione, ho fatto prelevare l'ora del pc all'avvio della macro, ho aggiunto il tempo da me stabilito e inpostato il termine della rotazione quando l'ora del pc raggiunge l'ora da me scelta.
Purtroppo x le preferenze mi devo arrendere (non so da che parte sbattere la testa).
Allego il file modificato, in caso servisse a qualcuno.
http://www.filedropper.com/provarotazione2_1
buona serata a tutti
macio66
Utente Senior
 
Post: 134
Iscritto il: 13/06/13 14:59


Torna a Applicazioni Office Windows


Topic correlati a "vba excel macro per rotazioni":


Chi c’è in linea

Visitano il forum: Nessuno e 57 ospiti