creazione programma quiz



  • creazione programma quiz
    di dodi (utente non iscritto) data: 14/11/2012 14:15:04

    salve a tutti, premetto che di excel so poco e niente. vorrei creare un programmino col quale svolgere quiz per concorsi nelle forze armate. io posseggo tutte le domande divise per materia in file pdf. inoltre ho già un programmino per quiz in guardia di finanza. io vorrei usare questo programmino ma caricando domande di altre forze armate. se qualcuno è interessato e vuole aiutarmi posto il link da dove scaricare questo programmino in modo da avere un'idea di quello che è il mio problema.
    grazie a tutti voi



  • di Vecchio Frac data: 14/11/2012 14:20:38

    Non ti è possibile allegarlo qui? è un eseguibile? ci sono motivi di privacy o copyright o pesantezza del file?
    Hai un'idea di come vorresti realizzare il gestionale di quiz?
    Forse le domande su pdf non sono l'ideale e ci vorrebbe una base dati su file per poter pescare le domande.






  • di dodi data: 14/11/2012 14:23:24

    certo posso allegare il programmino che vorrei modificare inserendo i quiz che mi interessano. credo che la prima cosa da fare sia confertire i pdf in xls ma per tutto il resto non cosa cosa e come fare in quanto excel non l'ho mai usato



  • di dodi data: 14/11/2012 14:26:16

    ho allegato il file. una volta aperto il file excel e attivato il contenuto, premere ctrl+M fino all'avvio del programmino



  • di dodi data: 14/11/2012 14:29:08

    non capisco perchè il link del file allegato non funzioni



  • di Vecchio Frac data: 14/11/2012 14:30:06

    Il file non si è allegato correttamente. Gentilmente rinominalo senza caratteri strani e anche senza spazi e riprova. Un nome di file corto, tipo "dodi.rar", è più che sufficiente :)





  • di dodi data: 14/11/2012 14:34:31

    fatto



  • di Vecchio Frac data: 14/11/2012 15:29:07

    Molto bello, dodi, molto ben fatto, c'è perfino la finezza di un Type pubblico che raramente vedo tra i nostri utenti :)
    La struttura del database delle domande è piuttosto semplice.
    Si tratta quindi non di convertire il file pdf con la nuova base dati in Excel, ma di ricavare da esso il testo corrispondente alle nuove domande, alle nuove risposte, e di calibrare il gestionale in modo che peschi correttamente.
    Ergo è corretto il mio quesito iniziale, e cioè che le domande su pdf non vanno bene.
    Di solito la conversione di pdf in testo non è mai precisa. Se poi bisogna convertire tabelle spesso provoca disimpaginazioni. Dipende dal file, dalla qualità della scansione, dal numero di colonne, dai bordi, ecc.
    Comunque non sono pessimista: naturalmente, si può fare una prova... ma dovresti fornire il file pdf con le domande, sempre se non ci sono problemi di copyright o privacy.





  • di dodi (utente non iscritto) data: 14/11/2012 16:56:27

    nessun problema, sono documenti pubblici delle forze armate pubblicati sui loro siti proprio per esercitarsi prima di un concorso. allego tutti i pdf divisi per materia. io inoltre ho convertito con un programma, allego anche un esempio della conversione



  • di dodi (utente non iscritto) data: 14/11/2012 17:07:14

    ho allegato solo le domande di inglese perchè gli altri file superano il peso consentito



  • di dodi (utente non iscritto) data: 14/11/2012 17:08:11

    messso anche un esempio di file convertito in xls



  • di Vecchio Frac data: 14/11/2012 20:36:37

    Se non ho capito male, da un pdf convertito risulta una tabella con tre colonne:

    colonna A il numero progressivo senza formato particolare (da 1 in avanti)
    colonna B la domanda con, nella stessa cella, quattro possibili risposte contrassegnate dalle lettere A-B-C-D
    colonna C la risposta esatta

    Si vuole dunque trasformare questa tabella in quella digeribile dal programma principale che deve gestire la base dati, che invece ha questa struttura:
    8 colonne:
    colonna A il numero progressivo (codice domanda) in formato AA00001
    colonna B la domanda
    colonne da C a F le quattro possibili risposte (dunque una risposta per colonna)
    colonna G la risposta esatta
    colonna H una "x" oppure vuota (da vedere se importante per il codice del programma)

    Tendenzialmente non è difficile, bisogna solo pensarci su un attimo.
    Dopodichè bisogna aggiustare il codice perchè peschi dalla nuova tabella dati i numeri di codice del nuovo formato
    Confermi?

    nb. domani sono impegnato in un corso di formazione fuori ufficio. Non potrò quindi lavorare al file. Abbi pazienza :)








  • di dodi data: 14/11/2012 20:57:32

    esatto confermo. si potrebbe magari invece di dare il codice alla domanda con AA00001 (esempio), si potrebbe dare il codice: nome materia più il numero progressivo (esempio: ITA0001). non ti preoccupare quando puoi mi trovi qui. ti ringrazio mille per l'aiuto e il tuo interesse. per un altro concorso invece ho i file pdf già struttura in 8 tabelle come ci servirebbero. ma facciamo una cosa per volta.
    grazie ciao



  • di dodi data: 15/11/2012 09:14:59

    su un altro forum un utente mi ha sistemato il file con le domande di italiano nelle 8 colonne come ci servono. ti posto posto quello che mi ha scritto e allego anche il file xsl modificato.

    "Ho preparato la tabella, personalmente ho provato a metterla nel Tuo QUIZ, però mi da errori di codice VBA.
    Sicuramente qualcuno migliore di me ci riesce.
    Nell'allegato, ci sono le formule per decifrare eventualmente un'altro PDF(stessa struttura)
    Se il PDF è simile a quello spostato ieri, a cui ho tolto le righe vuote e ogni tanto il numero di pagina PDF
    Per finire ho copiato la colonna A (tutti i dati sono in quella colonna), nella colonna A del foglio Inizio
    Nella colonna B esiste già un formula che annulla gli spazi per circa 3000 righe
    A quel punto copio la colonna B e la inserisco in colonna A del foglio Formule copia/incolla/speciale/valori
    Nelle rispettive colonne B,C,D,E,F,G,H ci sono altre formule che decifrano il PDF in qualche modo.
    Se tutto va bene, avviando la Sub ordina(), ordina tutte le domande nelle colonne M:R
    Ps casomai la macro andasse in errore è semplicemnte perchè ha trovato una cella in cui una formula da come risultato #valore
    Pps In tutte quelle formule c'èra solo un cella (non ricordo quale) che ho dovuto cancellare la formula e mettere manualmente il valore.


    Pps. Nel foglio Dati c'è il Tuo Quiz"



    io non conoscendo excel ho capio poco e niente



  • di Vecchio Frac data: 15/11/2012 20:11:03

    Bene, ti ringrazio per il nuovo file.
    Da parte mia ho già cominciato a sistemare il tracciato del file.
    Ti confesso che anch'io ho capito poco dell'italiano del tuo interlocutore, devo mettermi con calma ad esaminare il materiale. Cosa vorrà dire con "ci sono altre formule che decifrano il PDF in qualche modo"? :)

    Questi sono giorni pesanti per me e devo ritagliarmi il tempo per seguire tutto.





  • di dodi data: 15/11/2012 21:03:06

    vedi un pò cosa riesci a fare



  • di dodi data: 16/11/2012 13:42:46

    non se serve, questo è il codice userform del programmino:

    '-------------------------------------------------------------
    'Quiz per aspiranti allievi ufficiali della Guardia di Finanza
    'Realizzato da Mattia Biffi
    '-------------------------------------------------------------

    Dim RigaDomanda As Integer
    Dim IndiceDomanda As Domanda
    Dim DomandeLette As Integer
    Dim DomandeEsatte As Integer
    Dim PercentualeEsatte As Integer
    Dim DomandaDaVerificare As Integer
    Dim DomandeTotali As Integer
    Dim UltimaDomandaCasualeRisposta As Integer


    Private Sub CmbIndice_Change()
    Dim Lettere As String * 2
    Dim Numeri As String
    Dim Cont1 As Integer
    Dim Cont2 As Integer


    Lettere = CmbIndice.Text
    Numeri = "00001"

    For Cont1 = 0 To UBound(IndiceDomanda.Indice)
    If Lettere = IndiceDomanda.Indice(Cont1) Then
    CmbNumero.Clear
    For Cont2 = 1 To IndiceDomanda.Numero(Cont1)
    CmbNumero.AddItem Format$(CStr(Cont2), "00000")
    Next Cont2
    CmbIndice.ListIndex = Cont1
    CmbNumero.ListIndex = CInt(Numeri) - 1
    End If
    Next Cont1
    Call AzzeraOpzioni

    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub CmbNumero_Change()
    If (CmbNumero.ListCount > 0) Then
    RigaDomanda = RigaAssoluta(CmbIndice.Text & CmbNumero.Text)
    Call LeggiDomanda(RigaDomanda)
    End If
    Call AzzeraOpzioni

    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub CmdAzzeramento_Click()
    Dim Risposta As VbMsgBoxResult

    Risposta = MsgBox("Azzerare il conteggio ?", vbInformation + vbYesNo, "Attenzione")
    If Risposta = vbYes Then
    DomandeLette = 0
    DomandeEsatte = 0
    PercentualeEsatte = 0
    DomandaDaVerificare = 0

    Call NascondiFaccine
    LblLette.Caption = CStr(DomandeLette)
    LblEsatte.Caption = CStr(DomandeEsatte)
    LblPercEsatte.Caption = CStr(PercentualeEsatte) & " %"
    Me.MousePointer = 13
    Foglio1.Range("H1:H1").EntireColumn.Delete
    Me.MousePointer = 0
    End If
    Call AzzeraOpzioni

    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub CmdIndietro_Click()
    Dim Numero As Integer
    Dim Cont As Integer


    If OptSequenziale.Value = True Then
    If RigaDomanda > 1 Then
    RigaDomanda = RigaDomanda - 1
    Call LeggiDomanda(RigaDomanda)
    Call AzzeraOpzioni
    End If

    ElseIf OptCasuale.Value = True Then
    If UltimaDomandaCasualeRisposta > 0 Then
    RigaDomanda = UltimaDomandaCasualeRisposta

    Call LeggiDomanda(RigaDomanda)
    Call AzzeraOpzioni
    End If
    End If

    Call AggiornaCombo
    DomandaDaVerificare = 0
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub CmdAvanti_Click()
    Dim NumeroCasuale As Integer
    Dim StrTemp As String * 1

    If OptSequenziale.Value = True Then
    If RigaDomanda < DomandeTotali Then
    RigaDomanda = RigaDomanda + 1
    Call LeggiDomanda(RigaDomanda)
    Call AzzeraOpzioni
    End If
    ElseIf OptCasuale.Value = True Then
    Me.MousePointer = 13

    Do
    Randomize Timer
    NumeroCasuale = Int((DomandeTotali * Rnd) + 1)

    StrTemp = Foglio1.Cells(NumeroCasuale, 8)
    Loop While (LCase(StrTemp) = "x")

    RigaDomanda = NumeroCasuale
    Call LeggiDomanda(RigaDomanda)
    Call AzzeraOpzioni

    Me.MousePointer = 0
    End If

    Call AggiornaCombo
    DomandaDaVerificare = 0
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub CmdVerificaRisposta_Click()
    Dim RispostaEsatta As String
    Dim Cont As Integer


    If ((OptRisposta1.Value = True) Or _
    (OptRisposta2.Value = True) Or _
    (OptRisposta3.Value = True) Or _
    (OptRisposta4.Value = True)) Then


    RispostaEsatta = Foglio1.Cells(RigaDomanda, 7)
    RispostaEsatta = UCase(RispostaEsatta)
    Select Case RispostaEsatta
    Case Is = "A"
    OptRisposta1.BackColor = vbGreen
    If OptRisposta1.Value <> True Then
    If OptRisposta2.Value = True Then
    OptRisposta2.BackColor = vbRed
    ElseIf OptRisposta3.Value = True Then
    OptRisposta3.BackColor = vbRed
    ElseIf OptRisposta4.Value = True Then
    OptRisposta4.BackColor = vbRed
    End If
    Else
    DomandeEsatte = DomandeEsatte + 1
    End If

    Case Is = "B"
    OptRisposta2.BackColor = vbGreen
    If OptRisposta2.Value <> True Then
    If OptRisposta1.Value = True Then
    OptRisposta1.BackColor = vbRed
    ElseIf OptRisposta3.Value = True Then
    OptRisposta3.BackColor = vbRed
    ElseIf OptRisposta4.Value = True Then
    OptRisposta4.BackColor = vbRed
    End If
    Else
    DomandeEsatte = DomandeEsatte + 1
    End If

    Case Is = "C"
    OptRisposta3.BackColor = vbGreen
    If OptRisposta3.Value <> True Then
    If OptRisposta1.Value = True Then
    OptRisposta1.BackColor = vbRed
    ElseIf OptRisposta2.Value = True Then
    OptRisposta2.BackColor = vbRed
    ElseIf OptRisposta4.Value = True Then
    OptRisposta4.BackColor = vbRed
    End If
    Else
    DomandeEsatte = DomandeEsatte + 1
    End If

    Case Is = "D"
    OptRisposta4.BackColor = vbGreen
    If OptRisposta4.Value <> True Then
    If OptRisposta1.Value = True Then
    OptRisposta1.BackColor = vbRed
    ElseIf OptRisposta2.Value = True Then
    OptRisposta2.BackColor = vbRed
    ElseIf OptRisposta3.Value = True Then
    OptRisposta3.BackColor = vbRed
    End If
    Else
    DomandeEsatte = DomandeEsatte + 1
    End If
    End Select

    If (LCase(Foglio1.Cells(RigaDomanda, 8)) <> "x") Then
    DomandaDaVerificare = RigaDomanda
    DomandeLette = DomandeLette + 1
    Call ModificaFaccina
    LblLette.Caption = CStr(DomandeLette)
    LblEsatte.Caption = CStr(DomandeEsatte)
    LblPercEsatte.Caption = CStr(PercentualeEsatte) & " %"

    Foglio1.Cells(RigaDomanda, 8) = "x"
    Foglio1.Range("H" & CStr(RigaDomanda), "H" & CStr(RigaDomanda)).HorizontalAlignment = xlHAlignCenter
    End If
    UltimaDomandaCasualeRisposta = RigaDomanda

    Else

    MsgBox "Selezionare almeno una risposta !", vbExclamation, "Attenzione"

    End If

    End Sub

    Private Sub FraAndamento_Click()
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub FraRiferimenti_Click()
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub LblCapEsatte_Click()
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub LblCapIndice_Click()
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub LblCapLette_Click()
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub LblCapNumero_Click()
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub LblCapPercEsatte_Click()
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub LblDomanda_Click()

    End Sub

    Private Sub LblEsatte_Click()
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub LblLette_Click()
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub LblPercEsatte_Click()
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub OptCasuale_Click()
    CmbIndice.Enabled = False
    CmbNumero.Enabled = False
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub OptRisposta1_Click()
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub OptRisposta2_Click()
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub OptRisposta3_Click()
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub OptRisposta4_Click()
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub OptSequenziale_Click()
    CmbIndice.Enabled = True
    CmbNumero.Enabled = True
    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub UserForm_Activate()
    Dim Cont1 As Integer
    Dim NumeroCasuale As Integer
    Dim StrTemp As String * 1


    Call VerificaVettoreDomande(IndiceDomanda)
    Call CaricaImpostazioniQuiz

    'Caricamento domanda casuale
    If OptCasuale.Value = True Then
    Me.MousePointer = 13

    Do
    Randomize Timer
    NumeroCasuale = Int((DomandeTotali * Rnd) + 1)

    StrTemp = Foglio1.Cells(NumeroCasuale, 8)
    Loop While (LCase(StrTemp) = "x")

    RigaDomanda = NumeroCasuale
    Call LeggiDomanda(RigaDomanda)

    Me.MousePointer = 0
    End If

    Call LeggiDomanda(RigaDomanda)


    For Cont1 = 0 To UBound(IndiceDomanda.Indice)
    CmbIndice.AddItem IndiceDomanda.Indice(Cont1)
    Next Cont1

    Call AggiornaCombo
    Foglio3.Activate
    Foglio3.Range("F22:F22").Select

    CmdVerificaRisposta.SetFocus
    End Sub

    Private Sub UserForm_Terminate()
    Call SalvaImpostazioniQuiz
    Lavoro.Save
    End Sub



    '--------------------
    'Procedure e funzioni
    '--------------------

    Private Sub AggiornaCombo()
    Dim Lettere As String * 2
    Dim Numeri As String
    Dim Cont1 As Integer
    Dim Cont2 As Integer


    Lettere = Mid$(LblNumDomanda.Caption, 1&, 2&)
    Numeri = Mid$(LblNumDomanda.Caption, 3&)

    For Cont1 = 0 To UBound(IndiceDomanda.Indice)
    If Lettere = IndiceDomanda.Indice(Cont1) Then
    CmbNumero.Clear
    For Cont2 = 1 To IndiceDomanda.Numero(Cont1)
    CmbNumero.AddItem Format$(Cont2, "00000")
    Next Cont2
    CmbIndice.ListIndex = Cont1
    CmbNumero.ListIndex = CInt(Numeri) - 1
    End If
    Next Cont1

    End Sub

    Private Sub CaricaImpostazioniQuiz()

    With Foglio2
    RigaDomanda = RigaAssoluta(.Cells(2, 1))
    DomandeLette = CInt(.Cells(2, 2))
    DomandeEsatte = CInt(.Cells(2, 3))

    If .Cells(2, 4) = "Sequenziale" Then
    OptSequenziale.Value = True
    ElseIf .Cells(2, 4) = "Casuale" Then
    OptCasuale.Value = True
    End If

    End With

    Call ModificaFaccina
    LblLette.Caption = CStr(DomandeLette)
    LblEsatte.Caption = CStr(DomandeEsatte)
    LblPercEsatte.Caption = CStr(PercentualeEsatte) & " %"

    End Sub

    Private Sub SalvaImpostazioniQuiz()
    Dim Lettere As String * 2
    Dim Numeri As String


    Lettere = Mid$(LblNumDomanda.Caption, 1&, 2&)
    Numeri = Mid$(LblNumDomanda.Caption, 3&)

    If RigaDomanda 0) Then
    If (DomandeEsatte > 0) Then
    PercentualeEsatte = CInt(Round(DomandeEsatte / DomandeLette, 2&) * 100)
    Else
    PercentualeEsatte = 0
    End If

    Call NascondiFaccine

    If (PercentualeEsatte >= 90) Then
    Img10.Visible = True
    ElseIf (PercentualeEsatte >= 80) And (PercentualeEsatte <90>= 70) And (PercentualeEsatte <80>= 60) And (PercentualeEsatte <70>= 50) And (PercentualeEsatte <60>= 40) And (PercentualeEsatte <50>= 30) And (PercentualeEsatte <40>= 20) And (PercentualeEsatte <30>= 10) And (PercentualeEsatte < 20) Then
    Img2.Visible = True
    ElseIf (PercentualeEsatte < 10) Then
    Img1.Visible = True
    End If

    Else

    Call NascondiFaccine
    End If
    End Sub

    Private Sub NascondiFaccine()
    Img1.Visible = False
    Img2.Visible = False
    Img3.Visible = False
    Img4.Visible = False
    Img5.Visible = False
    Img6.Visible = False
    Img7.Visible = False
    Img8.Visible = False
    Img9.Visible = False
    Img10.Visible = False
    End Sub

    Private Sub AzzeraOpzioni()
    OptRisposta1.BackColor = &H8000000F
    OptRisposta2.BackColor = &H8000000F
    OptRisposta3.BackColor = &H8000000F
    OptRisposta4.BackColor = &H8000000F
    OptRisposta1.Value = False
    OptRisposta2.Value = False
    OptRisposta3.Value = False
    OptRisposta4.Value = False
    End Sub

    Private Sub VerificaVettoreDomande(ByRef IndiceDomanda As Domanda)
    Const RigheVuoteFineDomande As Integer = 5

    Dim Cont1 As Integer
    Dim Cont2 As Integer
    Dim ContFineDomande As Integer

    Dim Cella As String
    Dim Totale As Integer
    Dim Parziale As Integer
    Dim FineDomande As Boolean


    Cont1 = 5
    Do
    Cella = Foglio2.Cells(Cont1, 2)
    If Len(Cella) = 0 Then
    FineDomande = True
    Else
    Totale = Totale + CInt(Cella)
    Cont1 = Cont1 + 1
    End If
    Loop Until FineDomande = True
    FineDomande = False

    DomandeTotali = CInt(Foglio2.Cells(2, 5))

    If ((DomandeTotali = 0) Or (DomandeTotali < Totale) Or (Totale = 0)) Then
    'Elimina la tabella degli indici nella scheda Impostazioni
    Do
    Cella = Foglio2.Cells(5, 1)
    If (Len(Cella) > 0) Then
    Foglio2.Range("A5:B5").EntireRow.Delete (xlShiftUp)
    End If
    Loop Until (Len(Cella) = 0)

    'Esegue l'analisi della scheda Domande
    Me.MousePointer = 13
    Totale = 0
    Cont1 = 1
    Cont2 = 5

    Do
    'Elimina eventuali righe vuote nella scheda Domande
    Cella = Foglio1.Cells(Cont1, 1)
    If Len(Cella) = 0 Then
    Foglio1.Range("A" & CStr(Cont1)).EntireRow.Delete (xlShiftUp)
    ContFineDomande = ContFineDomande + 1
    If ContFineDomande = RigheVuoteFineDomande Then
    FineDomande = True
    End If

    Else
    'Ricerca gli indici delle domande e li aggiunge nella scheda Impostazioni
    If Left(Cella, 2&) 5 Then
    Foglio2.Cells(Cont2 - 1, 2) = CStr(Parziale)
    End If
    Cont2 = Cont2 + 1
    Parziale = 0

    End If
    Parziale = Parziale + 1
    Totale = Totale + 1
    Cont1 = Cont1 + 1

    End If
    Loop Until FineDomande = True

    'Azzera la statistica e aggiorna alcuni dati nella scheda Impostazioni
    Foglio2.Cells(2, 1) = Foglio1.Cells(1, 1)
    Foglio2.Cells(2, 2) = "0"
    Foglio2.Cells(2, 3) = "0"
    Foglio2.Cells(2, 5) = CStr(Totale)
    DomandeTotali = Totale
    Foglio2.Cells(Cont2 - 1, 2) = CStr(Parziale)
    Me.MousePointer = 0

    End If


    'Riempimento del vettore IndiceDomanda
    ReDim IndiceDomanda.Indice(0)
    ReDim IndiceDomanda.Numero(0)
    Cont1 = 5
    Do

    Cella = Foglio2.Cells(Cont1, 1)
    If Len(Cella) = 0 Then
    FineDomande = True

    Else
    IndiceDomanda.Indice(Cont1 - 5) = Cella
    Cella = Foglio2.Cells(Cont1, 2)
    IndiceDomanda.Numero(Cont1 - 5) = CInt(Cella)

    Cont1 = Cont1 + 1
    ReDim Preserve IndiceDomanda.Indice(UBound(IndiceDomanda.Indice) + 1)
    ReDim Preserve IndiceDomanda.Numero(UBound(IndiceDomanda.Numero) + 1)

    End If
    Loop Until FineDomande = True

    If (UBound(IndiceDomanda.Indice) > 0) Then
    ReDim Preserve IndiceDomanda.Indice(UBound(IndiceDomanda.Indice) - 1)
    ReDim Preserve IndiceDomanda.Numero(UBound(IndiceDomanda.Numero) - 1)

    End If
    End Sub



  • di dodi data: 16/11/2012 14:08:34

    ho allegato il file "domande.rar" contente tutte le domande sistemate nelle 8 colonne



  • di Vecchio Frac data: 16/11/2012 15:25:26

    Aggiornamento.

    Primo passo (finito): nei file "inglese" e "geografia" ho unificato le tabelle di tutte le schede in un'unica scheda iniziale (fatto col breve codice che allego qui sotto).

    Secondo passo (sto iniziando): convertire il formato attuale (domanda e risposte in un'unica cella) nel formato esteso, una risposta per cella.
     
    'unifica tutte le tabelle dei singoli fogli in un unico foglio, il primo
    Sub unifica()
    Dim first_sheet As Worksheet, sh As Worksheet
    
        Set first_sheet = Foglio1
        For Each sh In ThisWorkbook.Sheets
            If sh.Name <> first_sheet.Name Then sh.[A1].CurrentRegion.Copy first_sheet.Cells([COUNTA(A:A)] + 1, 1)
        Next
    
    End Sub
    






  • di Vecchio Frac data: 16/11/2012 15:52:21

    Secondo aggiornamento :)

    Secondo passo (sto finendo): la trasposizione da un'unica cella di domande con risposte su più celle (una per la domanda, le altre per le risposte). Allego per curiosità il codice che fa questo, rispetto al file in esame (geografia, 759 domande). Ci mette un paio di decimi di secondo, è velocissimo :)
    Il problema è che alcune celle con domande non hanno il formato previsto (ritorni a capo con alt-Invio) quindi ci metto un pochino ad aggiustare a manina le incongruenze.
     
    Sub separa()
    Dim cella As Range, i As Integer, sep As Integer, v As Variant, k As Integer
    
        For Each cella In [A2:A760]
            i = i + 1
            
            Cells(cella.Row, 6) = "GEO" & Format(i, "0000")     'codice
            
            k = 7
            For Each v In Split(cella.Offset(, 1), vbLf)        'separa la domanda dalle risposte
                Cells(cella.Row, k) = Trim(v)
                k = k + 1
            Next
    
            Cells(cella.Row, 12) = Trim(cella.Offset(, 2))      'risposta esatta
        Next
    
        MsgBox "Ho terminato."
    End Sub






  • di rplacanica (utente non iscritto) data: 16/11/2012 16:58:03

    non basta la proprietà

    .WrapText = True
    a mandare a capo il contenuto delle celle?

    Io ho sempre trovato questa "registrazione"...



  • di dodi data: 16/11/2012 17:09:08

    grazie per il lavoro



  • di dodi data: 16/11/2012 17:12:43

    ricordo che ho allegato il file con tutte le domande sistemate nelle 8 colonne.



  • di Vecchio Frac data: 16/11/2012 18:11:48

    @rplacanica
    L'obiettivo non è "mandare a capo" il contenuto delle celle.
    Abbiamo una cella che contiene delle righe separate da degli "a capo" (e neanche normali return carriage, ma dei line feed che hanno un codice diverso). Bisogna spalmare il testo sulle colonne adiacenti, una riga per colonna.

    Esempio: una cella contiene questo testo:
    Il fiume più lungo d'Italia è:
    A) il Po
    B) il Tevere
    C) l'Adige
    D) la Senna

    In Excel il ritorno a capo in una stessa cella si ottiene con Alt-Invio, che viene codificato come line feed (Chr 10 oppure vbLf). Il codice si occupa di splittare il testo della cella in corrispondenza dei line feeds quindi distribuisce ogni spezzone trovato nelle celle adiacenti. Il tutto molto semplice (ho trovato complicazioni in realtà ma le ho già risolte con qualche correzione al codice che tenesse conto dei casi particolari, ad esempio che le risposte non fossero tutte separate da Alt Invio).

    @dodi
    Ho visto, ma non di inglese e geografia, sto facendo un passo alla volta con quei file da sistemare ^_^






  • di rplacanica (utente non iscritto) data: 16/11/2012 19:15:34

    ok, ho capito!



  • di dodi data: 16/11/2012 20:30:26

    scusa se insisto, il file domande.rar contiene l'excel con tutte le domande sistemate anche di inglese e geografia



  • di Vecchio Frac data: 16/11/2012 21:08:50

    E pensa che me lo avevi già detto con estrema pazienza, l'età degli ...anta è dura per me ^_^
    Lo avessi capito prima non avrei perso tempo a cercare di ripulire i file precedenti inventandomi quelle macro...
    Vabbè vuol dire che vi regalo quel codice per la vostra curiosità scientifica :)

    Quindi ora si tratta di adattare il codice originale del programmetto che pesca le domande fornendogli questa nuova base dati (ovviamente bisogna anche codificare le domande come abbiamo già detto di fare ITA0001, STO0001, ecc.)





  • di dodi data: 17/11/2012 01:07:02

    ahahah... grazie per la pazienza



  • di dodi data: 17/11/2012 18:49:57

    Aggiornamento:
    ho modificato il programmino inserendo le domande che mi interessavano. però poichè mancano le domande di matematica, non ho ben capito come modificare il file xls trasformato dal pdf che non ha la struttura delle 8 colonne. se per piacere mi spiegate. grazie



  • di dodi data: 17/11/2012 19:04:33

    risolto con la macro postata sopra. grazie mille



  • di dodi data: 17/11/2012 19:15:52

    problema: la macro divide si la domanda dalle risposte ma quest'ultime spesso sono contenute in un'unica cella. come fare?



  • di Vecchio Frac data: 17/11/2012 19:45:10

    Sono contento che stai risolvendo pian piano ^_^
    Se hai incontrato le difficoltà che ho avuto io, posso aiutarti.
    In alcuni casi le risposte erano scritte di seguito, senza ritorni a capo nella cella.
    In questo caso la procedura di separazione è più complicata.
    Nota: il ciclo For Each è impostato da A2 a A268, aggiustalo in funzione del range reale.
     
    Sub separa()
    Dim cella As Range, i As Integer, sep As Integer, v As Variant, w As Variant, k As Integer, s As String
    
        For Each cella In [A2:A268]
            i = i + 1
            
            Cells(cella.Row, 6) = "ING" & Format(i, "0000")     'codice
            
            k = 7
            w = Split(cella.Offset(, 1), vbLf)
            If UBound(w) >= 4 Then
                For Each v In w        'separa la domanda dalle risposte
                    If Trim(v) <> "" Then
                        Cells(cella.Row, k) = Replace(Trim(v), vbLf, "")
                        k = k + 1
                    End If
                Next
            Else
                w = Split(cella.Offset(, 1), ")")
                Cells(cella.Row, 7) = Replace(Trim(Left(w(0), Len(w(0)) - 1)), vbLf, "")
                Cells(cella.Row, 8) = Replace("A) " & Trim(Left(w(1), Len(w(1)) - 1)), vbLf, "")
                Cells(cella.Row, 9) = Replace("B) " & Trim(Left(w(2), Len(w(2)) - 1)), vbLf, "")
                Cells(cella.Row, 10) = Replace("C) " & Trim(Left(w(3), Len(w(3)) - 1)), vbLf, "")
                Cells(cella.Row, 11) = Replace("D) " & Trim(Left(w(4), Len(w(4)) - 1)), vbLf, "")
            End If
    
            s = cella.Offset(, 2)
            s = Replace(s, vbLf, "")
            Cells(cella.Row, 12) = Trim(s)      'risposta esatta
        Next
    
        MsgBox "Ho terminato."
    End Sub
    






  • di dodi data: 17/11/2012 19:50:14

    aspetta aspetta per me è arabo questo .. io sto andando ad intuito... allora con la prima macro ho diviso la domanda dalle risposte. però ora la maggior parte delle risposte sono in un'unica cella. cosa dovrei fare? per far funzionare il programmino ho semplicemente copiato il tutto nel foglio delle domande e avviato e funziona senza problemi. però le domande me le avevano passate già tutte sistemate. ora voglio provare a fare da solo perchè in futuro mi servirà. tu sei riuscito a risolvere?



  • di dodi data: 17/11/2012 20:08:11

    ho usato quest'ultima macro ma mi aggiusta solo le prime 53 domande e mi da errore:

    errore di run-time '5'
    chiamata di routine o argomento non validi.
    cosa significa?



  • di Vecchio Frac data: 17/11/2012 20:22:54

    Su che riga ottieni l'errore?
    A me, partendo dalle basi dati separate ma grezze, cioè lette dal pdf, geografia e inglese per intenderci, non ho avuto grossi problemi di conversione, grazie alle macro che ti ho riproposto.
    La base dati integrale presenta in effetti ancora dei problemi (non tutte le risposte D ci sono e a volte mancano anche alcune C).





  • di dodi data: 17/11/2012 20:28:00

    una volta uscito l'errore, se premo debug mi evidenzia in giallo questo:
    Cells(cella.Row, 11) = Replace("D) " & Trim(Left(w(4), Len(w(4)) - 1)), vbLf, "")



  • di dodi data: 17/11/2012 20:32:40

    ho provato a fare il file di italiano e lo fa perfettamente



  • di Vecchio Frac data: 17/11/2012 20:58:36

    E' probabile (molto probabile) che in quella specifica domanda non ci siano tutte le risposte da A a D. Quindi il codice non trova alcuna risposta da riportare nella colonna dedicata e si ferma. In effetti ho riscontrato anche nel file domande.xls che ci sono diverse domande monche (mancano risposte). In tal caso, bisognerà ignorare l'errore e continuare.





  • di dodi data: 17/11/2012 21:22:05

    come faccio ad ignorare? si ferma proprio il processo



  • di dodi data: 17/11/2012 21:27:50

    hai ragione è perchè manca qualcosa nella domande o nelle risposte... le salto e faccio solo quelle complete



  • di Vecchio Frac data: 18/11/2012 09:16:18

    Bè sì, è il codice che deve ignorare gli errori :)
    con un'istruzione On Error resume next prima del For .





  • di dodi data: 18/11/2012 10:12:48

    scusami non ho capito, se scrivo questa istruzione nella macro mi salta automaticamente gli errori?



  • di Vecchio Frac data: 18/11/2012 10:14:45

    Sì.
    L'istruzione è pericolosa perchè il flusso non si ferma, arriva comunque alla fine nonostante *qualsiasi* errore ed è per questo che va utilizzata con cautela. Ma in certi casi è addirittura indispensabile :)





  • di dodi data: 18/11/2012 10:25:48

    mi postresti postare la macro con questa modifica per piacere perchè non ho capito dove va.4
    inoltre ho notato che la macro sbaglia a individuare le risposte nel senso che le risposte non corrispondono alla domanda. succede anche a te?



  • di Vecchio Frac data: 18/11/2012 10:28:11

    Puoi metterla subito dopo il Dim iniziale.

    Sub separa()
    Dim cella As Range, i As Integer, sep As Integer, v As Variant, w As Variant, k As Integer, s As String

    On Error Resume Next

    Alcune risposte non corrispondono alla domanda... in verità non ho controllato la coerenza domanda/risposte, ma solo la correttezza della suddivisione tra A-B-C-D.





  • di dodi data: 18/11/2012 10:29:16

    mi spiego meglio, a tutte le domande la fine della domanda sia che sia un numero o una parola slitta nella prima cella della risposta e quindi tutte le risposte slittano di una cella. spero di aver reso l'idea. c'è un modo per aggiustare questa cosa? intendo sulla macro perchè altrimenti bisogna farlo manualmente ed è un lavoraccio



  • di dodi data: 18/11/2012 11:04:39

    qualche giorno fa mi hanno postato un'altra macro per dividere le domande dalle risposte ma mi da errore. allora anche qui ho appena inserito la stringa per ignorare l'errore ma quando eseguo la macro non mi da nessun risultato. te posto e vedi se riesci a farla funzionare


     
    Sub dividi() 
    Dim x, y, L1, L2, L3, L4, r, col, n, n1, n2, n3, n4, dd, d1, d2, d3, d4, sh1 As Worksheet, sh2 As Worksheet 
    
    Set sh1 = Worksheets("Table 1") 
    Set sh2 = Worksheets("Foglio1") 
    
    sh1.Activate 
    r = 2 
    col = 4 
    For x = 8 To Cells(Rows.Count, 1).End(xlUp).Row 
        sh2.Cells(r, 1) = Cells(x, 1) 
        sh2.Cells(r, 3) = Cells(x, 4) 
        L1 = Len(Cells(x, 2)) 
        For y = 1 To L1 
            L4 = Mid(Cells(x, 2), y, 2) 
            Select Case L4 
                Case "A)" 
                    dd = y 
                Case "B)" 
                    d1 = y 
                Case "C)" 
                    d2 = y 
                Case "D)" 
                    d3 = y 
            End Select 
        Next y 
        n = d1 - dd 
        n1 = Trim(Mid(Cells(x, 2), dd, n)) 
        n = d2 - d1 
        n2 = Trim(Mid(Cells(x, 2), d1, n)) 
        If d3 > d2 Then n = d3 - d2 Else n = d2 - d3 
        n3 = Trim(Mid(Cells(x, 2), d2, n)) 
        n4 = Trim(Mid(Cells(x, 2), d3, L1)) 
        
        sh2.Cells(r, 2) = Trim(Mid(Cells(x, 2), 1, dd - 2)) 
        sh2.Cells(r, 4) = n1 
        sh2.Cells(r, 5) = n2 
        sh2.Cells(r, 6) = n3 
        sh2.Cells(r, 7) = n4 
        r = r + 1 
    Next 
    End Sub



  • di Vecchio Frac data: 18/11/2012 12:11:16

    Più o meno, con un approccio diverso, è analoga alla mia soluzione, che è solo un filino più elegante perchè non pasticcia troppo con le stringhe ma sfrutta Split ;)
    Ma se il problema è a monte, cioè la struttura dei dati nella cella, non c'è molto da fare nè con una nè con l'altra soluzione.
    In pratica dobbiamo riprendere in mano la base dati e rianalizzarla.
    Partiamo da un presupposto: stiamo parlando della base dati totale, quella già fatta con oltre quattromila righe?






  • di dodi data: 18/11/2012 20:59:36

    allora, la macro che ho postato a me non funziona con nessuno dei file convertiti in xls mentre la tua non mi da problemi. la tua però da problemi nel file matematica che divide si la domanda dalle risposte ma una parte della domande (la fine) finisce nella cella della prima risposta slittando tutte le altre risposte nella cella successiva. credi si possa fare qualcosa?



  • di Vecchio Frac data: 19/11/2012 11:11:36

    Io però non trovo o non ho il file della matematica mentre ho visto e sistemato geografia, italiano, inglese, storia, educazione civica e scienze.
    Sicuramente si può fare qualcosa in automatico, se la struttura del file è coerente.





  • di dodi data: 19/11/2012 11:18:40

    ho allegato il file di matematica



  • di Vecchio Frac data: 19/11/2012 11:34:29

    Perfetto, mi metto al lavoro adesso che ho un quarto d'ora :)





  • di Vecchio Frac data: 19/11/2012 11:43:54

    La macro va in palla perchè ci sono troppe domande che sono prive di risposta; la cella delle risposte unificata presente solo A) B) C) D).
    Vedo quel che posso fare, ma presumo che dovrai inventarti delle risposte.





  • di Vecchio Frac data: 19/11/2012 11:50:27

    Ho capito perchè, forse nel pdf originale le espressioni matematiche erano costruite con simboli o con grafica e la resa da pdf a xls non è avvenuta per niente. Sicchè adesso ci troviamo con domande monche, e risposte vuote, con un formato di file che spesso e volentieri mi fa andare in crash Excel stesso.
    Come hai ottenuto la conversione del pdf? se è come temo, bisognerà riscrivere a mano le espressioni coinvolte (domande da 53 in avanti, soprattutto)





  • di dodi data: 19/11/2012 12:08:41

    ho convertito col programma Nitro pro 8. ti allego anche il pdf di matematica



  • di dodi data: 19/11/2012 12:11:23

    il pdf supera 1 mega e non me lo fa allegare, come te lo posto?



  • di Vecchio Frac data: 19/11/2012 13:37:30

    Prova a comprimerlo con zip o rar.
    Ma il problema non si sposta: poichè ci serve la conversione in Excel, o si trova un modo decente per convertire il file oppure l'unica soluzione è riscrivere le formule matematiche a mano direttamente in Excel, una volta convertito il convertibile.





  • di dodi data: 19/11/2012 13:43:10

    già compresso ma risulta 1,11 mb. avevo capito ciò che volevi dire, ti volevo dare il pdf casomai riuscivi a convertirlo in un modo migliore. diciamo che ho fatto tutto tranne che la matematica. se non troviamo un soluzione non importante. ho notato però che ora quando chiudo il programmino excel mi da errore: run-time 13 tipo non corrispondente. faccio debug ed esce in giallo: Numeri = Format$(CInt(Numeri) + 1, "00000"). ma comunque funziona tutto



  • di dodi data: 19/11/2012 13:55:58

    ti allego il programmino così come l'ho modificato. vedi che te ne pare



  • di Vecchio Frac data: 19/11/2012 14:08:34

    I problemi legati al codice li risolviamo.
    I problemi legati al file mi piacerebbe risolverli :)
    Prova a inviarmi il pdf a questo indirizzo temporaneo: vecchiofrac@dispose.it e vediamo se riesco a leggerlo.





  • di Vecchio Frac data: 19/11/2012 14:23:24

    Un suggerimento: forse sarebbe meglio lasciare il codice alfabetico oltre che numerico nella sequenza delle domande, così puoi mostrare all'utilizzatore anche l'argomento di cui si tratta.





  • di Vecchio Frac data: 19/11/2012 14:27:49

    Ecco appunto ho scoperto il motivo! l'errore esce perchè non hai associato alle domande un codice alfabetico di due lettere + codice numerico.
    Al salvataggio viene fatta la divisione del codice in parte alfabetica (AA nell'originale) e numerica (00000) ma ora che ci sono solo numeri il programma va in confusione.
    Quindi è importante, per non mettere mano pesantemente al programma, ripristinare questo meccanismo.





  • di dodi data: 19/11/2012 14:41:33

    avevo intuito, io nel foglio impostazioni ho messo sollo delle sigle delle materie e il numero di quiz per ogni materia. quando faccio partire il programmino ho comunque la possibilità di scegliere la materia che voglio svolgere. ora la modifica che dici tu non saprei dove farla. magari se mi spieghi. ti invio il pdf di matematica. aggiungo: è possibile mettere sul foglio "sfondo" un pulsante che faccia partire il programma senza usare la combinazione ctrl+M?



  • di dodi data: 19/11/2012 14:55:17

    credo di aver capito: dovremmo modificare la colonna del numero progressivo delle domande nel foglio "domande" dove io ho solo messo numeri in ordine crescente e invece dovrebbero essere formati da due lettere più 5 numeri, esempio: IT00001 e così via. è giusto?



  • di Vecchio Frac data: 19/11/2012 15:11:09

    Ti allego adesso la mia revisione.
    Contiene anche l'aggiustamento della prima colonna secondo quello che hai perfettamente intuito.
    All'avvio poi parte direttamente la schermata di presentazione, non mi piace molto che salvi in automatico ogni volta che si esce ma vabbè questa è una scelta tua, puoi anche fare in modo che all'uscita ti venga chiesto se salvare o meno.
    Devo controllare se ho ricevuto il file: queste email temporanee non mi soddisfano molto e male che va ti lascio l'email vera :)





  • di dodi data: 19/11/2012 15:11:46

    in caso sia giusto, c'è un modo veloce per farlo? farlo uno alla volta porta troppo tempo



  • di dodi data: 19/11/2012 15:15:52

    alla grande!!! per piacere mi spieghi come modificare la prima colonna velocemente senza fare una cella per volta??



  • di Vecchio Frac data: 19/11/2012 15:18:45

    Il mio codice numerico è di sole quattro cifre mentre il programmino se ne aspetta cinque.
    me ne sono accorto adesso, dopo aver allegato il file.
    Mettici mano, è facile: cerca nel codice le occorrenze di "Format" e imposta il formato a quattro cifre.
    Nell'originale ce ne sono solo tre:
    - nella Private Sub AggiornaCombo()
    - nella Private Sub SalvaImpostazioniQuiz()
    - nella Private Sub CmbIndice_Change()

    in tutte e tre le occasioni dove c'è Format devi scrivere "0000" invece che "00000".






  • di Vecchio Frac data: 19/11/2012 15:22:50

    E' più veloce se fai la modifica del codice che ti ho appena indicato :)
    Comunque io ho fatto tutto molto velocemente un attimo fa in questo modo (supponiamo di partire da IT):
    - in A1 ho scritto IT0001
    - in A2 ho scritto IT0002
    - ho evidenziato A1 e A2
    - ho afferrato il quadratino di trascinamento e ho effettuato uno scorrimento verso il basso fino a coprire tutte le 1008 domande di italiano. In automatico il nostro prodigioso Excel riempie la serie mantenendo IT e aggiornando il progressivo numerico :)





  • di dodi data: 19/11/2012 15:24:36

    non ho capito, devo apporre questa modifica al programmino che hai allegato?



  • di dodi data: 19/11/2012 15:25:58

    ecco è proprio la modifica automatica che non sapevo fare... facevo taglia e incolla :)



  • di dodi data: 19/11/2012 15:27:21

    comunque la modifica del codice deve essere fatta nel programmino che hai postato tu?



  • di Vecchio Frac data: 19/11/2012 15:29:57

    Bè direi di sì, è in fondo lo stesos programma che mi hai passato tu oggi, al quale ho fatto qualche piccola modifica per lo startup automatico e il clic sulle immagini :) (vabbè ho anche abbellito e ripulito le tabelle principali delle domande)





  • di Vecchio Frac data: 19/11/2012 15:30:48

    Se preferisci lo faccio e riallego il file modificato.





  • di dodi data: 19/11/2012 15:32:33

    scusa la domanda: per visualizzare il codice da modificare come faccio?



  • di dodi data: 19/11/2012 15:34:08

    dimmi come fare, voglio imparare



  • di Vecchio Frac data: 19/11/2012 15:37:34

    Premi Alt F11 e così entri nell'editor di codice
    Poi Ctrl-R per la finestra dei progetti
    Quindi due clic sulla voce Form e poi tsto destro su FrmQuiz --> Visualizza Codice
    Ecco il codice principale!! :)
    Adesso Ctrl-F per cercare "Format"
    Sostituisci 00000 con 0000
    Premi F3 per ripetere la ricerca
    (lo farai per tre volte)
    ...e se pasticci col codice ricordati di farlo su una copia di backup :)





  • di Vecchio Frac data: 19/11/2012 15:46:05

    Prova a mandarmi il pdf di matematica qui:
    vecchiofracexcelvba@yopmail.com





  • di dodi data: 19/11/2012 15:47:27

    perfetto fatto. poichè sono un pò perfettino, aprendo il codice esce in cima "programma test allievi ufficiali guardia di finanza", posso cambiare quella stringa scrivendo ciò che voglio?



  • di dodi data: 19/11/2012 15:51:54

    inviato :)



  • di Vecchio Frac data: 19/11/2012 15:52:12

    Puoi scriverci quello che vuoi, basta che la riga comincia con un apice ' (quello che sta sotto il punto interrogativo). Si tratta di un commento che viene ignorato dall'interprete. A voler essere del tutto perfettini, in Excel se premi Alt F8, clicchi su Quiz e premi Opzioni ti compare la scorciatoia da tastiera associata al programmetto, puoi cambiarla, eliminarla e soprattutto riscrivere la didascalia anche qui :)






  • di dodi data: 19/11/2012 15:57:26

    ho modificato quella stringa. però.... una volta avviato il programma e apparsa la finestra, sopra sopra rimane sempre scritto quiz allievi marescialli guardia di finanza. quella scritta si può cambiare?



  • di Vecchio Frac data: 19/11/2012 15:59:54

    Che pizza, comincio a odiare le mail temporanee :)
    Mi sono stancato, ho creato una cartella condivisa in Skydrive, ti do il link:
    sdrv.ms/S9BdF9

    Questa è una cartella sicura e condivisa solo con chi ha questo link sul mio spazio Hotmail.
    Aprila e spostaci dentro il file pdf, lo ricevo immediatamente.





  • di dodi data: 19/11/2012 16:01:11

    non mi invia il file all'ultima email che mi hai dato, invio fallito



  • di Vecchio Frac data: 19/11/2012 16:02:32

    Ah, ho capito... nell'Userform.
    Certo si può cambiare: vai nell'editor del codice (Alt F11), apri la finestra progetti (Ctrl-R), posizionati sul Form (FrmQuiz) e premi F4: appare la finestra delle proprietà del form. Tipicamente è ancorata a sinistra (ma la puoi spostare e chiudere se non serve, di solito non serve e occupa spazio).
    Cerca la voce "Caption" nella colonna di sinistra (è la quarta voce sotto "Name"), cambia la corrispondente informazione sulla colonna a destra et voilà :)





  • di Vecchio Frac data: 19/11/2012 16:03:19

    cit. " non mi invia il file all'ultima email che mi hai dato, invio fallito "
    ---> Lascia perdere quell'email temporanea, è stato un fallimento :)
    Usiamo Skydrive che è meglio.





  • di dodi data: 19/11/2012 16:04:07

    ok fatto



  • di Vecchio Frac data: 19/11/2012 16:06:51

    Lo sapevo che era un problema di grafica. Le piccole potenze dalla domanda 53 in giù sono come in "apice" e non vengono ben digerite evidentemente. Adesso vediamo cosa possiamo fare... chi la dura la vince ^_^





  • di dodi data: 19/11/2012 16:08:05

    sei semplicemente un grande!!! fatto anche questa modifica



  • di dodi data: 19/11/2012 16:09:37

    se è una rogna lascia perdere...



  • di Vecchio Frac data: 19/11/2012 16:21:33

    Sì è una rogna :)
    Sto str* mi converte il testo ma non le frazioni e le potenze.
    Dovrò fare tutto a mano.
    Ma ci riuscirò ^_^





  • di dodi data: 19/11/2012 16:45:13

    no dai è un lavoraccio, lascia stare...
    piuttosto, ho già modificato il tuo programma inserendo le domande di un altro concorso.il foglio "domande" ha il contorno delle celle tipo tratteggio (che non è la griglia) ma non tutto il foglio. poichè i quiz questa volta sono di più come faccio ad estendere questo tratteggio a tutte le domande e risposte? (giusto per estetica)



  • di Vecchio Frac data: 19/11/2012 18:33:52

    Hai visto che effetto carino? è fine a se stesso, perchè in teoria il foglio domande (con le risposte) dovrebbe essere nascosto.
    Ma a me piaceva anche l'estetica :) Comunque è un banalissimo bordo tratteggiato.
    Per replicarlo fai così: evidenzia una riga, poi premi il pulsante pennello (copia formato), quindi evidenzia alcune righe e queste prenderanno la formattazione della riga dalla quale hai appunto copiato il formato.

    Se però ti serve, il lavoro lo faccio volentieri, mica ci metto un anno :)





  • di dodi data: 19/11/2012 18:43:37

    mannagghia non trovo sto pulsante pennello
    per matematica, a tempo perso se vuoi falla. ma non c'è fretta



  • di dodi data: 19/11/2012 18:45:36

    che fesso trovato!



  • di dodi data: 19/11/2012 18:50:32

    Comunque, dopo tutto ottimo lavoro. i miei complimenti! in due giorni grazie a te ho imparato qualcosa di excel. ultima domanda: come hai reso le due immagini "attive" al fine di far partire il quiz?



  • di Vecchio Frac data: 19/11/2012 19:07:47

    Ho solo associato alle due immagini la macro "Quiz" che si trova in ModQuiz, la quale semplicemente apre il form.
    La cosa più interessante invece è come ho reso invisibile il cursore di cella nella pagina dello Sfondo, quella iniziale (se noti, non puoi cliccare su niente tranne le due immagini che lanciano appunto l'userform).
    Ho ottenuto questo risultato impedendo la selezione delle celle e proteggendo senza password il suddetto foglio.
    Una cosa da niente, ma esteticamente carina ;)
     
    Private Sub Workbook_Open()
        Sheets("Sfondo").Activate
        ActiveSheet.EnableSelection = xlNoSelection
        ActiveSheet.Protect Contents:=True, UserInterfaceOnly:=True
        'ActiveSheet Unprotect per sbloccare questo foglio!
    End Sub






  • di dodi data: 19/11/2012 19:19:55

    veramente bravo!



  • di Vecchio Frac data: 19/11/2012 19:24:33

    Mandami una mail in Hotmail, così appena ho terminato ti passo il file di matematica.
    Non so che opzioni vedi nella cartella condivisa con Skydrive ma dovrebbe essereci la possibilità di mandarmi un'email.





  • di dodi data: 19/11/2012 19:31:39

    invia a d_o_d_i@hotmail.it
    su skydrive non trovo alcuna opzione per farlo