Excel e gli applicativi Microsoft Office Attivazione cella A1 in codice già esistente

Login Registrati
Stai vedendo 25 articoli - dal 1 a 25 (di 29 totali)
  • Autore
    Articoli
  • #13576 Score: 0 | Risposta

    Angelo

      Buongiorno a tutti. Sono nuovo del sito. Sono un esperto di Excel, ma non di VBA.

      Ho ereditato una macro che invia dei dati da un file (DataEntry) a un altro (DataBase) e inoltre fa un backup copiando poi le stesse informazioni in un altro file ancora (DataBase backup). Il tutto funziona e con le mie poche conoscenza riesco a gestirlo. Ma ha un difetto che proprio non riesco a sistemare e pur sembrandomi una banalità, sta creando problemi anche ad esperti. Spero possiate aiutarmi.
      Il difetto è questo: quando il record dei dati è copiato nel file DataBase (e anche nel backup) resta attivo l'intero intervallo stesso (quello copiaincollato), si vede evidenziato. Avrei bisogno che una volta copiato il record di dati si attivasse invece la cella "A1" disattivandosi l'intervallo. Tutto qui.

      La macro è riportata sotto. Il punto dove dovrebbe inserirsi l'istruzione penso sia quello segnalato con XXXXXXXXXXXXXXXX

      Grazie in anticipo!

       

      '---
      
      Option Explicit
      
      Sub TestFileOpened()
      
         Const sFileDataBaseFullName As String = "\\B1110160\db.Orientamento\DataBase.xlsx"
         
         Dim WbDB As Workbook
         Dim bDbIsOpen As Boolean
         
         On Error GoTo GestisciErrori
         With Application
            .Calculation = xlCalculationManual
            .EnableEvents = False
            .ScreenUpdating = False
         End With
         
         With ThisWorkbook
            With .Worksheets("Scheda")
               If .Range("B5") > 0 Then
                  MsgBox "Attenzione! Compilare tutti i campi obbligatori. Mancano" & .Range("B5") & " campi", vbExclamation, "Campi obbligatori mancanti"
                  Exit Sub
               End If
            End With
         End With
       
          ' Testa se il file dataBase è aperto (macro attiva).
          If IsFileOpen(sFileDataBaseFullName) Then
              ' Mostra msg se il file è in uso.
              MsgBox "Il file di destinazione è al momento in uso. Riprova più tardi"
              '
          Else
              ' Mostra msg se il file è disponibile.
              MsgBox "Operazione possibile. Procedere"
              ' Apri data base.
              Set WbDB = Workbooks.Open(sFileDataBaseFullName)
              ' Salva il dataBase
               WbDB.Save
              bDbIsOpen = True
         End If
         
         
         If bDbIsOpen Then
            
            With ThisWorkbook
               .Activate
               .Worksheets("Scheda").Activate
               .Sheets("Preparazione invio").Range("B3:AX3").Copy
            End With
            
            With WbDB
               With .Worksheets(1)
                  With .Range("B3").End(xlDown).Offset(1)
                     .PasteSpecial Paste:=xlPasteAllUsingSourceTheme, _
                                   Operation:=xlNone, _
                                   SkipBlanks:=False, _
                                   Transpose:=False
                     .PasteSpecial Paste:=xlPasteValues, _
                                   Operation:=xlNone, _
                                   SkipBlanks:=False, _
                                   Transpose:=False
                                   Application.CutCopyMode = False
                    End With ' .Range("B1").End(xlDown).Offset(1)
      
                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      
               End With '.Worksheets(1)
               ' salva una copia del database
               Call SalvaCopiaDataBase(WbDB)
               ' chiude salvando la cartella di lavoro
               .Close True
            End With 'WbDb
          End If
      RiprendiErrori:
         With Application
            .Calculation = xlCalculationAutomatic
            .EnableEvents = True
            .ScreenUpdating = True
         End With
             
          Exit Sub
      GestisciErrori:
          MsgBox "Si è verificato un errore VBA!" & vbNewLine & _
                 "Errore n. " & Err.Number & vbNewLine & _
                 Err.Description, vbCritical, "Errore VBA"
          Resume RiprendiErrori
      End Sub
      
      Sub SalvaCopiaDataBase(WbToCopy As Workbook)
         Const sPercorsoSalvataggio As String = "\\B1110160\\db.Orientamento.Backup\"
         Dim sDataOraSalvataggio As String
         Dim sEst As String
         Dim sNomeFileCopia As String
         sDataOraSalvataggio = Format(Now, "_yyyymmdd_hhmmss")
         With WbToCopy
            sEst = Mid(.Name, InStrRev(.Name, "."))
            sNomeFileCopia = Replace(.Name, sEst, sDataOraSalvataggio & sEst)
            .SaveCopyAs sPercorsoSalvataggio & sNomeFileCopia
         End With
      End Sub
      
      
      Public Function IsFileOpen(FileName As String) As Boolean
      '----------------------------------------------------------------------'
      'Questa funzione determina se un file è aperto da qualsiasi programma. '
      'Restituisce vero o falso                                              '
      '----------------------------------------------------------------------'
        Dim FileNum As Long
        Dim ErrNum As Long
        On Error Resume Next
        If FileName = vbNullString Then
            IsFileOpen = False
            Exit Function
        End If
        If Dir(FileName) = vbNullString Then
            IsFileOpen = False
            Exit Function
        End If
        FileNum = FreeFile()
        Err.Clear
        Open FileName For Input Lock Read As #FileNum
        ErrNum = Err.Number
        On Error GoTo 0
        Close #FileNum
        Select Case ErrNum
          Case 0
              IsFileOpen = False
          'Case 70
          '    IsFileOpen = True
          Case Else
              IsFileOpen = True
        End Select
      End Function
      
      '---
      
      #13578 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        238 pts

        L'istruzione chiave è già inserita:

        Application.CutCopyMode = False

        Domani se riesco provo a fare qualche test, devo ricostruire lo scenario.

        #13579 Score: 0 | Risposta

        Angelo24
        Partecipante

          Ciao vecchio frac.

          Purtroppo non funziona allora.

          Ma quell'istruzione significa attiva la cella  A1?

          Comunque non funziona.   

          #13581 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            238 pts

            No, no. Ordina a Excel di togliere la modalità "copia e incolla" (il tratteggio che compare  a delimitare il range che sta per essere copiato o tagliato).

            Pensavo che la domanda fosse più sibillina... Se vuoi solo selezionare la cella del foglio attualmente in esame:

            .Range("A1").Select

            col punto davanti a Range perchè sei dentro un blocco With.

             

            #13582 Score: 0 | Risposta

            vecchio frac
            Senior Moderator
              238 pts

              vecchio frac ha scritto:

              Sono un esperto di Excel, ma non di VBA.

              Puoi cominciare a prendere confidenza mediante il registratore di macro, che produce sì delle schifezze, ma è utile come partenza per capire almeno le cose di base. Se avvii una sessione di registrazione e poi premi Ctrl-Home, poi interrompi la registrazione ed esamini il codice prodotto, troverai la faccenda piuttosto interessante, ed anche affascinante 🙂

              #13588 Score: 0 | Risposta

              Angelo24
              Partecipante

                Caro vecchio frac buongiorno.

                Dicevo che molti esperti sono in difficoltà nel risolvere il mio problema. Ti dò i tentativi fatti con il relativo esito, sperando che ti possa essere di aiuto. Grazie!

                 

                .Range("A1").Select

                Questo, che è il tuo suggerimento,  è il primo tentativo che ho fatto e di mia iniziativa, ma non funziona. (Mi riprometto di provarlo stasera e darti eventuali errori perché non me li ricordo).  Non mi hai detto dove metterlo. E' giusto al posto delle XXXXXXXXX?

                 

                .Cell(1, 1). Select

                E' il secondo tentativo consigliatomi da un esperto e posizionato sempre dove ora ho messo le XXXXXXXXXXXXX. Non funziona e dà il seguente messaggio errore:

                <em>Si è verificato un errore in VBA!</em>

                <em>Errore numero 1004</em>

                <em>Errore nel metodo Select per la classe Range</em>

                 

                ThisWorkbook.Worksheet("Scheda").Cell(1, 1). select

                E' il terzo tentativo consigliatomi da esperto e non funziona. Dà il seguente messaggio errore:

                <em>Si è verificato un errore in VBA!</em>

                <em>Errore numero 9</em>

                <em>Indice non incluso nell'intervallo</em>

                 

                Saluti!

                #13590 Score: 0 | Risposta

                vecchio frac
                Senior Moderator
                  238 pts

                  Angelo24 ha scritto:

                  molti esperti sono in difficoltà nel risolvere il mio problema

                  Questa affermazione mi mette un po' d'ansia da prestazione 😀

                  #13592 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    238 pts

                    Angelo24 ha scritto:

                    E' giusto al posto delle XXXXXXXXX?

                    Sì, direi di sì.

                    "Indice non incluso nell'intervallo" mi suggerisce che non esiste una tab chiamata "Scheda" nel file Excel corrente. Anche l'errore nel metodo Select è spia di un problema simile (ma evidenziato a livello di cella e non di foglio). Sarebbe utile vedere il file. 

                    Assicurati che ci sia un foglio chiamato "Scheda" (e non, tanto per dire, "Scheda " con uno spazio finale).

                    #13594 Score: 0 | Risposta

                    vecchio frac
                    Senior Moderator
                      238 pts

                      C'è un'altra istruzione che potenzialmente potrebbe dare lo stesso errore:

                      .Sheets("Preparazione invio").Range("B3:AX3").Copy

                      Assicurati che esista un foglio chiamato esattamente "Preparazione invio".

                      Infine mi viene in mente di chiederti se il Workbook o il foglio è protetto. Il foglio in questione potrebbe anche essere il primo definito da wbDB, cioè il file Database.xlsx, cui abbiamo aggiunto l'istruzione di selezionare la cella A1:

                      With WbDB
                           With .Worksheets(1)
                      .
                      .
                      .
                          .Range("A1").Select    '<-- seleziona la cella A1

                       

                      #13595 Score: 0 | Risposta

                      vecchio frac
                      Senior Moderator
                        238 pts

                        facendo una prova senza dati alla mano mi chiedo: forse al termine delle operazioni di copia e incolla tu vuoi selezionare la cella A1 del foglio Scheda? In questo caso l'istruzione che seleziona A1 fallisce sicuramente perchè è attivo il foglio Scheda ma il With (innestato) si riferisce al Worksheets 1 del file wbDB. la correzione è peraltro semplice, invece che .Range("A1").Select scrivi questo:

                        Application.Goto .Range("A1")

                         

                        #13627 Score: 0 | Risposta

                        Angelo24
                        Partecipante

                           Dai nessuna ansia da prestazione, sei la mia ultima speranza ... (spero che questo non aumenti ulteriormente l'ansia ...  )

                          Comunque, a parte gli scherzi, vedo di risponderti, se poi vuoi il file te lo allego. E comunque resta il fatto che devo ancora provare il tuo suggerimento, ma questo posso farlo solo stasera.

                          Rispondo alle tue domande.

                           

                          1.

                          Il foglio "Scheda" non esiste si chiama in un altro modo, avevo comunque provato a sostituire a "Scheda" il nome giusto, ma l'errore rimaneva, non mi ricordo il messaggio ma se è utile posso fornirtelo.

                           

                          2.

                          L'altra istruzione che pensi possa creare problemi funziona. Quando tolgo l'istruzione che sto cercando, tutto fila perfettamente. Il foglio "Preparazione invio" esiste.

                           

                          3.

                          Il foglio non è protetto.

                           

                          4.

                          <em>"Il foglio in questione potrebbe anche essere il primo definito da wbDB, cioè il file Database.xlsx, cui abbiamo aggiunto l'istruzione di selezionare la cella A1:" </em>Perdonami , ma non capisco questa frase o cosa mi vuoi dire. 

                           

                          5.

                          Al termine del copia e incolla ho bisogno che venga selezionata la cella A1 del foglio stesso. Cioè quello del database dove i dati sono copia-incollati. Il file data base ha un solo foglio.

                           

                          Spero di aver risposto a tutto. Magari aspetta che stasera provo il tuo suggerimento. Magari funziona!

                          A dopo grazie e ciao!

                           

                          #13630 Score: 0 | Risposta

                          vecchio frac
                          Senior Moderator
                            238 pts

                            Io mi aspetto che Application.Goto funzioni. Altrimenti bisognerà vedere il file e un esempio di file database.

                            #13652 Score: 0 | Risposta

                            Angelo

                                                          E ci hai azzeccato!                           

                              Cominciavo sinceramente a disperare ...

                              Allora sei tu il genio!

                              Grazie. Infatti funziona proprio con Application.Goto .Range("A1")

                              Wow!    Quanto è stata dura però. Certo a saperlo prima ... passavo da queste parti.

                              Grazie ancora. Ciao!

                              #13675 Score: 0 | Risposta

                              vecchio frac
                              Senior Moderator
                                238 pts

                                Grazie del feedback, sono contento che si sia risolto positivamente (ho visto solo ora la tua risposta)   

                                Torna quando vuoi, noi siamo qui.

                                #13680 Score: 0 | Risposta

                                Angelo24
                                Partecipante

                                     Visti i risultati senz'altro!

                                  Ciao!

                                  #13820 Score: 0 | Risposta

                                  Angelo24
                                  Partecipante

                                    Ciao vecchio frac! Son di nuovo qui.   

                                    Ho un altro problemino sempre sullo stesso file. Spero che mi possa dare una mano anche qui.

                                    E' sempre il solito file. 

                                    Il file (che ti allego) è una scheda da compilare.

                                    Nel primo foglio ("Scheda") c'è la scheda che vede l'utente.

                                    Nel secondo foglio ("Preparazione invio") ci dati della scheda, messi però sotto forma di record, tutti su una riga, seguendo l'ordine della scheda stessa. Ogni campo è impostato tipo:  =Scheda!V4.

                                    Il problema è che se scrivo "Mario" in un campo della scheda, il secondo foglio, nello specifico campo riporta "Mario". Ma facendo un po' di prove a volte va tutto in tilt. Cancello "Mario" e nel secondo foglio non si cancella. Scrivo "Roberto" e rimane "Mario". Tutte anomalie così.

                                    Non sempre lo fa, soprattutto mi pare che lo faccia quando invio, dopo l'invio non va più. Ma a volte anche senza invio. Non ci capisco più niente!  .

                                    Ho trovato un modo che risolve tutto: prima salvo la scheda, poi invio. Così va alla grande! Ma ovviamente non è pratico per l'utente, che oltretutto potrebbe dimenticarsi e fare pasticci.

                                    Cortesemente ti chiederei se c'è qualcosa di sbagliato nell'impostazione del codice, oppure, nel caso sia normale che faccia così, se fosse possibile inserire nel codice, come primissima cosa, all'inizzissimo , prima dei vari controlli, l'istruzione "Salva", visto che salvando funziona.

                                    Un immenso grazie!

                                    Saluti!

                                     

                                     

                                     

                                     

                                     

                                     

                                     

                                     

                                    Allegati:
                                    You must be logged in to view attached files.
                                    #13826 Score: 0 | Risposta

                                    vecchio frac
                                    Senior Moderator
                                      238 pts

                                      Avrei preferito che:

                                      - aprissi una nuova discussione;

                                      - non ti rivolgessi ad un utente specifico (me, in questo caso) perchè semplicemente rischi che gli altri non si sentano coinvolti: se io non posso risponderti subito, potresti aspettare giorni per una risposta.

                                      Comunque diamo un'occhiata 🙂

                                      #13827 Score: 0 | Risposta

                                      vecchio frac
                                      Senior Moderator
                                        238 pts

                                        Noto che nel foglio "Preparazione invio" i formati delle celle sono per lo più impostati su "Contabilità". Consiglio di impostare il formato giusto, coerente col campo, o almeno "Generale", in modo che sia Excel a determinarne il tipo.

                                        Premesso questo, qual è la macro che deve essere scatenata dal pulsante "Invia dati" ? Ci sono due sub "TestFileOpened", una nel modulo1 e una nel modulo7.

                                         

                                        #13828 Score: 0 | Risposta

                                        vecchio frac
                                        Senior Moderator
                                          238 pts

                                          Nel codice che presumo corretto (quello del modulo1) c'è un punto che deve essere corretto: all'inizio si disabilitano gli eventi e il refresh dello schermo, e il modo di calcolo è reso su manuale; quasi subito dopo però c'è un Exit Sub che si attiva quando la cella A5 di "Preparazione invio" risulta maggiore di zero ("Attenzione! Compilare tutti i campi obbligatori."). In questo modo forzi l'uscita dal programma ma non hai riabilitato nè il ricalcolo, nè gli eventi (argh!) nè il refresh dello schermo. Fai la correzione prima di Exit Sub, oppure invece che Exit Sub fai un "Goto riprendierrori" ma a me l'uso del Goto non piace molto. Non confondere questo Goto con Application.Goto che è altra cosa 🙂

                                          Comunque sto smanettando da un po' e non rilevo i problemi che lamenti... ma è sempre così, è normale 🙂

                                           

                                          #13835 Score: 0 | Risposta

                                          Angelo24
                                          Partecipante

                                            Buonasera.

                                            Innanzitutto mi scuso per non aver aperto una nuova discussione come infatti è, e di essermi rivolto ad un utente specifico. Mi scuso con tutti gli esperti del sito. 

                                            Ok vedo di impostare ogni campo coerentemente. (Mi piace contabilità perchè lascia sempre quello spazietto all'inizio).

                                            Si la macro coinvolta è quella del modulo 1. Quella nel modulo 7 vorrei eliminarla, ma ho paura di far danni.

                                            Venendo alla correzione che suggerisci confesso che non mi è  chiara. Infatti la macro l'ho solo un po' modificata, ma non è mia e non sarei neanche in grado di farla. Se sarà necessario ti chiederò aiuto perchè da solo non riesco.

                                            Mi fa pensare il fatto che tu non rilevi le anomalie e devo dire che anche altri che stanno provando a usare la scheda non le rilevano, ma io sì. È  possibile secondo te che dipenda dal (mio) pc?

                                            Vado a fondo della cosa poi eventualmente di dovrò chiedere aiuto  per fare quella correzione che hai detto.

                                            Grazie.

                                            Ciao!

                                             

                                            #13844 Score: 0 | Risposta

                                            vecchio frac
                                            Senior Moderator
                                              238 pts

                                              Angelo24 ha scritto:

                                              Quella nel modulo 7 vorrei eliminarla, ma ho paura di far danni.

                                              Che danni potresti fare? il consiglio principe è sempre quello di avere copie di backup. Ogni volta che stai per mettere mano al codice, o a parti di esso, o che stai per inserire / togliere qualcosa, fai una copia del file, aumentando di uno il numero progressivo che metti nel nome del file. Così hai sempre almeno una copia con gli ultimi tentativi, recuperabile se ti serve una funzione che hai tolto perchè credevi non servisse. Quando le copie numerate cominciano a essere tante, fai una cartella "superati" e ci metti dentro tutto, e tu lavori sempre sull'ultima più aggiornata (se avete notato, quando allego i miei file hanno sempre la marcatura VF(numero) in fondo al nome di file).

                                               

                                              Angelo24 ha scritto:

                                              Venendo alla correzione che suggerisci confesso che non mi è  chiara.

                                              In realtà il suggerimento è davvero banale: dovresti ricopiare il blocco

                                               

                                                 With Application
                                                    .Calculation = xlCalculationManual
                                                    .EnableEvents = False
                                                    .ScreenUpdating = False
                                                 End With

                                              prima di Exit Sub che sta tre righe sotto, subito dopo il

                                              MsgBox "Attenzione! Compilare tutti i campi obbligatori. Campi non compilati: " & .Range("A5"), vbExclamation, "Campi obbligatori mancanti"
                                              

                                              facendo attenzione che però devi resettare i valori: quindi il blocco diventa

                                                 With Application
                                                    .Calculation = xlCalculationAutomatic
                                                    .EnableEvents = True
                                                    .ScreenUpdating = True
                                                 End With

                                              O in alternativa, invece che Exit Sub scrivi Goto riprendierrori (ma non è una pratica che ti incoraggio a  fare):

                                                 With ThisWorkbook
                                                    With .Worksheets("Preparazione invio")
                                                       If .Range("A5") > 0 Then
                                                          MsgBox "Attenzione! Compilare tutti i campi obbligatori. Campi non compilati: " & .Range("A5"), vbExclamation, "Campi obbligatori mancanti"
                                                          Goto RiprendiErrori
                                                       End If
                                                    End With
                                                 End With
                                              

                                              Angelo24 ha scritto:

                                              Mi fa pensare il fatto che tu non rilevi le anomalie

                                              Ho fatto altre prove sul pc dell'ufficio, nessun problema. Che caratteristiche ha la tua macchina? (Soprattutto di memoria RAM) Che Excel usi e su che piattaforma (Win, Linux)?

                                               

                                              #13861 Score: 0 | Risposta

                                              Angelo

                                                Ciao!

                                                Ho verificato, e anche sulle macchine di chi stava provando la scheda, le anomalie ci sono. Esattamente come le mie. Altrochè!

                                                Quindi deduco che è il codice che non è come dovrebbe essere. Alchè ho provato a fare come gentilmente mi hai scritto e ti ringrazio. Ho provato entrambe le soluzioni e funziona <em>quasi</em> perfettamente. Fa ancora un piccolo difetto.

                                                Infatti tutte le stranezze di prima non ci sono più, ma una è rimasta, questa: se tutti i campi sono compilati e poi per sbaglio o non per sbaglio ne cancello uno, non lo vede cancellato e invia tutto col campo vuoto. Poi se faccio ancora "Invia" allora lo legge vuoto, ma solo al secondo invio.

                                                Mi spiace, spero si possa aggiustare.

                                                 

                                                Grazie mille, ciao!

                                                #13877 Score: 0 | Risposta

                                                vecchio frac
                                                Senior Moderator
                                                  238 pts

                                                  Che senso ha aprire il db e salvarlo subito dopo? operazione inutile e dispendiosa anche perchè lavori in un percorso di rete:

                                                          Set WbDB = Workbooks.Open(sFileDataBaseFullName)
                                                          ' Salva il dataBase
                                                           WbDB.Save
                                                  

                                                  ha scritto:

                                                  non lo vede cancellato

                                                  Tutto, credo, dipende dal formato con cui hai impostato i campi del foglio "preparazione invio". Dicevo sopra che "Contabilità" mi sembrava strano ma invece ha un senso: infatti con la formula sottostante tu verifichi che sia diverso da zero, nel qual caso imposti il flag a 1, che serve al codice per sapere se un campo non è stato compilato. La trovata è ingegnosa. Tuttavia può verificarsi qualche incoerenza (per esempio sulla data di nascita). Prova quindi a reimpostare il formato originale e vediamo cosa succede.

                                                   

                                                  #13898 Score: 0 | Risposta

                                                  Angelo24
                                                  Partecipante

                                                    Si quel salvataggio appena aperto il db non lo capisco neanch'io  . Mi è stato suggerito da un esperto e quindi non ho discusso la cosa perchè sai ... dipende chi ti trovi. Se ogni volta chiedi spiegazione magari uno si stufa.

                                                    Se mi dici le esatte righe da eliminare le elimino anche volentieri.

                                                    Per quanto riguarda il resto stasera provo e ti faccio sapere. 

                                                    So solo che la data di nascita, che comunque è impostata come "data", non crea problemi. Se il campo è vuoto, nel foglio di preparazione riporta "0 gen 00" e lo legge come vuoto e sotto riporta 1.

                                                    Per il resto stasera di dico.

                                                    Grazie!

                                                    Edit by VF: riformattato il testo (errata quotatura)

                                                    #13900 Score: 0 | Risposta

                                                    vecchio frac
                                                    Senior Moderator
                                                      238 pts

                                                      Angelo24 ha scritto:

                                                      Se mi dici le esatte righe da eliminare le elimino anche volentieri.

                                                      A volte per non sbagliare non elimino fisicamente le righe di codice, ma le commento così non le perdo.

                                                      Quindi puoi commentare tranquillamente la riga che dice wbDB.Save.

                                                      Salvare immediatamente dopo aver aperto un file non ha significato logico; per devi dire al programma che il file si trova nello stato "Salvato" c'è la proprietà .Saved del Workbook, che è impostabile, e serve ad evitare alcuni messaggi di avviso (perchè fai credere a Excel che il file è, appunto, "salvato").

                                                       

                                                    Login Registrati
                                                    Stai vedendo 25 articoli - dal 1 a 25 (di 29 totali)
                                                    Rispondi a: Attivazione cella A1 in codice già esistente
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni: