Condividi:        

Macro inserimento dati in automatico

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

Macro inserimento dati in automatico

Postdi ahidai » 19/01/12 10:44

Sono di nuovo qua a chiedere aiuto, prima di esporre il mio “problema” voglio salutare questo magnifico forum….
Allora ho rispolverato un file che avevo “non farina del mio sacco” con delle userform , le quali mi permettono l’inserimento di giustifica del personale assente.
Vorrei che questi dati me li riportasse su i due fogli (foglio: gen_giu “da gennaio a giugno” o foglio:lug_dic “da luglio a dicembre” chiaramente la scelta del foglio dipende poi dalla data corrente, l’inserimento dei dati dovrebbe venire in modo abbreviato, cioè sull’userform dove seleziono il tipo di giustifica per es. “ricovero ospedaliero” invece di andarmi a copiare il dato sul foglio scelto la dicitura esatta, me la riportasse in questo modo “RH”.
Poi vorrei che inserendo il tipo di giustifica, io possa tramite altre 2 userform inserire le date (dal – al ) cioè determinare un periodo di assenza della giustifica e che poi mi inserisca anche le date nelle sottostanti celle “dal – al” considerando dei parametri che sono fissi “che sono elencati a fianco di ognuna nel foglio Legenda” .
Chiaramente poi una volta determinato il periodo di assenza, questi dati li deve riportare in modo abbreviato sui fogli che ho descritto prima.
Spero di essermi spiegato e comunque allego il file: http://www.filedropper.com/rapportinov1_1 ,
sperando che sia più comprensibile di quanto detto precedentemente.
Grazie per le risposte e buon lavoro.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Sponsor
 

Re: Macro inserimento dati in automatico

Postdi Flash30005 » 19/01/12 11:32

Il file che hai allegato si scarica ma è corrotto (0 Kb)
molto probabilmente dipende dal server

Prova a fare l'upload in un altro server host

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro inserimento dati in automatico

Postdi ahidai » 19/01/12 11:59

Flash30005 ha scritto:Il file che hai allegato si scarica ma è corrotto (0 Kb)
molto probabilmente dipende dal server

Prova a fare l'upload in un altro server host

ciao

ciao e grazie per la risposta Flash ecco il nuovo link: http://www.mediafire.com/?cvbgrthm1ra9d8
Ciao
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: Macro inserimento dati in automatico

Postdi Flash30005 » 19/01/12 17:33

Non voglio entrare in merito al programma che già hai
ti invio una macro che fa tutto ciò che hai chiesto escludendo gli userform
perché scansiona tutte le righe del foglio ripepilogo (colonna data: "E")
e trascrive nei due fogli il codice in corrispondenza del Nome e data
pertanto potrai adattare la macro per avviarsi con qualsiasi altro comando senza scansionare tutte le righe
ma prendere solo quella in corrispondenza del nome che inserirai nell'Userform.
Codice: Seleziona tutto
Sub Trascrivi()
Dim Ws1, Ws2, Ws3, Ws4 As Worksheets
Set Ws1 = Sheets("Rapportino")
Set Ws2 = Sheets("LEGENDA")

UR1 = Ws1.Range("E" & Rows.Count).End(xlUp).Row

For RR1 = 6 To UR1
If Ws1.Range("E" & RR1).Value <> "" Then
NOME = Ws1.Range("B" & RR1).Value
If Month(Ws1.Range("E" & RR1).Value) < 7 Then
    Set TWI = Sheets("GEN_GIU")
    NC = 186
Else
    Set TWI = Sheets("LUG_DIC")
    NC = 189
End If
If Month(Ws1.Range("F" & RR1).Value) < 7 Then
    Set TWF = Sheets("GEN_GIU")
    NC = 186
Else
    Set TWF = Sheets("LUG_DIC")
    NC = 189
End If
GIU = Ws1.Range("D" & RR1).Value
GGI = Day(Ws1.Range("E" & RR1).Value)
GGF = Day(Ws1.Range("F" & RR1).Value)
URL = Ws2.Range("B" & Rows.Count).End(xlUp).Row
For RR2 = 2 To URL
    If Ws2.Range("G" & RR2).Value = GIU Then
            SIG = Ws2.Range("B" & RR2).Value
        GoTo SaltaRG
    End If
Next RR2
SaltaRG:
URM = TWF.Range("D" & Rows.Count).End(xlUp).Row
    For RN = 18 To URM
        If TWF.Range("D" & RN).Value = NOME Then
            Riga = RN
            GoTo SaltaNome
        End If
    Next RN
SaltaNome:
    For CC3 = 5 To NC
        If Val(TWF.Cells(17, CC3)) = GGI Then
        TWF.Range(TWF.Cells(Riga, CC3), TWF.Cells(Riga, CC3 + (GGF - GGI))) = SIG
        GoTo SaltaRR1
        End If
    Next CC3
End If
SaltaRR1:
Next RR1
End Sub


Ho notato che il 30 giugno si trova nel secondo foglio (LUG_DIC), come mai?
In quel caso la macro non funzionerà senza implementarla con ulteriore codice di controllo che soddisfi questa eccezione.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro inserimento dati in automatico

Postdi ahidai » 19/01/12 19:12

Flash30005 ha scritto:Non voglio entrare in merito al programma che già hai
ti invio una macro che fa tutto ciò che hai chiesto escludendo gli userform
perché scansiona tutte le righe del foglio ripepilogo (colonna data: "E")
e trascrive nei due fogli il codice in corrispondenza del Nome e data
pertanto potrai adattare la macro per avviarsi con qualsiasi altro comando senza scansionare tutte le righe
ma prendere solo quella in corrispondenza del nome che inserirai nell'Userform.

Ho notato che il 30 giugno si trova nel secondo foglio (LUG_DIC), come mai?
In quel caso la macro non funzionerà senza implementarla con ulteriore codice di controllo che soddisfi questa eccezione.

Ciao

Ciao flash, grazie perla risposta e la macro, ma sinceramente non so dove aggiungerla, ho provato ad inserirla nel codice della userform "frmrapportino", poi creando un nuovo modulo, ma niente non va, come devo fare per cortesia.
Per quanto riguarda il 30 giugno ho sistemato perchè c'era una colonna nascosta ed era quella del 29 febbraio, quindi ho cambiato la formula ed è tutto ok.
Ciao.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: Macro inserimento dati in automatico

Postdi Flash30005 » 19/01/12 19:36

Certo che va prelevato il campo dall'userform
ma sinceramente non ho capito come funziona il tuo userform
nel senso che attivandolo con l'apposito comando
appare una finestra con tutti i nomi presenti in "Riepilogo" e con il check sui nomi presenti
e premendo conferma appare la descrizione di ogni persona assente.
A questo punto cosa vorresti fare o cosa fai per inserire una nuova descrizione di assenza?
Secondo me è sbagliato scansionare di volta in volta tutte le giustifiche esistenti
Pensavo più ad un userform dove vi erano tutti i nomi senza check
cliccando su uno o più di uno desse la possibilità di inserire la giustificazione a quel/quei nomi e quindi la data per ognuno.
In questa maniera è possibile attivare la macro per ogni conferma e, quindi, trascrivere i dati.
Alla successiva riapertura dell'userform di nuovo tutti i nomi senza check etc etc

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro inserimento dati in automatico

Postdi ahidai » 19/01/12 20:59

Flash30005 ha scritto:Certo che va prelevato il campo dall'userform
ma sinceramente non ho capito come funziona il tuo userform
nel senso che attivandolo con l'apposito comando
appare una finestra con tutti i nomi presenti in "Riepilogo" e con il check sui nomi presenti
e premendo conferma appare la descrizione di ogni persona assente.
A questo punto cosa vorresti fare o cosa fai per inserire una nuova descrizione di assenza?
Secondo me è sbagliato scansionare di volta in volta tutte le giustifiche esistenti
Pensavo più ad un userform dove vi erano tutti i nomi senza check
cliccando su uno o più di uno desse la possibilità di inserire la giustificazione a quel/quei nomi e quindi la data per ognuno.
In questa maniera è possibile attivare la macro per ogni conferma e, quindi, trascrivere i dati.
Alla successiva riapertura dell'userform di nuovo tutti i nomi senza check etc etc

ciao

Ciao Flash, allora mi serve scansionare di volta in volta tutte le giustiche esistenti perchè potrebbe cambiare il tipo di giustifica, quindi non faccio altro che selezionare dalla userform assenza un'altro tipo di giustifica.
Quindi una volta inserito il tipo di giustifica di ognuno,vorrei che tramite un'altra un'userform mi chiede per quanto tempo devo inserire il tipo di giustifica (dal "data inizio" - al "data fine"), quindi una volta attivata la macro "conferma" mi trascrive i dati sul foglio di competenza " Gen_Giu o Lug_Dic". Chiaramente se inserisco un periodo di 7-8 10 giorni di assenza nella finestra "Riepilogo" è inutile che riappare il nome che ho gia definito assente per un determinato periodo.
Ciao grazie ancora per la tua pazienza e disponibilità, spero di essermi spiegato bene.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: Macro inserimento dati in automatico

Postdi Flash30005 » 19/01/12 22:18

Ehm, ok

ma una volta trascritte non vorrai eliminarle con lo stesso sistema?
es.
RossiRossi Esami M... dal 15/02/2012 al 20/02/2012
avvii e trascrive sui fogli mesi
Tra una settimana, invece, vorresti correggere e vorresti mettere presente in quel periodo
a questo punto non è possibile cancellare sui fogli mesi la sigla "EM" in quei sei giorni
Lo potrai fare solo manualmente
Però avresti la possibilità di cambiare descrizione ad esempio in BT per lo stesso periodo

va bene?

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro inserimento dati in automatico

Postdi ahidai » 19/01/12 23:12

Flash30005 ha scritto:Ehm, ok

ma una volta trascritte non vorrai eliminarle con lo stesso sistema?
es.
RossiRossi Esami M... dal 15/02/2012 al 20/02/2012
avvii e trascrive sui fogli mesi
Tra una settimana, invece, vorresti correggere e vorresti mettere presente in quel periodo
a questo punto non è possibile cancellare sui fogli mesi la sigla "EM" in quei sei giorni
Lo potrai fare solo manualmente
Però avresti la possibilità di cambiare descrizione ad esempio in BT per lo stesso periodo

va bene?

ciao


Ciao Flash è proprio quello che volevo, poi chiedo se è possibile visualizzare tale periodo (data "dal - al" ) nel primo foglio "rapportino" .
Ciao e immensamente grazie.
PS: dimenticavo una cosa quando è presente nei fogli dove trascrive i dati mi deve mettere una "x", mentre quando è "libero dal servizio" mi deve mettere "-" .
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: Macro inserimento dati in automatico

Postdi Flash30005 » 19/01/12 23:20

Aggiungo al post precedente
ma se c'è il foglio Riepilogo a cosa serve l'userform?
non è più semplice scrivere sul foglio Riepilogo la descrizione e la data inizio/fine e assegnare il pulsante Start alla macro che ti ho già inviato?
Quella macro fa tutto ciò che serve a te, addirittura ti permette di cancellare (problema che dicevo nel post precedente)
o sostituire la sigla già inserita semplicemente lasciando la data 15/02/2012 al 20/02/2012
senza inserire alcuna descrizione (o inserendo altra descrizione)
La macro trascrive la Sigla corrispondente a ciò che trova in colonna D quindi provvede a cancellare (oppure a sostituire), nel range tra le due date.

Ciao

P.s. Provare a fare come ti sto dicendo ora tralasciano l'userform
scrivi una descrizione
inserisci data inizio e data fine
avvia la macro (manualmente, poi assegnerai il comando)
e vedrai che trascriverà la sigla come descritto

Non ho capito dove va la X
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro inserimento dati in automatico

Postdi ahidai » 19/01/12 23:32

Flash30005 ha scritto:Aggiungo al post precedente
ma se c'è il foglio Riepilogo a cosa serve l'userform?
non è più semplice scrivere sul foglio Riepilogo la descrizione e la data inizio/fine e assegnare il pulsante Start alla macro che ti ho già inviato?
Quella macro fa tutto ciò che serve a te, addirittura ti permette di cancellare (problema che dicevo nel post precedente)
o sostituire la sigla già inserita semplicemente lasciando la data 15/02/2012 al 20/02/2012
senza inserire alcuna descrizione (o inserendo altra descrizione)
La macro trascrive la Sigla corrispondente a ciò che trova in colonna D quindi provvede a cancellare (oppure a sostituire), nel range tra le due date.

Ciao

P.s. Provare a fare come ti sto dicendo ora tralasciano l'userform
scrivi una descrizione
inserisci data inizio e data fine
avvia la macro (manualmente, poi assegnerai il comando)
e vedrai che trascriverà la sigla come descritto

Non ho capito dove va la X


La X deve essere trascritta nel foglio esattamente nella colonna della data corrente.
Si ho visto che fa esattamente quello che cercavo, era solo che con qualche userform era più intuitivo e "carino" per altre persone che lo devono usare.
Grazie di nuovo.
Ciao
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: Macro inserimento dati in automatico

Postdi Flash30005 » 20/01/12 00:00

ahidai ha scritto:con qualche userform era più intuitivo e "carino" per altre persone che lo devono usare
:eeh:

Per esperienza più le cose sono semplici, sono più intuitive e funzionano sempre,
io stesso non capivo cosa facesse quella userform
è come se creassi un duplicato confondendo così l'utente e ora ti spiego...
Tu vorresti:
Premere il comando
si apre la userform che ti permette di selezionare le persone presenti enon selezionare i "permessi",
su comando si apre una seconda userform per imputare, di quelle persone non selezionate, una giustificazione, dopodiché si apre una terza userfom per digitare una data inizio e data fine (queste due date, spero, in unica userform)
poi premere un pulsante sulla userform per tornare alla seconda userform ma,
prima deve scrivere questi dati sul foglio riepilogo
e sui fogli mese, e solo successivamente procedi con il secondo soggetto....

Invece,
togliendo tutte le userform
e digitando direttamente sul foglio riepilogo la descrizione
(o meglio se con un elenco a discesa con convalida per evitare errori di battitura)
digitare una data inizio in colonna E e data fine in colonna F per tutti gli utenti che non sono (o non saranno) presenti
premi il comando Start e hai finito.

Qual'è più semplice da usare, considerando che con il foglio riepilogo hai davanti l'intero quadro dei permessi, rispetto a ciò che fai con la userform nella quale inserisci una dato alla volta?

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro inserimento dati in automatico

Postdi ahidai » 20/01/12 11:32

Flash30005 ha scritto:
ahidai ha scritto:con qualche userform era più intuitivo e "carino" per altre persone che lo devono usare
:eeh:

Per esperienza più le cose sono semplici, sono più intuitive e funzionano sempre,
io stesso non capivo cosa facesse quella userform
è come se creassi un duplicato confondendo così l'utente e ora ti spiego...
Tu vorresti:
Premere il comando
si apre la userform che ti permette di selezionare le persone presenti enon selezionare i "permessi",
su comando si apre una seconda userform per imputare, di quelle persone non selezionate, una giustificazione, dopodiché si apre una terza userfom per digitare una data inizio e data fine (queste due date, spero, in unica userform)
poi premere un pulsante sulla userform per tornare alla seconda userform ma,
prima deve scrivere questi dati sul foglio riepilogo
e sui fogli mese, e solo successivamente procedi con il secondo soggetto....

Invece,
togliendo tutte le userform
e digitando direttamente sul foglio riepilogo la descrizione
(o meglio se con un elenco a discesa con convalida per evitare errori di battitura)
digitare una data inizio in colonna E e data fine in colonna F per tutti gli utenti che non sono (o non saranno) presenti
premi il comando Start e hai finito.

Qual'è più semplice da usare, considerando che con il foglio riepilogo hai davanti l'intero quadro dei permessi, rispetto a ciò che fai con la userform nella quale inserisci una dato alla volta?

ciao

Ciao Flash, si è esattamente questo che volevo fare, in effetti come dici tu non è male ed è semplice.
Ti chiedo solo se è possibile inserire un calendario nel foglio "rapportino" e precisamente nelle 2 colonne "dal - al".
Un'altra cosa è che se vedi nel foglio "legenda" è descritto a fianco delle varie giustificazioni il periodo da conteggiare e trascrivere sull'altro foglio, cioè alcune giustificazioni sono calendariali, mentre altre escludono il sabato; domenica e festivi.
Mi chiedevo se era possibile fare sta cosa.
Grazie ancora per la tua disponibilità.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: Macro inserimento dati in automatico

Postdi Flash30005 » 21/01/12 17:37

Quindi eliminiamo gli userform, giusto?
Il calendario può essere inserito come oggetto (ben visibile a lato)
e vedrò come inserire la data selezionata sul calendario nella colonna E o F

ahidai ha scritto:Un'altra cosa è che se vedi nel foglio "legenda" è descritto a fianco delle varie giustificazioni il periodo da conteggiare e trascrivere sull'altro foglio, cioè alcune giustificazioni sono calendariali, mentre altre escludono il sabato; domenica e festivi.
Mi chiedevo se era possibile fare sta cosa.


Me lo chiedo anche io perché non ho capito cosa si dovrebbe fare e cosa intendi per "altro foglio"

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro inserimento dati in automatico

Postdi ahidai » 21/01/12 18:05

Flash30005 ha scritto:Quindi eliminiamo gli userform, giusto?
Il calendario può essere inserito come oggetto (ben visibile a lato)
e vedrò come inserire la data selezionata sul calendario nella colonna E o F

ahidai ha scritto:Un'altra cosa è che se vedi nel foglio "legenda" è descritto a fianco delle varie giustificazioni il periodo da conteggiare e trascrivere sull'altro foglio, cioè alcune giustificazioni sono calendariali, mentre altre escludono il sabato; domenica e festivi.
Mi chiedevo se era possibile fare sta cosa.


Me lo chiedo anche io perché non ho capito cosa si dovrebbe fare e cosa intendi per "altro foglio"

ciao

Ciao Flash, ok eliminiamo gli userform, sull'altro foglio volevo dire sui fogli "Gen_Giu o Lug_Dic".
Comunque chiedevo se era possibile in base alle giustificazioni che seleziono con l'elenco a discesa che ho inserito nel foglio "rapportino col. D" e chiaramente inserendo le date ("dal" in colonna E e "al" in colonna F) e in base al conteggio dei giorni (alcune giustificazioni sono calendariali mentre le altre escludono il sabato e la domenica compresi i giorni festivi "la discrezione delle varie giustificazione sta nel foglio Legenda") mi dovrebbe trascivere sul foglio "Gen_Giu o Lug_Dic", includendo o saltando il sabato, la domenica e i giorni festivi.
Spero di essermi spiegato e grazie di nuovo.
Ciao.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: Macro inserimento dati in automatico

Postdi Flash30005 » 22/01/12 05:22

Devo dire che l'intero "progetto" è un po' caotico però ho creato le macro necessarie che spero soddisfino la richiesta

La macro principale alla quale assegnare un pulsante di comando è "Trascrivi" che riporto qui:
Codice: Seleziona tutto
Sub Trascrivi()
Dim Ws1, Ws2, Ws3, Ws4 As Worksheets
Set Ws1 = Sheets("Rapportino")
Set Ws2 = Sheets("LEGENDA")

UR1 = Ws1.Range("E" & Rows.Count).End(xlUp).Row

For RR1 = 6 To UR1
If Ws1.Range("E" & RR1).Value <> "" Then
NOME = Ws1.Range("B" & RR1).Value
If Month(Ws1.Range("E" & RR1).Value) < 7 Then
    Set TWI = Sheets("GEN_GIU")
    NC = 186
Else
    Set TWI = Sheets("LUG_DIC")
    NC = 189
End If
If Month(Ws1.Range("F" & RR1).Value) < 7 Then
    Set TWF = Sheets("GEN_GIU")
    NC = 186
Else
    Set TWF = Sheets("LUG_DIC")
    NC = 189
End If
GIU = Ws1.Range("D" & RR1).Value
If Len(GIU) < 1 Then GIU = ""
GGI = Day(Ws1.Range("E" & RR1).Value)
GGF = Day(Ws1.Range("F" & RR1).Value)
URL = Ws2.Range("B" & Rows.Count).End(xlUp).Row
SIG = ""
Fest = ""
If GIU <> "" Then
For RR2 = 2 To URL
    If Ws2.Range("G" & RR2).Value = GIU Then
            SIG = Ws2.Range("B" & RR2).Value
            Fest = Ws2.Range("H" & RR2).Value
        GoTo SaltaRG
    End If
Next RR2
End If
SaltaRG:
URM = TWF.Range("D" & Rows.Count).End(xlUp).Row
    For RN = 18 To URM
        If TWF.Range("D" & RN).Value = NOME Then
            Riga = RN
            GoTo SaltaNome
        End If
    Next RN
SaltaNome:
    For CC3 = 5 To NC
If Val(TWF.Cells(17, CC3)) > GGF Then GoTo SaltaRR1
        If Val(TWF.Cells(17, CC3)) >= GGI And Val(TWF.Cells(17, CC3)) <= GGF Then
            If Len(Fest) < 58 Then
            TWF.Cells(Riga, CC3) = SIG
            Else
            If UCase(TWF.Cells(8, CC3).Value) <> "X" And UCase(TWF.Cells(7, CC3).Value) <> "X" Then TWF.Cells(Riga, CC3) = SIG
            End If
        End If
    Next CC3
End If
SaltaRR1:
Next RR1
End Sub


Dal Menu -> Inserisci -> Oggetto
seleziona "Controllo Calendario 11.0
Lo dimensioni e lo posizioni nelle colonne "J:O"

Nel vba di ThisWorkbook inserisci questo codice
Codice: Seleziona tutto
Private Sub Workbook_Open()
Worksheets("Rapportino").Calendar1.Value = Date
End Sub

che permette di aggiornare alla data attuale il Calendario

inoltre nel Vba del foglio "Rapportino"
incolla questo codice
Codice: Seleziona tutto
Private Sub Calendar1_Click()
NY = Worksheets("Rapportino").Calendar1.Year
NM = Format(Worksheets("Rapportino").Calendar1.Month, "00")
ND = Format(Worksheets("Rapportino").Calendar1.Day, "00")
Worksheets("Rapportino").Cells(Riga, Col).Value = DateSerial(NY, NM, ND)
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
UR = Range("A" & Rows.Count).End(xlUp).Row
CheckArea = "E6:F" & UR
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
    If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
    Application.EnableEvents = False
    Riga = Selection.Row
    Col = Selection.Column
    If Cells(Riga, Col - 1).Value <> "" And Selection.Value = "" Then
        If Col = 5 Then
            MsgBox "Seleziona la data DAL... sul Calendario"
        Else
            MsgBox "Seleziona la data AL... sul Calendario"
        End If
        Worksheets("Rapportino").Calendar1.Select
    End If
End If
Application.EnableEvents = True
End Sub


Ora dovrebbe funzionare altrimenti scarica il file che ti ho inviato in MP (per via della Privacy)
e utilizza quello

In caso di modifica di una descrizione (causale sul foglio Riepilogo) è opportuno cancellare la descrizione lasciando a Data Da e la Data Al e avviare la macro in maniera da eliminare nei fogli mesi le sigle inserite precedentemente
e poi inserire la causale corretta e riprocessare.
Questo passaggio è necessario in quanto se precedentemente era stata inserita una causale "calanderiale" avrai le sigle anche nei giorni festivi e processando successivamente una casuale con festività ti ritroveresti nei giorni festivi la sigla precedente in quanto non eliminata.

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro inserimento dati in automatico

Postdi ahidai » 22/01/12 13:08

Ciao Flash, grazie per la tua disponibilità, comunque ho cercato di fare tutto quello che mi hai spiegato (Menu -> Inserisci -> Oggetto) ma non trovo il Controllo Calendario 11.0.
Ho scaricato il file e mi da questo problema "errore di run-time 438, proprietà o metodo non supportati dall'oggetto", seleziono debug e si apre il VBA su "Worksheets("Rapportino").Calendar1.Value = Date".
Uso Excel 2007 e non riesco a capire perchè non va?
Ho provato la macro "trascrivi" ed è tutto ok, vorrei capire come hai fatto ad escludere i giorni festivi, questo perchè se dovessi inserire una nuova giustificazione saprei cosa fare e/o modificare.
Ciao e grazie ancora.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: Macro inserimento dati in automatico

Postdi Flash30005 » 22/01/12 16:46

il problema nasce dalle due versioni di excel e dalle loro librerie
allora prova cosi magari registrando una macro mentre esegui l'operazione

    Excel 2007
    Ribbon(linguetta): Sviluppo (Vedi nota finale)
    Pulsante: Inserisci
    In controlli ActiveX fai click su: Altri controlli
    Come Controllo Calndario 12.0

Poi in funzione dell'oggetto inserito modificherai la macro da ne postata es:
al posto di Calendar1 utilizzerai la voce proposta dalla macro registrata


ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro inserimento dati in automatico

Postdi ahidai » 22/01/12 23:13

Flash30005 ha scritto:il problema nasce dalle due versioni di excel e dalle loro librerie
allora prova cosi magari registrando una macro mentre esegui l'operazione

    Excel 2007
    Ribbon(linguetta): Sviluppo (Vedi nota finale)
    Pulsante: Inserisci
    In controlli ActiveX fai click su: Altri controlli
    Come Controllo Calndario 12.0

Poi in funzione dell'oggetto inserito modificherai la macro da ne postata es:
al posto di Calendar1 utilizzerai la voce proposta dalla macro registrata

ciao

Ciao Flash, tutto ok sono riusciuto a risolvere grazie al tuo suggerimento.
Ora per cortesia ti chiedo se mi vuoi spiegare come hai fatto ad escludere i giorni festivi, te lo chiedo perchè se mi dovesse capitare di inserire una nuova giustificazione o modificarla saprei cosa fare.
Immensamente grazie per la tua disponibilità, ciao.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: Macro inserimento dati in automatico

Postdi Flash30005 » 23/01/12 00:16

La macro Trascrivi effettua diverse ricerche
ma mi limito solo a quella da te richiesta festività

Come ti dicevo la struttura non è delle migliori
mi sarei aspettato una tabella festività e una creazione dei fogli automatica con colorazione dei sabati, domeniche e festività tramite macro e non con una formattazione condizionale che non mi ha permesso di rilevare il colore della cella
cosìcché ho optato per la lunghezza della stringa Nella colonna H del foglio Legenda che corrisponde a 58 caratteri quando trattasi di escludere appunto i Sabati, Domeniche e Festività
il codice interessato è questo
Codice: Seleziona tutto
Fest = ""  '<<< azzera la variabile (stringa)
If GIU <> "" Then
For RR2 = 2 To URL
    If Ws2.Range("G" & RR2).Value = GIU Then
            SIG = Ws2.Range("B" & RR2).Value  '<<<< trova la Sigla
            Fest = Ws2.Range("H" & RR2).Value '<<<< trova la Stringa in H
        GoTo SaltaRG
    End If
Next RR2


mentre in quest'altra parte di codice
Codice: Seleziona tutto
If Val(TWF.Cells(17, CC3)) > GGF Then GoTo SaltaRR1
        If Val(TWF.Cells(17, CC3)) >= GGI And Val(TWF.Cells(17, CC3)) <= GGF Then
            If Len(Fest) < 58 Then   '<<<<<<<<<<<<< controlla lunghezza della stringa variabile "Fest" se minore
                TWF.Cells(Riga, CC3) = SIG   '<<<<<<<<<<<< scrive la Sigla in ogni cella
            Else '<<<<<<<< altrimenti solo dove non trova la X nella riga 7 e 8
                If UCase(TWF.Cells(8, CC3).Value) <> "X" And UCase(TWF.Cells(7, CC3).Value) <> "X" Then TWF.Cells(Riga, CC3) = SIG
            End If
        End If
    Next CC3
End If


Nelle righe 7 e 8 del foglio mesi sono state inserite tramite formule o manualmente (da te) delle "X" e pertanto ho sfruttato questo particolare che usi anche tu nelle tue formule (esempio per colorare le celle)

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Macro inserimento dati in automatico":


Chi c’è in linea

Visitano il forum: Nessuno e 54 ospiti