CONTA DI CARTELLE E SOTTOCARTELLE



  • CONTA DI CARTELLE E SOTTOCARTELLE
    di GIUS (utente non iscritto) data: 18/09/2012 13:20:14

    Buongiorno,
    scusatemi forse è il luogo meno adatto per domandare questa cosa, cerco un programma che mi dica quante cartelle e sottocARTELLE HO IN UN DETERMINATO LUOGO DEL hd. ESISTE?
    GRAZIE

    Nuovo aggiornamento della discussione Macro per elencare files di cartelle e sottocartelle




  • di HarryBosch data: 18/09/2012 13:49:58

    Ciao Gius
    hai già risposto: questo non è il luogo adatto per cercare quello che richiedi, non tanto perchè non ci sia qualcuno in grado di risponderti, ma perchè il Forum è dedicato a tutt'altro argomento.

    E poi, se ti piace Excel, perchè non ti crei un "programmino" personalizzato che ricerchi tutti i file e le cartelle presenti in un determinato spazio dell'HD?
    Comincia a cercare informazioni, già all'interno di questo Forum, su:
    msoFileDialogFilePicker
    msoFileDialogFolderPicker
    msoFileDialogOpen
    GetParentFolderName

    e poi magari ne riparliamo in un nuovo thread
    Ciao, Vanni


  • che tesoro che sei
    di GIUS (utente non iscritto) data: 18/09/2012 16:00:33

    Grazie Bosh, non è che sono pigro anzi arrivato alle 18:30 a casa da lavoro se non sono stanco cerco di creare e reperire informazioni. Poi so che anche EXCEL si può programmare per la conta di cartelle e sottocartelle. Questo non per dire che è meglio che mi fanno un programmino bello e fatto , senza arroganza, ma ho poco tempo per istruirmi



  • di isy (utente non iscritto) data: 18/09/2012 18:53:27

    Ciao GIUS
    Citazione: cerco un programma che mi dica quante cartelle e sottocARTELLE HO IN UN DETERMINATO LUOGO DEL hd. ESISTE

    Ho allegato un file Excel per creare l'elenco sul foglio



  • di Vecchio Frac data: 18/09/2012 20:09:42

    Non per difendere Vanni, che non ne ha bisogno, ma forse Gius non è stato chiaro nel chiedere un suggerimento per il suo problema. Infatti da come era stata posta la domanda sembrava volesse un programmino *non* costruito con strumenti Office.
    Isy ha fornito un modellino funzionante e completo reperito in rete, mentre Vanni ha cominciato a pensare in grande per costruirselo :) è il suo pregio.
    Io invece suggerisco un pezzo di codice in VBA che scandaglia una directory e fornisce l'elenco dei file.
    Capire come funziona non è difficile, come non è difficile adattarlo alle proprie esigenze; e comunque in rete ci sono guide complete a VBScript e al suo modello di oggetti.
     
    Sub test
      Set fso = CreateObject("Scripting.FileSystemObject")
      source = "C:mydir"
    
      Set oFolder = fso.GetFolder(source)
    
      Set oFiles = oFolder.Files
      For Each oFile in oFiles
        msgbox oFile.Name
      Next
    End Sub





  • wonderfull
    di GIUS (utente non iscritto) data: 18/09/2012 23:03:31

    Grazie Isy fantastico il tuo file, anche se dovevo analizzare una specifica cartella che ha miriadi di sottocartelle, queste ultime composte da tanti file PDF e JPG, non so come scegliere la cartella da analizzare.

    grazie anche al mitico FRAC però come e dove lo piazzo il tuo codice. Inoltre io non rivolgevo critiche a BOSH a cui voglio bene, il quale mi ha fatto un modellino spettacolare che non allego, previo consenso dell'autore stesso, perché non mio e quindi violerei la privacy.
    Frac gentilmente dimmi come si usa il tuo codice



  • di Vecchio Frac data: 19/09/2012 09:52:08

    Puoi copincollare il codice in un nuovo Modulo (copia il testo, apri Excel, premi Alt-F11 per accedere all'area del codice, Inserisci --> Modulo, incolla, premi F5 per eseguire).
    E' solo un codice di esempio che in una serie di msgbox successive elenca i file contenuti in una cartella (devi ovviamente cambiare source = "C:mydir" con il percorso appropriato).
    All'interno di For Each potresti invece che mostrare la msgbox con il nome del file inserire il nome di ogni file in una cella libera del Foglio1, tanto per dirne una.





  • di GIUS (utente non iscritto) data: 19/09/2012 11:31:47

    CIAO FRAC,
    uso Office 2010 e seguendo la tua procedura mi de errore di runtime


  • PER BOSH
    di GIUS (utente non iscritto) data: 19/09/2012 11:43:17

    VERAMENTE IERI MI ERO ISCRITTO AL BLOG, NON CAPISCO PERCHè NON MI LOGGA



  • di Vecchio Frac data: 19/09/2012 12:08:03

    Gius, prova la versione che ti allego, nel foglio corrente in colonna A restituisce l'elenco dei file contenuti in ogni sottocartella della cartella di origine "source" impostata nel codice, che ovviamente devi cambiare opportunamente.
    Se dà ancora errore chiediamo a Vanni, che ha Excel 2010 :)

    Sul problema del login, controlla il nome utente, le maiuscole e minuscole della password, e riprova.
     
    Option Explicit
    
    Private oFileSys As Object, i As Integer
    
    Sub elenco_files_e_cartelle()
    Dim source As String
    
        source = "G:BLOG"
        
        Set oFileSys = CreateObject("Scripting.FileSystemObject")
        
        i = 0
        
        [A:A].ClearContents
        
        GetDir (source)
        
        MsgBox "Ho terminato."
    
    End Sub
    
    
    Sub GetDir(dir)
    Dim oFolder As Object, oFolders As Object, oFiles As Object, item As Object, item2 As Object
    
        Set oFolder = oFileSys.GetFolder(dir)
        Set oFolders = oFolder.SubFolders
        Set oFiles = oFolder.Files
        
        ' scandisce tutte le sottocartelle
        For Each item2 In oFiles
            i = i + 1
            Cells(i, 1) = item2.Path & "" & item2.Name
        Next
    
        For Each item In oFolders
            i = i + 1
            Cells(i, 1) = item.Path & "" & item.Name
            GetDir (item)
        Next
    End Sub
    





  • :-(
    di GIUS (utente non iscritto) data: 19/09/2012 13:31:42

    Mi da sempre errore di runtime e inoltre il modello di ISY no mi dice ne il numero delle sottocartelle ne quanta pdf e quanta jpg ho all' interno, ma solo il numero totale



  • di Vecchio Frac data: 19/09/2012 14:05:20

    Su quale riga di codice viene evidenziato e fornito l'"Errore di runtime" ?
    Potrebbe darsi che non hai installato il modello ad oggetti di VBScript, anche se è un'ipotesi remota.
    Adesso controllo il modello di Isy e vediamo di modificarlo per le tue necessità.




  • 76ERRORE DI RUNTIME
    di GIUS (utente non iscritto) data: 19/09/2012 14:41:05

    ciao Frac,
    l'errore me lo da quando quando faccio F5 dopo aver aperto ehcel e inserito il tuo codice



  • di Vecchio Frac data: 19/09/2012 15:56:24

    Ma qual è il numero associato all'errore di runtime? ce ne sono diversi.
    E la descrizione dell'errore di runtime? la finestra di messaggio che appare dovrebbe riportartelo.

    Se il numero è '76' è perché non esiste la cartella specificata :)

    Ovviamente devi cambiare
    source = "G:BLOG"
    con una cartella di partenza valida, esistente sul tuo computer.




  • madoooooooooooooooooooo
    di GIUS (utente non iscritto) data: 19/09/2012 16:56:23

    Quanta roba, spettacolare davvero, ho inserito il codice VBA che ti scrivo però mom mi dice il numero delle sottocartelle, dei pdf e delle jpg
     
    Option Explicit
    
    Private oFileSys As Object, i As Integer
    
    Sub elenco_files_e_cartelle()
    Dim source As String
    
        source = "\MIO-PCUsersPublicscansioni passi carrabili"
        
        Set oFileSys = CreateObject("Scripting.FileSystemObject")
        
        i = 0
        
        [A:A].ClearContents
        
        GetDir (source)
        
        MsgBox "Ho terminato."
    
    End Sub
    
    
    Sub GetDir(dir)
    Dim oFolder As Object, oFolders As Object, oFiles As Object, item As Object, item2 As Object
    
        Set oFolder = oFileSys.GetFolder(dir)
        Set oFolders = oFolder.SubFolders
        Set oFiles = oFolder.Files
        
        ' scandisce tutte le sottocartelle
        For Each item2 In oFiles
            i = i + 1
            Cells(i, 1) = item2.Path & "" & item2.Name
        Next
    
        For Each item In oFolders
            i = i + 1
            Cells(i, 1) = item.Path & "" & item.Name
            GetDir (item)
        Next
    End Sub
    



  • di Vecchio Frac data: 19/09/2012 17:25:36

    Purtroppo questa funzione di conteggio l'ho fatta in un file che ho lasciato in ufficio e che qui non posso recuperare, però considera che una semplice variabile n potrà aiutarti, nel punto in cui cicli per ogni item2 aggiungi 1 a n e poi recuperi n, se la dichiari Private all'inizio e quindi comune a tutto il progetto.
    Per recuperare i file di una certa estensione, fai un If dove cicli su ogni item2 (ogni item2 è il file di ogni sottocartella esaminata) e memorizzi il n° di pdf e jpg che incontri (if right(oFile, 3) = "pdf" then ...).

    Venerdì rientro in ufficio (domani non ci sono) e posto l'intera soluzione, magari anche esteticamente migliorata :)




  • grazie
    di GIUS (utente non iscritto) data: 19/09/2012 17:51:19

    ehehehh sembra tedesco a prima lettura, ma poi rieleggendo ci si arriva, per venerdi guarda dovevo proprio consegnare il numero di faldoni che ho scansionato, facendomi una grande palla, con il totale di pdf e jpg.
    Pensa che palle che mi sono fatto che il numero a computer non coincide con quello cartaceo



  • di Vecchio Frac data: 19/09/2012 18:14:32

    Senti, capisco perfettamente.
    Per questo mi son applicato e ho ricostruito il programmetto adesso, a casa.
    Lo allego per intero, spero che tu sia online per poterlo vedere.
    Nel foglio1 avrai l'elenco delle directory in grassetto, dei file in esse contenute e la statistica finale.
    Fammi sapere :o)
     
    Option Explicit
    
    Private oFileSys As Object, nFiles As Long, nSubDirs As Long, ext_file As String
    
    Sub elenco_files_e_cartelle()
    Dim source As String, i As Integer, j As Integer, v As Variant, ext As Variant, c As Collection
    
        source = "\MIO-PCUsersPublicscansioni passi carrabili"
        
        Set oFileSys = CreateObject("Scripting.FileSystemObject")
        
        [A:B].Clear
        
        nFiles = 0
        nSubDirs = 0
        ext_file = ""
        
        GetDir source, i
        
        Cells(i + 2, 1) = "Totale " & nFiles & " files in " & nSubDirs & " subdirectory."
        Cells(i + 3, 1) = "Statistiche sui singoli files:"
        
        ext_file = Replace(ext_file & "@", ";@", "")
        v = Split(ext_file, ";")
        j = i + 3
        
        Set c = New Collection
        Set c = duplicates(v)
        
        For Each ext In c
            j = j + 1
            Cells(j, 1) = ext
            Cells(j, 2) = count_occurrences(v, CStr(ext))
        Next
        
        [a1].Select
        MsgBox "Ho terminato."
    
    End Sub
    
    Private Function GetDir(dir, i As Integer) As Long
    Dim oFolder As Object, oFolders As Object, oFiles As Object, oFold As Object, oFile As Object
    
        Set oFolder = oFileSys.GetFolder(dir)
        Set oFolders = oFolder.SubFolders
        Set oFiles = oFolder.Files
        
        If i = 0 Then
            i = i + 1
            nSubDirs = nSubDirs + 1
            Cells(i, 1) = oFolder.Path
            Cells(i, 1).Font.Bold = 1
        End If
            
        For Each oFile In oFiles
            i = i + 1
            Cells(i, 2) = oFile.Name
            nFiles = nFiles + 1
            ext_file = ext_file & Mid(oFile, InStrRev(oFile, ".") + 1) & ";"
        Next
    
        For Each oFold In oFolders
            i = i + 1
            nSubDirs = nSubDirs + 1
            Cells(i, 1) = oFold.Path & "" & oFold.Name
            Cells(i, 1).Font.Bold = 1
            GetDir oFold, i
        Next
    End Function
    
    Function count_occurrences(vettore As Variant, search As String)
    Dim s As String
    
        s = Join(vettore, vbNullChar) & vbNullChar
        LCase (s)
        search = LCase(search)
        count_occurrences = Len(Replace(s, search & vbNullChar, search & vbNullChar & "*")) - Len(s)
    
    End Function
    
    
    Function duplicates(vettore As Variant) As Collection
    Dim v As Variant, dups As Collection
        
        Set dups = New Collection
        
        On Error Resume Next
        
        For Each v In vettore
            dups.Add CStr(v), v
        Next
        
        On Error GoTo 0
        Set duplicates = dups
    
    End Function
    
    






  • di Vecchio Frac data: 19/09/2012 18:21:49

    C'è qualcosina da aggiustare, sui conteggi, soprattutto per file o directory con le estensioni lunghe o i nomi di directory che contengono un punto.
    Ma il conteggio su file normale, jpg o pdf, funziona.
    E questa è già una buona notizia :)




  • grazie
    di GIUS (utente non iscritto) data: 19/09/2012 22:14:48

    Grazie non dovevi,
    stasera poi me ne successa un'altra ho inciampato nei fili e si è staccata la cassetta nel muro, adesso sono senza ADSL e telefono in ufficio.
    Spero che non mi licenzino. Cmq mo lo testo il tuo programma.


  • mmmmmmmmmmmmm
    di GIUS (utente non iscritto) data: 20/09/2012 00:18:41

    lo ho appena testato a casa e mi dava ERRORE OVERFLOW, forse sicuramenye perche gli ho dato C: come source
    Però non diceva file TOT N.100 per es.



  • di Vecchio Frac data: 20/09/2012 07:39:08

    LOL mi dispiace per l'ADSL :)
    Non puoi dare la radice come source perchè ci sono molti file nascosti (come il Recycle bin) che non vengono maneggiati correttamente.
    Ho già detto che ci sono limiti alla funzione che devo riguardare.
    Oggi non ci sono fin stasera.
    Una variante da provare è dichiarare i e j As Long invece che As Integer.




  • ciao Frac
    di GIUS (utente non iscritto) data: 20/09/2012 12:20:25

    ti scrivo dall'ufficio, il problema con l'ADSL è risolto.
    Il problema della conta risolto a metà nel senso che ho contato a mano e quindi è finita l'urgenza. Tutta via sono ancora interessato al modellino vedi se riesce a restituirmi il numero quantitativo anche di .txt .psp .php, ecc. perfavore.
    Grazie



  • di Vecchio Frac data: 20/09/2012 18:43:58

    Veramente a me funziona (a parte il problema di dare come source "C:"), nel senso che mi elenca correttamente tutte le sottodirectory di quella specificata come source, con tutti i file in esse contenuti, e alla fine mi mostra il sommario (conteggio) delle estensioni trovate.
    Ho fatto la modifica da Integer a Long in:
    Sub elenco_files_e_cartelle()
    Dim source As String, i As Long, j As Long, v As Variant, ext As Variant, c As Collection

    e nella firma di GetDir:
    Private Function GetDir(dir, i As Long) As Long

    ma mi pare che funzioni tutto.





  • di Vecchio Frac data: 20/09/2012 20:42:04

    Riporto una versione migliorata del codice.
    Invito tutti, anche quelli non interessati, solo per curiosità, a testarlo e a riportarmi eventuali problemi, così poi una volta atteso che funziona lo pubblico nel mio blog ^_^

    Ho aggiunto un controllo sul limite raggiunto nell'elenco delle cartelle/sottocartelle/files e ho inserito una trappola per errori che gestisca l'eventuale errore 70 (autorizzazione negata) che compare ad esempio cercando di controllare, scandagliare o aprire il recycle bin (che è una cartella particolare, marcata hidden e di sistema, a cui punta normalmente il Cestino del desktop).
     
    Option Explicit
    
    Private oFileSys As Object, nFiles As Long, nSubDirs As Long, ext_file As String
    
    Sub elenco_files_e_cartelle()
    Dim source As String, i As Long, j As Long, v As Variant, ext As Variant, c As Collection
    
        source = "C:cartella_con_sottocartelle_da_esaminare"
        
        Set oFileSys = CreateObject("Scripting.FileSystemObject")
        
        [A:B].Clear
        
        nFiles = 0
        nSubDirs = 0
        ext_file = ""
        
        GetDir source, i
        
        Cells(i + 2, 1) = "Totale " & nFiles & " files in " & nSubDirs & " subdirectory."
        Cells(i + 3, 1) = "Statistiche sui singoli files:"
        
        ext_file = Replace(ext_file & "@", ";@", "")
        v = Split(ext_file, ";")
        j = i + 3
        
        Set c = New Collection
        Set c = duplicates(v)
        
        For Each ext In c
            j = j + 1
            Cells(j, 1) = ext
            Cells(j, 2) = count_occurrences(v, CStr(ext))
        Next
        
        [a1].Select
        MsgBox "Ho terminato."
    
    End Sub
    
    Private Function GetDir(dir, i As Long) As Long
    Dim oFolder As Object, oFolders As Object, oFiles As Object, oFold As Object, oFile As Object
    
        Set oFolder = oFileSys.GetFolder(dir)
        Set oFolders = oFolder.SubFolders
        Set oFiles = oFolder.Files
        
        If i = 0 Then
            i = i + 1
            nSubDirs = nSubDirs + 1
            Cells(i, 1) = oFolder.Path
            Cells(i, 1).Font.Bold = 1
        End If
        
        On Error GoTo gest_err
        
        For Each oFile In oFiles
            i = i + 1
            If i > Rows.Count Then MsgBox "Limite del foglio raggiunto!": Exit Function
            
            Cells(i, 2) = oFile.Name
            nFiles = nFiles + 1
            If InStrRev(oFile, ".") = 0 Then
                ext_file = ext_file & "" & ";"
            Else
                ext_file = ext_file & Mid(oFile, InStrRev(oFile, ".") + 1) & ";"
            End If
        Next
        
        For Each oFold In oFolders
            i = i + 1
            If i > Rows.Count Then MsgBox "Limite del foglio raggiunto!": Exit Function
    
            nSubDirs = nSubDirs + 1
            Cells(i, 1) = oFold.Path & "" & oFold.Name
            Cells(i, 1).Font.Bold = 1
            GetDir oFold, i
        Next
        
        Exit Function
        
    gest_err:
        If Err.Number = 70 Then Resume Next
        
    End Function
    
    Function count_occurrences(vettore As Variant, search As String)
    Dim s As String
    
        s = Join(vettore, vbNullChar) & vbNullChar
        LCase (s)
        search = LCase(search)
        count_occurrences = Len(Replace(s, search & vbNullChar, search & vbNullChar & "*")) - Len(s)
    
    End Function
    
    
    Function duplicates(vettore As Variant) As Collection
    Dim v As Variant, dups As Collection
        
        Set dups = New Collection
        
        On Error Resume Next
        
        For Each v In vettore
            dups.Add CStr(v), v
        Next
        
        On Error GoTo 0
        Set duplicates = dups
    
    End Function





  • ciao
    di GIUS (utente non iscritto) data: 20/09/2012 22:11:30

    ah perchè hai pure un blog? Ma questo è il modello che hai in ufficio? non puoi fare un tasto suk foglio che lo premo e fa tutto?e un' altro che inserisca la cartella sorgente.
    Credo che Bosh non si è fatto sentire sto postando domande su un post sbagliato



  • di GIUS (utente non iscritto) data: 20/09/2012 22:31:57

    ho inserito come source C:WINDOWSsystem32 e funziona, dopo aver fattoun paio di fogli di scrittura alla fine da il conteggio finale. Però se si mettono i pulsantini sul foglio che aprono il source e fanno il calcolo automatico sarebbe meglio



  • di Vecchio Frac data: 21/09/2012 14:42:12

    Gius, creare questi pulsanti te lo lascio come esercizio :)
    Ti do dei suggerimenti per implementare la modifica: vedi nella guida cosa sono e a che servono le FileDialog, in particolare come si usa Application.FileDialog(msoFileDialogOpen).
    Vedrai che ti si apre un mondo :)

    (sì ho un blog in tema di VBA ma non credo che sia giusto qui farmi pubblicità)





  • MODELLINO
    di GIUS (utente non iscritto) data: 21/09/2012 23:20:09

    Ciao Frac,
    ma non dovevi postarmi il modellino che avevi in ufficio? Avessi pure il tempo di studiaree questi pulsantini lo farei? Oggi per es ho divuto fare uno straordinario fino alle 20:00 ( straordinario non pagato,ovviamente) ero stanchissimo e tornato a casa....... vabbe non è un chat qui, non facciamo arrabbiare Bosh.
    Cmq. sei un grande pure tu a fare modelli, dopo Bosh ovviamente Scherzo

    H E L P F O R M O D E L



  • di Vecchio Frac data: 22/09/2012 11:40:42

    Questo non è un modellino che ho in ufficio.
    I file che creo per il forum, li creo apposta per le esigenze degli utenti.
    E no, non *dovevo* postare nessun modellino... il suggerimento di studiare il meccanismo di apertura file e cartelle è a tuo vantaggio, non mio.
    Curiosità... perchè temi di far arrabbiare di più Harrybosch che me? =)

    Comunque... ho aggiustato il file, ho aggiunto un foglio Start e ci ho piazzato sopra due semplicissimi pulsanti, ai quali ho associato le macro che fanno il lavoro. E' tutto molto intuitivo, scegli la cartella di partenza, decidi se analizzare o no anche le sottocartelle, premi il pulsante di avvio e il gioco è fatto, nel foglio Results avrai i risultati.
    Per scandire un'altra cartella posizionati semplicemente sul foglio Start e ricomincia :)
    Buon divertimento :)




  • ;-d
    di GIUS (utente non iscritto) data: 22/09/2012 15:31:58

    Buon pomeriggio, io non temo di far arrabbiare nessuno e solamente che bosh mi è un po + simpatico perche mi ha accoilto come un figlio qui e mi ha dato il benvenuto se non era per lui nemmeno avrei conosciuto il sito.
    Testerò il programma e altro non posso dire che grazie, avzi volendo potrei farti il 730.

    mette in pensione con i suoi modellini hihihiihihi
    P.S. Senza offesa, Bosh ti



  • di Vecchio Frac data: 22/09/2012 18:35:59

    Mi sono accorto di un piccolo refuso nel codice, sorry :)
    in pratica non fornisce il conteggio esatto se l'estensione del file è in MAIUSCOLO o alterna maiuscole e minuscole.
    Per la (facile) modifica basta:
    - aprire il file Excel
    - accedere al codice del foglio Results
    - cercare la funzioncina count_occurrences
    - sostituire "LCase(s)" che non vuol dire niente con "s = LCase(s)" (ovviamente ^_^)

    Riporto la funzione corretta e chiedo scusa per la svista.

    p.s. intendi dire farmi fare un modello automatizzato per il 730? ecco, sarebbe piuttosto interessante ma non saprei da che parte cominciare :)
     
    Function count_occurrences(vettore As Variant, search As String)
    Dim s As String
    
        s = Join(vettore, vbNullChar) & vbNullChar
        s = LCase(s)
        search = LCase(search)
        count_occurrences = Len(Replace(s, search & vbNullChar, search & vbNullChar & "*")) - Len(s)
    
    End Function
    






  • di Vecchio Frac data: 22/09/2012 19:02:48

    Ho allegato una seconda revisione del file, ulteriormente migliorato e corretto, e anche con qualche abbellimento grafico in più :)
    Forse adesso possiamo marcare come "risolta" questa discussione, se Gius si ritiene soddisfatto lo lascio fare a lui :)




  • grazie
    di GIUS (utente non iscritto) data: 22/09/2012 23:56:17

    bellissimo, no intendo dire che ti posso calcolare la dichiarazione dei redditi


  • naaaaaaa
    di GIUS (utente non iscritto) data: 23/09/2012 00:10:40

    ciao, mi piaceva + il modello che indicava tutte le sottocartelle e i files, questo indica solo i files epoi un bel grafico a torta non si può fare?
    Ciao



  • di Vecchio Frac data: 23/09/2012 08:24:33

    Questa del grafico a torta è nuova :)
    In che senso? sulle statistiche di conteggio delle estensioni?
    Certo che si può fare. Vediam se oggi mi applico... ma tu provarci no eh? :D

    Allego la revisione 3 che a causa di un'impostazione che avevo messo per test non mostrava le sottocartelle (sfugge sempre qualcosa) :)





  • di Vecchio Frac data: 23/09/2012 11:22:32

    Allego la revisione 4... con produzione a scelta di grafico a torta e indicazione delle percentuali per ogni voce.
    Naturalmente de gustibus... ognuno aggiusti la torta e la decori come più gli piace :)




  • bellissimo
    di GIUS (utente non iscritto) data: 23/09/2012 14:21:59

    Lodevole veramente,
    non saprei come ringraziarti, grazie