È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Trascrizione voti registro scolastico

Ultimo Aggiornamento: 10/11/2017 19:30
Post: 19
Registrato il: 10/09/2017
Città: ANNONE VENETO
Età: 59
Utente Junior
2007
OFFLINE
27/10/2017 22:12

Un saluto a tutti
Ho realizzato per un mio amico docente di educazione fisica un foglio che lo aiuta ad inserire le valutazioni degli allievi per ogni verifica nel corso dell'anno scolastico.
Sono numerose classi (9) con molti allievi, comunque non oltre i 30 cadauna.
Dopo la distruzione del notebook per una pallonata mi ha chiesto di fare un foglio più semplice dove inserire giornalmente i voti delle verifiche e poi trasferirli nel file generale a casa, così da poter usare in palestra un dispositivo più piccolo e meno ingombrante del notebook.

Ho predisposto un foglio giornaliero che contiene le varie classi ed i nomi degli allievi che hanno svolto gli esercizi con le varie valutazioni.

Il problema consiste nell'individuare i nomi di quest'ultimi allievi e poi trasferire le valutazioni a parità di classe e di nome nel file delle verifiche generali, cioè fare una sincronizzazione fra i due file

Oltremodo il file delle verifiche generali contiene più fogli, pari al numero delle verifiche svolte.

La macro dovrebbe trasferire i dati nel foglio aperto.

Non trovo il sistema di confrontare le classi nei due fogli e poi confrontare il valore delle celle contenenti gli stessi nomi.

Per meglio individuare il problema riporto i due file :

1*)VERIFICA GIORNALIERA.XLS = file dati con i voti degli allievi
2*)VERIFICHE GENERALI.XLS = file dove far confluire i dati per classe e per nome.

Ho inserito la colorazione gialla delle celle nei due file per evidenziare gli allievi verificati (2\3 per classe)(file 1*) e come dovrebbero essere trasferiti i dati nell'elenco alfabetico della classe (file 2*)

Qualcuno ha già affrontato un problema simile?
Ho cercato nel forum ma non ho trovato un esempio pari

Vi ringrazio se potete darmi una mano






Post: 19
Registrato il: 10/09/2017
Città: ANNONE VENETO
Età: 59
Utente Junior
2007
OFFLINE
31/10/2017 20:17

Re:
Jacknemo, 27/10/2017 22.12:

Un saluto a tutti
Ho realizzato per un mio amico docente di educazione fisica un foglio che lo aiuta ad inserire le valutazioni degli allievi per ogni verifica nel corso dell'anno scolastico.
Sono numerose classi (9) con molti allievi, comunque non oltre i 30 cadauna.
Dopo la distruzione del notebook per una pallonata mi ha chiesto di fare un foglio più semplice dove inserire giornalmente i voti delle verifiche e poi trasferirli nel file generale a casa, così da poter usare in palestra un dispositivo più piccolo e meno ingombrante del notebook.

Ho predisposto un foglio giornaliero che contiene le varie classi ed i nomi degli allievi che hanno svolto gli esercizi con le varie valutazioni.

Il problema consiste nell'individuare i nomi di quest'ultimi allievi e poi trasferire le valutazioni a parità di classe e di nome nel file delle verifiche generali, cioè fare una sincronizzazione fra i due file

Oltremodo il file delle verifiche generali contiene più fogli, pari al numero delle verifiche svolte.

La macro dovrebbe trasferire i dati nel foglio aperto.

Non trovo il sistema di confrontare le classi nei due fogli e poi confrontare il valore delle celle contenenti gli stessi nomi.

Per meglio individuare il problema riporto i due file :

1*)VERIFICA GIORNALIERA.XLS = file dati con i voti degli allievi
2*)VERIFICHE GENERALI.XLS = file dove far confluire i dati per classe e per nome.

Ho inserito la colorazione gialla delle celle nei due file per evidenziare gli allievi verificati (2\3 per classe)(file 1*) e come dovrebbero essere trasferiti i dati nell'elenco alfabetico della classe (file 2*)

Qualcuno ha già affrontato un problema simile?
Ho cercato nel forum ma non ho trovato un esempio pari

Vi ringrazio se potete darmi una mano









Ciao ragazzi
Qualcuno riesce a darmi un suggerimento ?
Un saluto a tutti



Post: 3.980
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
01/11/2017 09:18

non credo che excel sia lo strumento più adatto per una cosa del genere, forse meglio Access che non so usare, comunque fai una ricerca anche con google, quello che chiedi è piuttosto complesso.
per es. ho trovato questo https://rossanaweb.altervista.org/blog/area-insegnanti/
[Modificato da patel45 01/11/2017 09:22]

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 20
Registrato il: 10/09/2017
Città: ANNONE VENETO
Età: 59
Utente Junior
2007
OFFLINE
01/11/2017 12:27

Re:
patel45, 01/11/2017 09.18:

non credo che excel sia lo strumento più adatto per una cosa del genere, forse meglio Access che non so usare, comunque fai una ricerca anche con google, quello che chiedi è piuttosto complesso.
per es. ho trovato questo https://rossanaweb.altervista.org/blog/area-insegnanti/



Grazie per la risposta

Non posso usare Access.
Ho dato un'occhiata al link ma il lavoro è simile a quello che attualmente ho già

Volevo semplificare il foglio dei dati.

La macro l'ho pensata in questo modo:

Foglio verifiche giornaliere.xls

1)Controllare la colonna a dalla prima cella fino alla cella 1000

2)Trovare le celle dove sono inserite le classi (dati di esempio come da foglio allegato: A16 = cl.1a; A22 cl.2a; A29 cl.3a ecc )

3)Determinare l'intervallo A22-A16= 5
4)Determinare l'intervallo A29-A16= 6 ecc

5)All'interno di questo intervallo partendo dalla colonna C16+1 (corrispondente all'elenco allievi interrogati) fare un ciclo pari all'intervallo determinato precedentemente, nel mio esempio 5 nel primo caso, 6 nel secondo ecc

Quindi verificare il contenuto di:
C17 (primo nome) = ALLIEVO1
C18 (secondo nome)= ALLIEVO2
C19 (terzo nome)
C20 (quarto nome)
C21 (n nome)

6)A questo punto dovrei aver determinato :
-il contenuto delle celle dove sono scritte le classi
-ed all'interno del range fra una classe e l'altra, i nomi degli allievi.

Foglio verifiche generali.xls

7)Ora dovrei aprire il foglio delle verifiche generali e cercare nella colonna A le classi confrontando prima il valore di A16 (prima classe)(nel file allegato verifiche generali corrisponderebbe ad A2) e poi di A22 (seconda classe) (nel file allegato verifiche generali corrisponderebbe ad A13)

8)Come sopra dovrei determinare un range pari al numero degli allievi di una classe, cioè A13 -A2=10 (totale allievi delle classe)

9)Dovrei costruire un ciclo pari al numero degli allievi sopra determinato e confrontare il contenuto del dato C17 (primo nome) individuandolo all'interno del range da 1 a 10 della colonna B partendo dalla posizione B3 (B=colonna nomi 3=posizione riga = A2+1).

Una volta trovato devo copiare i dati in questo modo:
VERIFICHE FIORNALIERE.XLS VERIFICHE GENERALI.XLS
C17 (primo nome) H17;I17;K17 in B3 (pri. nome) E3;F3;G3
C18 (secondo nome) H18;I18;K18 in B4 (sec. nome) E4;F4;G4
C19 (terzo nome) H19;I19;K19 in B5 (ter. nome) E5;F5;G5
C20 (quarto nome) H20;I20;K20 in B6 (qua. nome) E6;F6;G6
C21 (n nome) H21;I21;K21 in B5 (n. nome) E7;F7;G7

[SM=x423023]

Queste indicazioni potrebbero semplificare la realizzazione della macro?

Grazie per la collaborazione
Ciao a tutti



Post: 1.649
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
01/11/2017 13:52

Ciao
(sempre che ho capito) devi alimentare il foglio generale con i valori delle attività sulla base delle classi e del nominativo.

A grandi linee potresti leggere il foglio "Giornaliero" ed alimentare un array composto da:
classe-nome-valore att1 - valore att2 - valore att.3

A questo punto non fai altro che aprire il file "Generale", crei un loop del suddetto array cercando classe-nome (sperando che non vi siano duplicati altrimenti...) ed inserisci i vari valori.

Quello che non si capisce è: nel documento "Generale" hai: VERIFICA1 - Verifica2 - verificaN

Come si capisce in quale foglio riversare i valori del documento Giornaliero?

Sai qualcosa di vba?

saluti



Domenico
Win 10 - Excel 2016
Post: 21
Registrato il: 10/09/2017
Città: ANNONE VENETO
Età: 59
Utente Junior
2007
OFFLINE
01/11/2017 14:15

Re:
dodo47, 01/11/2017 13.52:

Ciao
(sempre che ho capito) devi alimentare il foglio generale con i valori delle attività sulla base delle classi e del nominativo.

A grandi linee potresti leggere il foglio "Giornaliero" ed alimentare un array composto da:
classe-nome-valore att1 - valore att2 - valore att.3

A questo punto non fai altro che aprire il file "Generale", crei un loop del suddetto array cercando classe-nome (sperando che non vi siano duplicati altrimenti...) ed inserisci i vari valori.

Quello che non si capisce è: nel documento "Generale" hai: VERIFICA1 - Verifica2 - verificaN

Come si capisce in quale foglio riversare i valori del documento Giornaliero?

Sai qualcosa di vba?

saluti






Ciao

"A questo punto non fai altro che aprire il file "Generale", crei un loop del suddetto array cercando classe-nome (sperando che non vi siano duplicati altrimenti...) ed inserisci i vari valori."

Nel caso di allievi con nome e cognome uguale, vengono distinti così:

MARIO ROSSI1
MARIO ROSSI2

Quello che non si capisce è: nel documento "Generale" hai: VERIFICA1 - Verifica2 - verificaN

Come si capisce in quale foglio riversare i valori del documento Giornaliero?


Le verifiche sono tre per trimestre quindi 9 in tutto
La macro dovrebbe riversare nel foglio verificheN attivo;
cioè se apro il foglio verifiche1 i dati dovranno essere trasferiti lì mentre se rendo attivo il foglio verifiche2 i dati si dovranno copiare nel suddetto.

Nel foglio verifiche giornaliere NON ci saranno mai i voti di due verifiche diverse fra loro in quanto una verifica inizia solamente quando tutti hanno svolto la precedente e quindi con una valutazione assegnata

Sai qualcosa di vba?

[SM=x423054]

Non molto
Riesco a modificare delle macro che ottengo dal registratore macro o che trovo cercando in rete ed analizzando il codice e le sue variabili e\o opzioni volta per volta cercando in rete.
Purtroppo mi sono avvicinato da non molto tempo al VBA ma non riesco a dedicare il tempo che vorrei allo studio della programmazione.

Per questo cerco aiuto nel forum .
Ho appreso frequentando qui molto più più di quanto appreso studiando
Mi rendo conto che certe routine sono veramente complicate e la soluzione da te proposta non la saprei applicare (però cercherò di approfondirla)
Ho immaginato un diagramma di flusso ma non ho ancora le conoscenze per tradurlo in codice [SM=x423017]

grazie e buona giornata
Post: 107
Registrato il: 11/07/2015
Età: 33
Utente Junior
office 2013-2016
OFFLINE
01/11/2017 14:37


buon giorno

SE modifichi il file (foglio verifica 2) come allegato puoi

utilizzare le formule
Post: 108
Registrato il: 11/07/2015
Età: 33
Utente Junior
office 2013-2016
OFFLINE
01/11/2017 14:55


Ho aggiunto la formattazione condizione per evidenziare gli

allievi con voto
Post: 22
Registrato il: 10/09/2017
Città: ANNONE VENETO
Età: 59
Utente Junior
2007
OFFLINE
01/11/2017 17:28

Re:
Ulisse1990, 01/11/2017 14.55:


Ho aggiunto la formattazione condizione per evidenziare gli

allievi con voto



Ho visto le formule ma non ho capito il motivo di tale inserimento
Nel file dove hai messo le formule devono confluire i dati del file verifiche giornaliere.

Dovrebbe funzionare così:

verifico oggi, per esempio, 2 allievi per classe.
La prova che devono fare la chiamo verifica1
Arrivo a casa e trasferisco i dati nella cartella VERIFICA GENERALI.xls nel foglio chiamato verifica1

Domani, per esempio,fanno la verifica altri 4 allievi per classe.
La prova che devono fare è sempre verifica1
Arrivo a casa e trasferisco i dati nella cartella VERIFICA GENERALI.xls nel foglio chiamato verifica1

Dopo alcuni giorni tutti gli allievi avranno concluso la verifica1

Successivamente riprendono le verifiche.Ora sarà chiamata verifica2 e i dati dovranno confluire nella cartella VERIFICA GENERALI.xls nel foglio chiamato verifica2

Forse non ho capito la formula ma secondo me serve una macro in vba che apra il file verifica giornaliera e trasferisca come ho spiegato nei post precedenti i dati nel file verifica generali

Comunque grazie mille per il suggerimento

Ciao
[SM=x423017]



Post: 3.981
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
01/11/2017 17:29

la cosa più semplice secondo me è avere sul web il file completo, diviso per classi, ed accederci con uno smartphone o tablet

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 23
Registrato il: 10/09/2017
Città: ANNONE VENETO
Età: 59
Utente Junior
2007
OFFLINE
02/11/2017 18:28

Re:
dodo47, 01/11/2017 13.52:

Ciao
(sempre che ho capito) devi alimentare il foglio generale con i valori delle attività sulla base delle classi e del nominativo.

A grandi linee potresti leggere il foglio "Giornaliero" ed alimentare un array composto da:
classe-nome-valore att1 - valore att2 - valore att.3

A questo punto non fai altro che aprire il file "Generale", crei un loop del suddetto array cercando classe-nome (sperando che non vi siano duplicati altrimenti...) ed inserisci i vari valori.

Quello che non si capisce è: nel documento "Generale" hai: VERIFICA1 - Verifica2 - verificaN

Come si capisce in quale foglio riversare i valori del documento Giornaliero?

Sai qualcosa di vba?

saluti






Ho dato una letta in rete e mi sembra di capire che l'indicazione prospettata sia quella giusta

Mi sono documentato sugli array ma onestamente non ho capito molto
Non riesco a capire come creare un array composto da:
classe-nome-valore att1 - valore att2 - valore att.3

Potrebbe essere una matrice formata da un numero di righe pari a 7 classi x 25 allievi max e 5 colonne ?
Poi dovrei creare un ciclo di lettura concatenato ?
Non ho trovato ulteriori indicazioni in rete e non so come continuare
Di seguito ho provato ad abbozzare qualche linea di codice ma non credo sian corretto

Sub Prova()
Dim classe(175,5) As String 'classe-nome-valore att1 - valore att2 - valore att.3

Dim CL as Integer
Dim NOME as interger

CL = 0
For CL = 0 To UBound(1)
for NOME=0 to UBound(2)

qui dovrei leggere la tabella ?
Next NOME
NEXT CL

Poi, ammesso che riesca a leggere la tabella dovrei ricopiarla nell'altro file cercando solo i nomi importati.
Questo per me è veramente impossibile !!

Grazie per ogni altro possibile aiuto e\o indicazione
Ciao









Post: 1.650
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
03/11/2017 18:12


La macro dovrebbe riversare nel foglio verificheN attivo;
cioè se apro il foglio verifiche1 i dati dovranno essere trasferiti lì mentre se rendo attivo il foglio verifiche2 i dati si dovranno copiare nel suddetto.



In questo caso (poichè il foglio giornaliero non conosce il nome del foglio di destinazione), devi aprire il documento generale, selezionare il foglio verificheN ed eseguire una macro che sarà senpre la stessa. Ciò comporta che o metti un pilsante che chiama la suddetta macro (poniamo "Pippo"), oppure ogni volta, sempre stando nel foglio di destinazione prescelto di generale, andare nel vb ed eseguire detta macro.

Se invece sul documento giornaliero c'è il nome del foglio di destinazione del documento generale, l'impostazione sarebbe diversa.

Dimmi quale dei due casi vuoi adottare e provo a tirar giù qualcosa.

NB: se vuoi utilizzare il 2° caso (nome foglio destinazione presente su documento giornaliero in qualche cella) dovresti dirmi dove è tale nome.

saluti





[Modificato da dodo47 03/11/2017 18:20]
Domenico
Win 10 - Excel 2016
Post: 24
Registrato il: 10/09/2017
Città: ANNONE VENETO
Età: 59
Utente Junior
2007
OFFLINE
03/11/2017 18:46

Re:
dodo47, 03/11/2017 18.12:


La macro dovrebbe riversare nel foglio verificheN attivo;
cioè se apro il foglio verifiche1 i dati dovranno essere trasferiti lì mentre se rendo attivo il foglio verifiche2 i dati si dovranno copiare nel suddetto.



In questo caso (poichè il foglio giornaliero non conosce il nome del foglio di destinazione), devi aprire il documento generale, selezionare il foglio verificheN ed eseguire una macro che sarà senpre la stessa. Ciò comporta che o metti un pilsante che chiama la suddetta macro (poniamo "Pippo"), oppure ogni volta, sempre stando nel foglio di destinazione prescelto di generale, andare nel vb ed eseguire detta macro.

Se invece sul documento giornaliero c'è il nome del foglio di destinazione del documento generale, l'impostazione sarebbe diversa.

Dimmi quale dei due casi vuoi adottare e provo a tirar giù qualcosa.

NB: se vuoi utilizzare il 2° caso (nome foglio destinazione presente su documento giornaliero in qualche cella) dovresti dirmi dove è tale nome.

saluti








In questo caso (poichè il foglio giornaliero non conosce il nome del foglio di destinazione), devi aprire il documento generale, selezionare il foglio verificheN ed eseguire una macro che sarà senpre la stessa. Ciò comporta che o metti un pilsante che chiama la suddetta macro (poniamo "Pippo"), oppure ogni volta, sempre stando nel foglio di destinazione prescelto di generale, andare nel vb ed eseguire detta macro.

Andrebbe benissimo questa soluzione.
Preparo un pulsante sulla barra multifunzione e aggancio la macro che funzionerà sul foglio attivo in quel momento

Grazie per l'aiuto

Ciao



Post: 1.651
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
04/11/2017 17:52

è possibile che nel giornaliero ci sia un allievo non presente nel generale?

Se si, lo devi inserire nel generale?

saluti


Domenico
Win 10 - Excel 2016
Post: 25
Registrato il: 10/09/2017
Città: ANNONE VENETO
Età: 59
Utente Junior
2007
OFFLINE
04/11/2017 18:04

Re:
dodo47, 04/11/2017 17.52:

è possibile che nel giornaliero ci sia un allievo non presente nel generale?

Se si, lo devi inserire nel generale?

saluti






Non dovrebbe verificarsi.

Tuttavia, se fosse possibile questo ulteriore controllo, la macro sarebbe sicuramente più affidabile
Però l'inserimento di un nome non presente dovrebbe essere fatto in una nuova riga che comprenda le formule ed i formati delle altre, in quanto i dati copiati poi sono soggetti a delle elaborazioni
Ciao


Post: 1.652
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
04/11/2017 18:21

nel foglio generale non vedo nessuna formula



[Modificato da dodo47 04/11/2017 18:21]
Domenico
Win 10 - Excel 2016
Post: 1.653
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
04/11/2017 18:39

Ciao
intanto testa il codice.

ti invio entrambi i tuoi file.

1) la prima classe deve stare in A6 di giornaliero

2) apri generale, seleziona il foglio di destinazione ed esegui la macro (magari se la segui passo passo non sarebbe male).

3) la macro ti chiede di selezionare il file giornaliero, una volta aperto prosegue l'elaborazione.

Testa il tutto su questi file, mancano alcune dim e la gestione degli errori

saluti


Domenico
Win 10 - Excel 2016
Post: 26
Registrato il: 10/09/2017
Città: ANNONE VENETO
Età: 59
Utente Junior
2007
OFFLINE
04/11/2017 19:19

Nel foglio generale ho tolto le colonne dove fa il calcolo delle medie;
queste formule prendono i dati esattamente dalle celle che avevo lasciato
Appena possibile provo il codice
Grazie [SM=g27811]
Post: 27
Registrato il: 10/09/2017
Città: ANNONE VENETO
Età: 59
Utente Junior
2007
OFFLINE
05/11/2017 12:08

Re:
dodo47, 04/11/2017 18.39:

Ciao
intanto testa il codice.

ti invio entrambi i tuoi file.

1) la prima classe deve stare in A6 di giornaliero

2) apri generale, seleziona il foglio di destinazione ed esegui la macro (magari se la segui passo passo non sarebbe male).

3) la macro ti chiede di selezionare il file giornaliero, una volta aperto prosegue l'elaborazione.

Testa il tutto su questi file, mancano alcune dim e la gestione degli errori

saluti





Ho eseguito delle prove ed ho visto che la macro funziona perfettamente. [SM=x423026]

Ho però notato che scrive i dati solo nel foglio VERIFICA1 della cartella generale.xlxs

Se mi sposto nel foglio VERIFICA2 la macro non funziona né per quello attivo né per il foglio VERIFICA1

Nel post hai indicato che la prima classe deve stare in A6

Nel codice trovo che il ciclo comincia da A16

Dim mFile As Variant, wK As Workbook, wk1 As Workbook, mArr() As Variant, ur As Long
Dim i As Long, k As Long, cl As String, y As Long
i = 16 '<<<<< prima riga classe


Ho lasciato la prima classe in A16 e funziona bene
La mia interpretazione è corretta?

Una conferma:
nel ciclo che trova i nomi rispetto alle classe e poi compila l'array hai usato variabili;
quindi se l'anno prossimo cambiano le classi, la macro funzionerà regolarmente a condizione che le classi siano indicate con lo stesso nome?
Grazie
Ciao e buona giornata

Post: 1.654
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
05/11/2017 13:08

Re: Re:
Jacknemo, 05/11/2017 12.08:



Ho eseguito delle prove ed ho visto che la macro funziona perfettamente. [SM=x423026]

Ho però notato che scrive i dati solo nel foglio VERIFICA1 della cartella generale.xlxs

Se mi sposto nel foglio VERIFICA2 la macro non funziona né per quello attivo né per il foglio VERIFICA1

è molto strano quello che dici. Io non riscontro il problema.Ti ricordo che prima devi selezionare il foglio di destinazione in generale e poi eseguire la macro. Inoltre il documento giornaliero deve essere chiuso ogni volta che esegui la macro. dimmi passo passo quello che fai.


Nel post hai indicato che la prima classe deve stare in A6

Nel codice trovo che il ciclo comincia da A16

Dim mFile As Variant, wK As Workbook, wk1 As Workbook, mArr() As Variant, ur As Long
Dim i As Long, k As Long, cl As String, y As Long
i = 16 '<<<<< prima riga classe


Ho lasciato la prima classe in A16 e funziona bene
La mia interpretazione è corretta?

Certo

Una conferma:
nel ciclo che trova i nomi rispetto alle classe e poi compila l'array hai usato variabili;
quindi se l'anno prossimo cambiano le classi, la macro funzionerà regolarmente a condizione che le classi siano indicate con lo stesso nome?

certamente. La macro legge quello che c'è scritto in col. A di giornaliero, quindi come classe puoi scriverci qualsiasi cosa purchè abbia poi riscontro in generale.
In sintesi la routine funziona così:
una volta acquisito il file giornaliero (..Application.GetOpenFilename(...), lo attiva e carica l'array mArr con i valori: classe-allievo-Att1-Att2_Att3.
Si sposta nel documento generale wk1.Activate nel foglio che hai precedentemente selezionato come destinazione e procede. come vedi non c'è nessuna selezione di fogli in quanto quando apri generale,
selezioni il foglio dove devono essere copiati i valori e poi esegui la macro.





Spero sia chiaro, sei hai ulteriori dubbi chiedi.

saluti



[Modificato da dodo47 05/11/2017 13:12]
Domenico
Win 10 - Excel 2016
Post: 28
Registrato il: 10/09/2017
Città: ANNONE VENETO
Età: 59
Utente Junior
2007
OFFLINE
05/11/2017 13:31

Hai ragione

Ho fatto le prove sul foglio scaricato ma non mi ero accorto che VERIFICA2 non era compilato con i nomi.
Quindi la macro non li trovava e quindi non scriveva i dati


Ho scritto i nomi e funziona perfettamente anche in tutti i fogli che ho inserito per provare.

Direi perfetta [SM=x423028]

Con la gestione del nome mancante sarebbe il top

Grande

Grazie
Post: 1.655
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
05/11/2017 17:27

Re:
Jacknemo, 05/11/2017 13.31:


..........Con la gestione del nome mancante sarebbe il top.........



mi viene un po' complesso in quanto con l'impostazione data non conosco il numero della riga nella quale riportare l'allievo presente in giornaliero e non in generale.

Comunque ho inserito due messaggi:

1) se la classe non esiste nel foglio generale viene prodotto un messaggio che ti chiede se vuoi proseguire o no.

2) nel caso di nominativo mancante alla fine viene prodotto un elenco (msgbox) con il riepilogo dei nomi mancanti e della classe di appartenenza presa da giornaliero.

Ho infine corretto un paio di cose.
Ti ricordo che sarebbe opportuno che tu completassi le dim mancanti ed inserissi una gestione di errori.

Usa questa macro

saluti
Sub InsVerifiche()
Dim mFile As Variant, wK As Workbook, wk1 As Workbook, mArr() As Variant, ur As Long
Dim i As Long, k As Long, cl As String, y As Long
i = 16 '<<<<< prima riga classe
k = 0
Set wk1 = ActiveWorkbook
mFile = Application.GetOpenFilename("microsoft excel files (*.xlsx*), *.xlsx*")
If mFile <> False Then
    Set wK = Workbooks.Open(mFile)
    wK.Activate
    ur = Range("C" & Rows.Count).End(xlUp).Row
    mDim = Application.WorksheetFunction.CountA(Range("C16:C" & ur))
    ReDim mArr(mDim, 4)
    For r = 16 To ur
        cl = Cells(i, 1)
        Do Until Cells(i + 1, 3) = ""
            mArr(k, 0) = cl
            mArr(k, 1) = Cells(i + 1, 3)
            mArr(k, 2) = Cells(i + 1, 8)
            mArr(k, 3) = Cells(i + 1, 9)
            mArr(k, 4) = Cells(i + 1, 11)
            i = i + 1
            k = k + 1
        Loop
        For y = i To ur
            If Cells(y, 1) <> "" Then
            i = y
            Exit For
            End If
        Next y
    Next r
    wk1.Activate
    ur = Range("B" & Rows.Count).End(xlUp).Row
    For i = 0 To UBound(mArr)
        y = 0
        r = 0
        With Range("A:A")
            Set c = .Find(mArr(i, 0), LookIn:=xlValues, lookat:=xlWhole)
            If Not c Is Nothing Then
                r = c.Row
                With Columns("A")
                    r1 = .Find(what:="*", after:=.Cells(r, 1), LookIn:=xlFormulas).Row - 2
                    If r1 = 0 Then r1 = ur
                End With
                With Range("B" & r + 1 & ":B" & r1)
                    Set c1 = .Find(mArr(i, 1), LookIn:=xlValues, lookat:=xlWhole)
                    If Not c1 Is Nothing Then
                        y = c1.Row
                        Cells(y, 5) = mArr(i, 2)
                        Cells(y, 6) = mArr(i, 3)
                        Cells(y, 7) = mArr(i, 4)
                    Else
                        mMsg = mMsg & mArr(i, 1) & " - " & mArr(i, 0) & vbCrLf
                    End If
                End With
            Else
                domanda = MsgBox("Classe " & mArr(0, 0) & " non trovata. Proseguire ?", vbYesNo)
                If domanda = vbNo Then GoTo xit
            End If
        End With
    Next i
End If
xit:
If mMsg <> "" Then
    MsgBox mMsg & vbCrLf & vbCrLf & "Allievi - Classe Non trovati nel foglio Generale"
End If
End Sub



[Modificato da dodo47 05/11/2017 17:29]
Domenico
Win 10 - Excel 2016
Post: 29
Registrato il: 10/09/2017
Città: ANNONE VENETO
Età: 59
Utente Junior
2007
OFFLINE
10/11/2017 19:30

Scusa il ritardo nella risposta ma ho avuto qualche imprevisto "tecnico"
Dalle prove che sto facendo la macro è perfetta
Per ovviare al problema del nome non presente, oltre all'avviso previsto, pensavo di fare un menù a tendina per le varie celle, così da avere l'esatta corrispondenza dei nomi.
Faccio una prova

Ancora grazie per il grandissimo aiuto dato

Ciao
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:16. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com