Risultati da 1 a 20 di 20

Discussione: Velocizzare un ciclo FOR



  1. #1
    L'avatar di follaro
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Salerno
    Messaggi
    15
    Versione Office
    office 2007
    Likes ricevuti
    0
    Likes dati
    4

    Velocizzare un ciclo FOR

    Salve,
    sto costruendo una macro per me molto utile ed ormai sto solamente affinando alcuni aspetti.
    Grazie a questo forum e a quelli che solitamente mi rispondono ho risolto un sacco di problemi ma soprattutto sto imparando tantissime cose.

    Il quesito di oggi è questo:
    devo eliminare da un foglio di circa 5500 righe tutte quelle che nella sesta colonna contengono il valore zero.
    Ricercando un po' sulla rete ho trovato un ciclo FOR che ho inserito nella mia macro nella forma seguente

    Codice: 
    Sheets("foglio").Select
    Dim a As Integer
    With Sheets("foglio")
    a = .Cells(Rows.Count, 6).End(xlUp).Row
    For n = a To 2 Step -1
    If .Cells(n, 6).Value = 0 Then
    .Cells(n, 6).EntireRow.Delete
    End If
    Next n
    End With
    Da quello che ho capito, questo ciclo parte dal fondo del foglio e risale fino alla prima riga, ma considerato che la colonna in questione riporta dati ordinati in maniera decrescente, è possibile velocizzare il ciclo (e quindi la cancellazione dei record) dando allo stesso l'istruzione di fermarsi al primo valore diverso da zero?

    Inoltre, avendo un altro foglio con dati ordinati in maniera crescente, quale dovrebbe essere il ciclo per farlo partire dall'alto e fermarlo al primo valore diverso da zero?

    Faccio presente che in entrambi i casi non ci sono mai valori negativi e che non posso riordinare i dati in maniera diversa.

    Grazie mille ancora a tutti!

  2. #2
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    812
    Versione Office
    2016 64bit
    Likes ricevuti
    147
    Likes dati
    53
    Se la colonna ha tutte le celle compilate e l'ultima parte sempre con zero potresti modificare il If/Then in:
    Codice: 
    If .Cells(n, 6).Value = 0 Then
        .Cells(n, 6).EntireRow.Delete
    Else
        Exit Sub
    End If
    Nell'altro caso, dovendo eliminare righe e volendo usare un For/Next, non è il caso di eliminare dall'alto.

  3. #3

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979
    Nel primo caso puoi usare un ciclo do... loop (loop until .cella(n,6).value=0).
    Invece nel secondo caso non puoi fare cominciare il ciclo da sopra perché ogni riga eliminata falserebbe il ciclo (andando nella **** successiva dopo che una è stata eliminata ne salterebbe 2)
    Comunque per velocizzare il ciclo puoi aggiungere Application.ScreenUpdating=false (ricordati di rimetterlo =true a fine ciclo)

    ============
    Scusa rollis13, solo ora mi accorgo che hai già risposto

  4. #4
    L'avatar di follaro
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Salerno
    Messaggi
    15
    Versione Office
    office 2007
    Likes ricevuti
    0
    Likes dati
    4
    Citazione Originariamente Scritto da rollis13 Visualizza Messaggio
    Se la colonna ha tutte le celle compilate e l'ultima parte sempre con zero potresti modificare il If/Then in:
    Codice: 
    If .Cells(n, 6).Value = 0 Then
        .Cells(n, 6).EntireRow.Delete
    Else
        Exit Sub
    End If
    Nell'altro caso, dovendo eliminare righe e volendo usare un For/Next, non è il caso di eliminare dall'alto.
    Perdonami l'ignoranza, ma l'istruzione "Exit Sub" termina la macro? In realtà a me dovrebbe continuare con altre cose che non ho riportato perchè non rilevanti...

  5. #5
    L'avatar di follaro
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Salerno
    Messaggi
    15
    Versione Office
    office 2007
    Likes ricevuti
    0
    Likes dati
    4
    Dunque mi sembra di capire che, a meno di non riordinare i dati, non c'è verso di cancellare le righe dall'alto, confermate?

  6. #6

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979
    Si può fare ma bisogna creare un ciclo un po più complesso che prevede il salto di riga.

    Inviato dal mio Nexus 7 utilizzando Tapatalk

  7. #7
    L'avatar di follaro
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Salerno
    Messaggi
    15
    Versione Office
    office 2007
    Likes ricevuti
    0
    Likes dati
    4
    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Si può fare ma bisogna creare un ciclo un po più complesso che prevede il salto di riga.
    ... il che non è affatto alla mia portata oltre che non ne varrebbe la pena. Grazie mille lo stesso e grazie a tutti !!!

  8. #8

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979
    Ora non posso, domani faccio qualche prova e ti faccio sapere.
    Comunque sia con la soluzione di rollis (che termina la macro quando trova un valore superiore a 0) che con la mia (Application.screenUpdating=false) dovrebbe migliorare di molto. Hai provato?

  9. #9
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160
    Buona sera a Tutti.

    @ follaro, scrive:
    Inoltre, avendo un altro foglio con dati ordinati in maniera crescente, quale dovrebbe essere il ciclo per farlo partire dall'alto e fermarlo al primo valore diverso da zero?
    Scusate l'intrusione.
    Follaro, credo potresti provare con:
    Codice: 
    Option Explicit
    
    Sub Prova()
    Application.ScreenUpdating = False
    Dim PRc As Long
        
        Sheets("foglio").Select
        PRc = 2
            Do While Cells(PRc, 6) <> ""
                If Cells(PRc, 6) <> 0 Then Exit Do
                    PRc = PRc + 1
            Loop
        Range(Cells(2, 1), Cells(PRc - 1, 1)).EntireRow.Delete
    
    '     Prosegui con " ... altre cose"
    
    Application.ScreenUpdating = True
    End Sub
    Nel caso in cui questo tipo di soluzione possa essere ti Tuo gradimento, posso proporti una soluzione analoga per:

    @ follaro, scrive:
    ... considerato che la colonna in questione riporta dati ordinati in maniera decrescente ...

    A disposizione.

    Buona serata.

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  10. I seguenti utenti hanno dato un "Like"


  11. #10
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    812
    Versione Office
    2016 64bit
    Likes ricevuti
    147
    Likes dati
    53
    @follaro, al posto di End Sub puoi metterci un Goto ad un punto successivo nella macro per uscire dal ciclo, oppure mettere un ulteriore If/Then del tipo "If cella <> 0 Then" come ha fatto GiuseppeMN per uscire dal suo Do/While.

    Si potrebbe anche fare con un filtro che trova tutte le righe con 0 nella colonna F per poi eliminare solo queste così da non dover elaborare l'intera tabella e senza preoccuparsi che siano all'inizio o alla fine.

    @Rubik72, non occorre scusarsi, trattandosi di un libero Forum qualunque risposta/aiuto è sicuramente ben gradita e se affrontano il problema in modo diverso, ancora meglio :286:.

    @GiuseppeMN, c'era qualcosa che non andava nella tua macro per la lista ordinata crescente e ho apportato qualche modifica, mi pare che ora vada meglio :32:.
    Codice: 
    Option Explicit
    
    Sub Prova()
    
        Application.ScreenUpdating = False
        Dim PRc As Long
        
        Sheets("Foglio2").Select
        PRc = 2
        Do While Cells(PRc, 6) <> ""
            If Cells(PRc, 6) <> 0 Then Exit Do
            Range(Cells(2, 1), Cells(PRc, 1)).EntireRow.Delete
        Loop
    '     Prosegui con " ... altre cose"
        Application.ScreenUpdating = True
    
    End SuB

  12. #11

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1017
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    Citazione Originariamente Scritto da follaro Visualizza Messaggio
    Dunque mi sembra di capire che, a meno di non riordinare i dati, non c'è verso di cancellare le righe dall'alto, confermate?
    Oltre ai metodi che già ti hanno suggerito, ti propongo questo che è una variazione del tuo codice. In pratica, anziché cancellare una riga alla volta, si tratta di assegnare ad un range tutte le celle individuate e poi con un'unica istruzione eliminare le relative righe:

    Codice: 
    Sub elimina0()
    
      Dim a As Long
      Dim rngDel As Range
      Dim n As Long
      
      With Sheets("Foglio1")
        a = .Cells(Rows.Count, 6).End(xlUp).Row
        For n = 1 To a
          If .Cells(n, 6).Value = 0 Then
            If rngDel Is Nothing Then
              Set rngDel = .Cells(n, 6)
            Else
              Set rngDel = Union(rngDel, .Cells(n, 6))
            End If
          End If
        Next n
      End With
      rngDel.EntireRow.Delete
      Set rngDel = Nothing
    End Sub
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  13. #12
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160
    @ rollis13, scrive:
    GiuseppeMN, c'era qualcosa che non andava nella tua macro per la lista ordinata crescente e ho apportato qualche modifica, mi pare che ora vada meglio
    Grazie della Tua attenzione, ma, sinceramente l'unica modifica che posso notare è l'eliminazione di ogni Record ad ogni Loop.

    Mi perdonerai se preferisco togliere l'intero Range in una sola soluzione; ma questa è solo una mia interpretazione personale e, come tale, opinabile.

    Per meglio chiarire il mio pensiero allego il File con il quale ho condotto i miei Test; dal quale si evince che Il codice è, almeno per mè, perfettamente funzionante.

    Non riporto il Codice in quanto già esplicitato in Risposta #9

    A margine di quanto sopra, vorrei ringraziare @ Rubik72 per la sua Attenzione.


    A disposizione.

    Buona giornata.

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  14. #13
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    Considerato che l'elenco è ordinato in modo decrescente, come ci dice il ns. follaro, non ravviso la necessità di effettuare un ciclo sulla colonna F per eliminare le righe con il valore zero.
    Sebbene quello proposto da scossa (ciao) sia molto efficace.
    Difatti se ipotizzo che la prima riga è riferita alle intestazioni della tabella e quindi non vanno eliminate, si potrebbe anche fare in unica istruzione:

    Codice: 
    Sub elimina0_ZA()
        With Worksheets("Foglio").Range("A1")
            .AutoFilter field:=6, Criteria1:=0
            .CurrentRegion.Offset(1).EntireRow.Delete
            .AutoFilter
        End With
    End Sub
    Un'alternativa molto rapida e senza cicli si può ottenere, sempre in unica istruzione, utilizzando il metodo Find.
    Nel caso di tabella ordinata in modo crescente:

    Codice: 
    Sub elimina0_AZ()
        On Error Resume Next
        With Worksheets("Foglio")
            .Range("F2", _
            Columns("F").Find(what:=0, lookat:=xlWhole, searchdirection:=xlPrevious)).EntireRow.Delete
            .Range("A1").Select
        End With
    End Sub
    PS: So che il quesito era già stato ampiamente risolto da tutti (bravi!!). Era solo per mia curiosità su come poteva farsi in modo ancora più rapido e performante... :188:

  15. I seguenti 2 utenti hanno dato un "Like" a Textomb per questo post:


  16. #14

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1017
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    Citazione Originariamente Scritto da Textomb Visualizza Messaggio
    Sebbene quello proposto da scossa (ciao) sia molto efficace.
    Premsso che il codice voleva essere di uso generico, quindi senza considerare l'ordine dei valori, in realtà se le righe sono migliaia e i valori 0 molto sparsi molto efficace non lo è, infatti il metodo Union() richiede il suo tempo ed anche la cancellazione in un unico colpo di righe non consecutive non è rapidissima.

    Citazione Originariamente Scritto da Textomb Visualizza Messaggio
    PS: So che il quesito era già stato ampiamente risolto da tutti (bravi!!). Era solo per mia curiosità su come poteva farsi in modo ancora più rapido e performante...
    Per dati ordinati (come effettivamente sono quelli del problema) la tua proposta è ottima.

    Il sistema più efficiente per dati non ordinati (e soprattutto non ordinabili) resta, secondo me, il ciclo For ... Step -1 ... Next.
    Ho provato con 16.000 righe (con, in colonna F, 2.668 zeri variamente distribuiti) ed è di poco più veloce (4,6 sec.) anche dell'utilizzo di Autofilter e SpecialCells(xlCellTypeVisible) (circa 5 sec).
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  17. #15
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    Citazione Originariamente Scritto da scossa Visualizza Messaggio
    Il sistema più efficiente per dati non ordinati (e soprattutto non ordinabili) resta, secondo me, il ciclo For ... Step -1 ... Next.
    Ho provato con 16.000 righe (con, in colonna F, 2.668 zeri variamente distribuiti) ed è di poco più veloce (4,6 sec.) anche dell'utilizzo di Autofilter e SpecialCells(xlCellTypeVisible) (circa 5 sec).
    Ho fatto la stessa prova anche io (E non è perchè non abbia altro da fare...) (16.000 righe con 2674 zeri) però i risultati sono troppo diversi
    Ciclo For Step -1 ... Next durata 22,4 sec.
    Autofilter e SpecialCells(xlCellTypeVisible) durata 1,5 sec.
    :256:
    Non capisco!

  18. #16
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    812
    Versione Office
    2016 64bit
    Likes ricevuti
    147
    Likes dati
    53
    Scusami GiuseppeMN, ho preso un abbaglio :280:, continuavo a provare su un elenco ordinato decrescente con il tuo codice anche se nel mio post #10 scrivevo che il codice era per un elenco ordinato crescente ... è chiaro che non funzionasse :216:.
    Facevo meglio a concentrarmi sul filtro che ho suggerito invece di modificare il tuo codice :292:.

  19. #17

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1017
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    Ciao,

    Citazione Originariamente Scritto da Textomb Visualizza Messaggio
    Ho fatto la stessa prova anche io (E non è perchè non abbia altro da fare...) (16.000 righe con 2674 zeri) però i risultati sono troppo diversi
    Ciclo For Step -1 ... Next durata 22,4 sec.
    Autofilter e SpecialCells(xlCellTypeVisible) durata 1,5 sec.
    :256:
    Non capisco!
    Mah, sicuramente la distribuzione degli 0 ha molta importanza sul tempo di elaborazione della soluzione con Autofilter.
    Se quel tempo è ottenuto con gli 0 non tutti raggruppati in pochi blocchi è probabile che tu abbia scritto un codice decisamente più efficiente del mio; anche se, nel mio, praticamente tutto il tempo è dovuto alla sola istruzione .SpecialCells(xlCellTypeVisible).EntireRow.Delete.
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  20. #18
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    @ scossa
    giusto per dovere di chiarezza.
    Allego il file su cui ho fatto le mie prove assieme alle due routine.
    Se poi hai un attimo e gli dai un'occhiata...
    thanks.

    https://www.dropbox.com/s/xb3pwpswc1...icli.xlsm?dl=0

    Ed anche il codice in esso contenuto
    Codice: 
    Sub elimina0_FOR()
    Dim Start As Double
    Dim rngDel As Range
    Dim Lr As Long
    Dim x As Long
    Start = Timer
        With Worksheets("Foglio")
          Lr = .Cells(Rows.Count, 6).End(xlUp).Row
            For x = 1 To Lr
                If .Cells(x, 6).Value = 0 Then
                    If rngDel Is Nothing Then
                        Set rngDel = .Cells(x, 6)
                    Else
                        Set rngDel = Union(rngDel, .Cells(x, 6))
                    End If
                End If
            Next
        End With
        rngDel.EntireRow.Delete
    Set rngDel = Nothing
    MsgBox Timer - Start '18,5 Sec
    End Sub
    Codice: 
    Sub elimina0_AutoFilter()
    Dim Start As Double
    Start = Timer
        With Worksheets("Foglio").Range("A1")
            .AutoFilter field:=6, Criteria1:=0
            .CurrentRegion.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
            .AutoFilter
        End With
    MsgBox Timer - Start '1,7 Sec
    End Sub

  21. #19
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160
    Buona sera, Rollis;
    Citazione Originariamente Scritto da rollis13 Visualizza Messaggio
    Scusami GiuseppeMN, ho preso un abbaglio, continuavo a provare su un elenco ordinato decrescente con il tuo codice anche se nel mio post #10 scrivevo che il codice era per un elenco ordinato crescente ... è chiaro che non funzionasse .
    Facevo meglio a concentrarmi sul filtro che ho suggerito invece di modificare il tuo codice .
    Nessun problema.


    Alla prossima.

    Buona serata.

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  22. #20

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1017
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    Citazione Originariamente Scritto da Textomb Visualizza Messaggio
    @ scossa
    giusto per dovere di chiarezza.
    Allego il file su cui ho fatto le mie prove assieme alle due routine.
    Se poi hai un attimo e gli dai un'occhiata...
    Ciao,
    ho verificato ed effettivamente i tempi che avevo misurato erano falsati dall'avere formattato le celle contenenti gli 0 con sfondo e grassetto.

    Comunque riportando il mio codice sul tuo foglio (ed il tuo sul mio) i tempi sono praticamente uguali.
    Questo il mio codice:
    Codice: 
    Sub EliminaZer0()
      Dim rng As Range
      Dim nStart As Single
      
      With Application
        .ScreenUpdating = False
      End With
      
      nStart = Timer
      With ActiveSheet
        Set rng = .Range("F1:F" & .Cells(Rows.Count, 6).End(xlUp).Row)
      End With
      With rng
        .AutoFilter field:=1, Criteria1:="0"
        .Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
        .AutoFilter
      End With
      
      Set rng = Nothing
      
      With Application
        .ScreenUpdating = True
      End With
      
      MsgBox "finito in sec. " & Timer - nStart
        
    End Sub
    Come vedi i due codici sono simili.

    Però
    Citazione Originariamente Scritto da Textomb
    ciclo For Step -1 ... Next durata 22,4 sec
    tu hai utilizzato il codice con la Union, io mi riferivo al codice normale:
    Codice: 
    Sub elimina_follaro()
      Dim n As Long
      Dim nStart As Single
      
      With Application
        .ScreenUpdating = False
      End With
      
      nStart = Timer
      With Sheets("foglio1")
        For n = .Cells(Rows.Count, 6).End(xlUp).Row To 2 Step -1
          If .Cells(n, 6).Value = 0 Then
            .Cells(n, 6).EntireRow.Delete
          End If
        Next n
      End With
      With Application
        .ScreenUpdating = True
      End With
      MsgBox "finito in sec. " & Timer - nStart
    End Sub
    che è nell'ordine dei tempi dell'Autofilter.
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

Discussioni Simili

  1. [Risolto] Velocizzare una macro che importa dati per 20 fogli
    Di Catwoman nel forum Domande su Excel VBA e MACRO
    Risposte: 20
    Ultimo Messaggio: 28/12/16, 20:54
  2. [Risolto] Velocizzare UDF
    Di alfrimpa nel forum Domande su Excel VBA e MACRO
    Risposte: 12
    Ultimo Messaggio: 10/11/16, 15:15
  3. [Risolto] Ciclo For e Quesry Web è possibile?
    Di paciola nel forum Domande su Excel VBA e MACRO
    Risposte: 14
    Ultimo Messaggio: 27/10/16, 12:49
  4. Velocizzare inserimento date nei criteri di COUNTIFS
    Di FabrizioMazzei nel forum Domande su Excel in generale
    Risposte: 5
    Ultimo Messaggio: 08/07/16, 18:41
  5. Esiste un modo per velocizzare un countif
    Di lalla nel forum Domande su Excel VBA e MACRO
    Risposte: 0
    Ultimo Messaggio: 19/11/15, 22:20

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •