Previous page | 1 | Next page
Facebook  

Riportare scadenze documenti personali

Last Update: 10/25/2016 5:23 PM
Author
Print | Email Notification    
Post: 2
Registered in: 10/18/2016
Age: 38
Junior User
2013
OFFLINE
10/20/2016 10:33 PM
 
Modify
 
Delete
 
Quote

Ciao a tutti, vorrei creare uno scadenziario in cui, nel primo foglio riepilogativo da tenere d'occhio ogni giorno, vengano riportate nelle celle solo i documenti in scadenza o scaduti. Non ho idea di che formula utilizzare per realizzarlo. Ho già creato le formule che nei vari fogli dei singoli tipi di documenti mi dicono in base a emissione e scadenza se il documento è scaduto, in scadenza, non inserito o valido. Allego un file di prova - Grazie per i suggerimenti!!
E' giusto adorare Gesù?Testimoni di Geova Online...129 pt.6/19/2019 10:53 PM by barnabino
Ilaria FratoniTELEGIORNALISTE FANS FORU...52 pt.6/19/2019 11:40 PM by alcibiade73
Formula per cancellare dati all'interno di un campo definito con data40 pt.6/19/2019 7:24 PM by Pako96
Post: 2,344
Registered in: 6/21/2013
Location: NAPOLI
Age: 65
Veteran User
Excel 2013
OFFLINE
10/20/2016 11:18 PM
 
Modify
 
Delete
 
Quote

Ciao Arcanum

Solo una precisazione: sullo scadenziario per ogni documento nelle colonne "In scadenza" e "Scaduto" cosa deve essere riportato? Il nome dell'iscritto?

Alfredo
Post: 2,348
Registered in: 6/21/2013
Location: NAPOLI
Age: 65
Veteran User
Excel 2013
OFFLINE
10/21/2016 3:01 PM
 
Modify
 
Delete
 
Quote

Ciao Arcanum78

Ti propongo questa macro che dovrebbe fare quello che chiedi

vb
Sub prova()
Dim i As Integer
Dim colscad As Integer
Dim ur As Long
Dim ur1 As Long
Dim lr As Long
Dim cel As Range
Dim rng As Range
Range("a5:l100").ClearContents
For i = 2 To Sheets.Count
    Select Case Sheets(i).Name
        Case Is = "Patenti"
        colscad = 1
        Case Is = "Tessere sanitarie"
        colscad = 3
        Case Is = "Carta di identità"
        colscad = 5
        Case Is = "Passaporto"
        colscad = 7
        Case Is = "Bancomat"
        colscad = 9
        Case Is = "Carta di credito"
        colscad = 11
    End Select
lr = Sheets(i).Cells(Rows.Count, "D").End(xlUp).Row
Set rng = Sheets(i).Range("D1:D" & lr)
    For Each cel In rng
        ur = Cells(Rows.Count, colscad).End(xlUp).Row
        ur1 = Cells(Rows.Count, colscad + 1).End(xlUp).Row
            If cel.Value = "IN SCADENZA" Then
                Cells(ur + 1, colscad).Value = cel.Offset(0, -3).Value
                ElseIf cel.Value = "SCADUTA" Then
                Cells(ur1 + 1, colscad + 1).Value = cel.Offset(0, -3).Value
        End If
    Next cel
Next i
End Sub


Dai tuoi fogli ho eliminato delle colonne (che non servivano) e le celle vuote (che al VBA "danno fastidio").

Sul foglio "Scadenziario" ti ho messo un pulsante per il lancio della macro; volendo se ne può fare anche a meno lanciando la macro all'attivazione del foglio "Scadenzario".

Ti allego il file e fai sapere.

Alfredo
Post: 2
Registered in: 10/18/2016
Age: 38
Junior User
2013
OFFLINE
10/21/2016 3:36 PM
 
Modify
 
Delete
 
Quote

Re:
alfrimpa, 21/10/2016 15.01:

Ciao Arcanum78 Ti propongo questa macro che dovrebbe fare quello che chiedi
vb
Sub prova() Dim i As Integer Dim colscad As Integer Dim ur As Long Dim ur1 As Long Dim lr As Long Dim cel As Range Dim rng As Range Range("a5:l100").ClearContents For i = 2 To Sheets.Count Select Case Sheets(i).Name Case Is = "Patenti" colscad = 1 Case Is = "Tessere sanitarie" colscad = 3 Case Is = "Carta di identità" colscad = 5 Case Is = "Passaporto" colscad = 7 Case Is = "Bancomat" colscad = 9 Case Is = "Carta di credito" colscad = 11 End Select lr = Sheets(i).Cells(Rows.Count, "D").End(xlUp).Row Set rng = Sheets(i).Range("D1:D" & lr) For Each cel In rng ur = Cells(Rows.Count, colscad).End(xlUp).Row ur1 = Cells(Rows.Count, colscad + 1).End(xlUp).Row If cel.Value = "IN SCADENZA" Then Cells(ur + 1, colscad).Value = cel.Offset(0, -3).Value ElseIf cel.Value = "SCADUTA" Then Cells(ur1 + 1, colscad + 1).Value = cel.Offset(0, -3).Value End If Next cel Next i End Sub 
Dai tuoi fogli ho eliminato delle colonne (che non servivano) e le celle vuote (che al VBA "danno fastidio"). Sul foglio "Scadenziario" ti ho messo un pulsante per il lancio della macro; volendo se ne può fare anche a meno lanciando la macro all'attivazione del foglio "Scadenzario". Ti allego il file e fai sapere.



Ciao e grazie della risposta! Si, nel foglio scadenziario vorrei fossero riportati solo i nomi delle persone con documenti scaduti o in scadenza. Oggi stesso provo il tuo file, intanto grazie
Post: 3
Registered in: 10/18/2016
Age: 38
Junior User
2013
OFFLINE
10/22/2016 2:31 PM
 
Modify
 
Delete
 
Quote

Ho provato il foglio che m hai inviato ed è perfetto per quello che volevo fare!

A questo punto ti chiedo: se io volessi adattarlo al foglio che effettivamente utilizzo, più complesso e con circa 100 iscritti, potrei adattare quello o non è possibile perchè non basta modificare i campi con i nomi dei fogli ecc? (Considera che di macro non ho alcuna esperienza....)

Se non riesco a farlo, esiste una formula o più formule Excel che sostituiscano la macro? [SM=x423017]
Post: 2,350
Registered in: 6/21/2013
Location: NAPOLI
Age: 65
Veteran User
Excel 2013
OFFLINE
10/22/2016 9:57 PM
 
Modify
 
Delete
 
Quote

Ciao Arcanum

La macro che ho scritto funziona indipendentemente dal numero di record presenti nei fogli dei documenti quindi a te basta copiare in tuoi dati nel mio file e lanciare la macro.

Se hai problemi sono qua.

Alfredo
Post: 4
Registered in: 10/18/2016
Age: 38
Junior User
2013
OFFLINE
10/24/2016 7:42 PM
 
Modify
 
Delete
 
Quote

Ciao e grazie per la disponibilità

Ho provato ad adattare la tua macro alla cartella "definitiva" cambiando il range delle celle nel foglio scadenziario e modificando i nomi dei fogli. Mi dà errore (immagino sia ovvio che lo dia, avrò tralasciato qualcosa) codice 1004. Vorrei anche che al foglio 6 mi riporti "da consegnare", ma non saprei come fare:

Sub prova()
Dim i As Integer
Dim colscad As Integer
Dim ur As Long
Dim ur1 As Long
Dim lr As Long
Dim cel As Range
Dim rng As Range
Range("q8:w35").ClearContents
For i = 2 To Sheets.Count
Select Case Sheets(i).Name
Case Is = "3"
colscad = 1
Case Is = "4"
colscad = 3
Case Is = "5"
colscad = 5
Case Is = "6"
colscad = 7
End Select
lr = Sheets(i).Cells(Rows.Count, "D").End(xlUp).Row
Set rng = Sheets(i).Range("D1:D" & lr)
For Each cel In rng
ur = Cells(Rows.Count, colscad).End(xlUp).Row
ur1 = Cells(Rows.Count, colscad + 1).End(xlUp).Row
If cel.Value = "IN SCADENZA" Then
Cells(ur + 1, colscad).Value = cel.Offset(0, -3).Value
ElseIf cel.Value = "SCADUTA" Then
Cells(ur1 + 1, colscad + 1).Value = cel.Offset(0, -3).Value
End If
Next cel
Next i
End Sub


Ti allego il file pressoché definitivo. Grazie
Post: 2,353
Registered in: 6/21/2013
Location: NAPOLI
Age: 65
Veteran User
Excel 2013
OFFLINE
10/24/2016 10:18 PM
 
Modify
 
Delete
 
Quote

Per alegare file con macro devi zipparli.

Rifallo.

Alfredo
Post: 5
Registered in: 10/18/2016
Age: 38
Junior User
2013
OFFLINE
10/25/2016 6:58 AM
 
Modify
 
Delete
 
Quote

Re:
alfrimpa, 24/10/2016 22.18:

Per alegare file con macro devi zipparli.

Rifallo.




Post: 2,354
Registered in: 6/21/2013
Location: NAPOLI
Age: 65
Veteran User
Excel 2013
OFFLINE
10/25/2016 12:14 PM
 
Modify
 
Delete
 
Quote

Arcanum il file che hai allegato ora è completamente diverso da quello postato in precedenza per cui la mia macro mai e poi mai avrebbe potuto funzionare.

Quindi va riscritta da capo!

Se avessi postato inizialmente questo file avremmo evitato di perdere tempo inutilmente.

Alfredo
Post: 2,355
Registered in: 6/21/2013
Location: NAPOLI
Age: 65
Veteran User
Excel 2013
OFFLINE
10/25/2016 3:40 PM
 
Modify
 
Delete
 
Quote

Allora Arcanum ho dovuto rifare tutto daccapo.

Ho scritto quattro macro per l'aggiornamento dei singoli fogli e una che le richiama tutte collegata al pulsante "Aggiorna" posto sul foglio "SCADENZIARIO"

2^ Macro

Sub AggiornaFoglio3()
Dim ur As Long
Dim ur1 As Long
Dim lr As Long
Dim rng As Range
Dim cel As Range
lr = Worksheets("3").Cells(Rows.Count, "L").End(xlUp).Row
Set rng = Worksheets("3").Range("L4:L" & lr)
Worksheets("SCADENZIARIO").Range("Q7:r35").ClearContents
For Each cel In rng
    If cel.Value = "In scadenza" Then
        ur = Worksheets("SCADENZIARIO").Cells(Rows.Count, "q").End(xlUp).Row
        Worksheets("SCADENZIARIO").Cells(ur + 1, "q").Value = cel.Offset(0, -8).Value
        ElseIf cel.Value = "Scaduta" Then
        ur1 = Worksheets("SCADENZIARIO").Cells(Rows.Count, "r").End(xlUp).Row
        Worksheets("SCADENZIARIO").Cells(ur1 + 1, "r").Value = cel.Offset(0, -8).Value
    End If
Next cel
End Sub


2^ macro

Sub AggiornaFoglio4()
Dim ur As Long
Dim ur1 As Long
Dim lr As Long
Dim rng As Range
Dim cel As Range
lr = Worksheets("4").Cells(Rows.Count, "W").End(xlUp).Row
Set rng = Worksheets("4").Range("W4:W" & lr)
Worksheets("SCADENZIARIO").Range("S7:T35").ClearContents
For Each cel In rng
    If cel.Value = "In scadenza" Then
        ur = Worksheets("SCADENZIARIO").Cells(Rows.Count, "s").End(xlUp).Row
        Worksheets("SCADENZIARIO").Cells(ur + 1, "s").Value = cel.Offset(0, -19).Value
        ElseIf cel.Value = "Scaduta" Then
        ur1 = Worksheets("SCADENZIARIO").Cells(Rows.Count, "t").End(xlUp).Row
        Worksheets("SCADENZIARIO").Cells(ur1 + 1, "t").Value = cel.Offset(0, -19).Value
    End If
Next cel
End Sub


3^ Macro

Sub AggiornaFoglio5()
Dim ur As Long
Dim ur1 As Long
Dim lr As Long
Dim rng As Range
Dim cel As Range
lr = Worksheets("5").Cells(Rows.Count, "j").End(xlUp).Row
Set rng = Worksheets("5").Range("j4:j" & lr)
Worksheets("SCADENZIARIO").Range("U7:v35").ClearContents
For Each cel In rng
    If cel.Value = "In scadenza" Then
        ur = Worksheets("SCADENZIARIO").Cells(Rows.Count, "u").End(xlUp).Row
        Worksheets("SCADENZIARIO").Cells(ur + 1, "u").Value = cel.Offset(0, -7).Value
        ElseIf cel.Value = "Scaduta" Then
        ur1 = Worksheets("SCADENZIARIO").Cells(Rows.Count, "v").End(xlUp).Row
        Worksheets("SCADENZIARIO").Cells(ur1 + 1, "v").Value = cel.Offset(0, -7).Value
    End If
Next cel
End Sub


4^ Macro

Sub AggiornaFoglio6()
Dim ur As Long
Dim ur1 As Long
Dim lr As Long
Dim rng As Range
Dim cel As Range
lr = Worksheets("6").Cells(Rows.Count, "k").End(xlUp).Row
Set rng = Worksheets("6").Range("k4:k" & lr)
Worksheets("SCADENZIARIO").Range("w7:w35").ClearContents
For Each cel In rng
    If cel.Value = "Da consegnare" Then
        ur = Worksheets("SCADENZIARIO").Cells(Rows.Count, "w").End(xlUp).Row
        Worksheets("SCADENZIARIO").Cells(ur + 1, "w").Value = cel.Offset(0, -8).Value
    End If
Next cel
End Sub


5^ Macro

Sub AggiornaTutto()
    Call AggiornaFoglio4
    Call AggiornaFoglio5
    Call AggiornaFoglio6
End Sub


Fai sapere.

Alfredo
Post: 6
Registered in: 10/18/2016
Age: 38
Junior User
2013
OFFLINE
10/25/2016 4:20 PM
 
Modify
 
Delete
 
Quote

ho provato a scarica il file che hai appena caricato, ma credo sia il primo file che ho inviato giorni fa, non l'ultimo
Post: 2,358
Registered in: 6/21/2013
Location: NAPOLI
Age: 65
Veteran User
Excel 2013
OFFLINE
10/25/2016 4:36 PM
 
Modify
 
Delete
 
Quote

Forse ho sbagliato

Riprovo

Alfredo
Post: 7
Registered in: 10/18/2016
Age: 38
Junior User
2013
OFFLINE
10/25/2016 5:23 PM
 
Modify
 
Delete
 
Quote

Re:
alfrimpa, 25/10/2016 16.36:

Forse ho sbagliato

Riprovo





Tutto funzionante!

Ho dovuto solo aggiungere la riga "aggiornafoglio3" alla macro nr. 5.
Ovviamente non era mia intenzione farti perdere tempo inutilmente, per me, da profano, era sufficiente una modifica alla macro, non una riscrittura. L'avessi saputo non avrei rifatto il file, ma ampliato ed evoluto il precedente.

Grazie per l'aiuto



Admin Thread: | Close | Move | Delete | Modify | Email Notification Previous page | 1 | Next page
New Thread
 | 
Reply
Home Forum | Bacheca | Album | Users | Search | Log In | Register | Admin
Tutti gli orari sono GMT+01:00. Adesso sono le 5:56 AM. : Printable | Mobile | Regolamento | Privacy
FreeForumZone [v.5.0.0] - Copyright © 2000-2019 FFZ srl - www.freeforumzone.com