Scout Pallavalo



  • Scout Pallavalo di pasqualebarone data: 22/04/2017 16:32:06

    Gentilissimi, nuovo del forum chiedo aiuto nel risolvere un primo quesito. Ho realizzato un programmino in excel dove tengo la rilevazione di un incontro di pallavolo. Diciamo che molte cose in passato le ho realizzate con l'aiuto di altri amici, adesso a fine campionato vorrei implementare quanto fatto fino adesso.
    Ho inserito un foglio "Impostazione", dove si sceglie tra gli atleti la formazione da mettere in campo. Cliccando sulla casella di controllo va si su foglio "scout" ma esce "vero" o "falso", come faccio a mettere il nome del giocatore selezionato?
    Come faccio a poter allegare il file, affinche sia consultato? --- Credo di essere riuscito ad allegare il file
    Ringrazio sempre per l'aiuto.


  • di alfrimpa data: 22/04/2017 18:05:58

    Ciao Pasquale

    Hai allegato un file "complicatissimo" ed anche pieno di macro.

    Allegane un altro più semplice e basilare circoscritto al solo problema che non riesci a risolvere.

    Alfredo

    P.S. Non è mai bello postare lo stesso quesito su più forum.


  • di pasqualebarone data: 22/04/2017 18:15:32

    Grazie Alfrimpa per la tua gentile risposta,
    non è mancanza di fiducia di nel forum, ma solo perchè non sempre si attivano delle risposte o interesse.
    Riguardo al quesito che ho posto è al file allegato è quello che ho, come posso fare per semplificarlo?, forse creare un qualcosa da poter poi addattare e modificare, intendi questo?


  • di alfrimpa data: 22/04/2017 18:22:13

    Ciao Pasquale

    Non è una questione di fiducia ma di rispetto verso chi eventualmente ti risponde che non sa che anche altri potrebbero essere impegnati sullo stesso problema quindi potrebbe anche decidere di non dedicare il suo tempo allo stesso problema.

    Quanto alla tua domanda devi spiegare cosa deve avvenire, indipendentemente dalla struttura del file, quando clicchi su una casella di controllo.

    Allega un file con due fogli sul primo ci metti la casella di controllo ed illustra cosa deve avvenire sul secondo foglio quando si seleziona la casella di controllo.

    Devi capire che un file "complicato" riduce drasticamente le probabilità di risposta perché che eventualmente vuole rispondere prima di pensare alla soluzione deve preoccuparsi di capire il file e non molti lo fanno.

    Alfredo



  • di pasqualebarone data: 22/04/2017 19:54:33

    Alfredo, grazie del consiglio e ho già rimosso uno dei due post.
    come vedi ho seguito il tuo consiglio e abbiamo il foglio 1 e foglio 2. Cliccando sulla casella di controllo nel foglio 1 mi deve riportare nel foglio 2 nella posizione a1 il nome del giocatore.


  • di alfrimpa data: 22/04/2017 20:34:34

    Ciao Pasquale

    Quello che chiedi non puoi farlo con le caselle di controllo (controlli modulo) ma devi utilizzare le caselle di controllo ActiveX.

    I controlli ActiveX, a differenza dei controlli Modulo, sono programmabili con il VBA quindi più versatiili.

    Sostituisci sul foglio1 la casella di controllo (modulo) con una ActiveX ed abbinaci il codice che vedi sotto.

    Sul foglio2 crea un intestazione del tipo: Cognome Nome Ruolo

    Quando cliccherai sulla casella sul foglio2 compariranno: Giocatore1 Danilo P1

    Poi dovrai replicare il meccanismo per tutti gli altri giocatori.

    Alfredo
     
    Private Sub CheckBox1_Click()
    Dim ur As Integer
    ur = Sheets("Foglio2").Cells(Rows.Count, 1).End(xlUp).Row
    If CheckBox1.Value = True Then
    Sheets("Foglio2").Cells(ur + 1, 1).Value = Sheets("Foglio1").Cells(8, "e").Value
    Sheets("Foglio2").Cells(ur + 1, 2).Value = Sheets("Foglio1").Cells(8, "f").Value
    Sheets("Foglio2").Cells(ur + 1, 3).Value = Sheets("Foglio1").Cells(8, "g").Value
    End If
    End Sub
    
    


  • di pasqualebarone data: 22/04/2017 22:19:58

    Ciao Alfredo,
    grazie per la tua collaborazione e per il prezioso contributo. Appena posso provo e seguo i tuoi consigli.


  • di pasqualebarone data: 23/04/2017 10:53:01

    buongiorno Alfredo,
    ho provato il tuo listato è funziona benissimo, grazie. Ho chiaramente cercato di capire il codice da te scritto, ad esempio ho capito che posso solo mettere il cognome, e ho dei dubbi che non riesco a risolvere.
    quindi volevo chiederti:
    a) se due di questi giocatori(L1 o L2) voglio metterli in una posizione diversa come faccio?
    b) se per errore clicco una casella errata come cancello la stessa quindi correggo l'errore?
    Grazie sempre per i consigli e il tuo tempo.
    Ps
    ho notato che quando Voi esperti date delle risposte non c'è mai una descrizione dei codici usati, secondo te non è corretto per noi profani capire quanto scritto?


  • di alfrimpa data: 24/04/2017 14:19:01

    Ciao Pasquale ed eccomi di nuovo a te.

    Premetto che rispondo con riferimento all'ultimo file che hai allegato (quello semplice) sul quale ho cambiato (radicalmente) approccio rispetto alla soluzione data in precedenza.

    In pratica il file funziona così: se sul foglio1 selezioni una delle celle degli intervalli C8:C20 e J8:J20 ti compare una casella di controllo.

    Il codice controlla se sul foglio2 è presente il nominativo che è sulla stessa riga della casella;

    Se c'è la casella si presenta con il segno di spunta; se vuoi cancella re il nominativo in questione basta togliere il segno di spunta.

    Se il nome non c'è la casella si presenta vuota e spuntandola il nome viene aggiunto sul foglio2 accodandolo a quelli eventualmente preesistenti.

    Le due macro che vedi sotto fanno appunto questo.

    La prima è associata allo spostamento del cursore sul foglio1 e la seconda all'evento click della checkbox

    Cit. "ho notato che quando Voi esperti date delle risposte non c'è mai una descrizione dei codici usati, secondo te non è corretto per noi profani capire quanto scritto? "

    Non ho ben capito cosa intendevi con questo.

    Lo scopo dei forum non è quello di fare lezioni di VBA (anche se commentassi il codice - non te la prendere - penso che difficilmente lo capiresti se non hai basi adeguate di VBA) ma di fornire possibilmente soluzioni all'utente che posta il quesito.

    Spetta poi a questo fare il dovuto approfondimento (e la rete è un mare magnum dove pescare informazioni sul VBA) munendosi degli strumenti necessari (testi o quant'altro) per trarre il massimo beneficio dalle risposte avute.

    Chi è "esperto" non è così dalla nascita ma si è dovuto impegnare, studiare e provare come, del resto, in tutte le cose della vita.

    Alfredo
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Dim rng As Range
        If Not Intersect(Target, Range("c8:c20", "j8:j20")) Is Nothing Then
            CheckBox1.Top = Target.Top + Target.Height / 3
            CheckBox1.Left = Target.Left + Target.Width / 3
            With Sheets("Foglio2").Range("B:B")
                Set rng = .Find(What:=Target.Offset(0, 3).Value, _
                                After:=.Cells(.Cells.Count), _
                                LookIn:=xlValues, _
                                LookAt:=xlWhole, _
                                SearchOrder:=xlByRows, _
                                SearchDirection:=xlNext, _
                                MatchCase:=False)
                If Not rng Is Nothing Then
                  CheckBox1.Value = True
                  Else
                  CheckBox1.Value = False
                End If
            End With
        End If
    End Sub
    
    Private Sub CheckBox1_Click()
        Dim ur As Integer
        Dim ro As Integer
        Dim col As Integer
        Dim rng As Range
        ur = Sheets("Foglio2").Cells(Rows.Count, 1).End(xlUp).Row
        ro = Worksheets("Foglio1").Shapes("CheckBox1").TopLeftCell.Row
        col = Worksheets("Foglio1").Shapes("CheckBox1").TopLeftCell.Column
        If CheckBox1.Value = True Then
            Sheets("Foglio2").Cells(ur + 1, 1).Value = Sheets("Foglio1").Cells(ro, col).Offset(0, 2).Value
            Sheets("Foglio2").Cells(ur + 1, 2).Value = Sheets("Foglio1").Cells(ro, col).Offset(0, 3).Value
            Sheets("Foglio2").Cells(ur + 1, 3).Value = Sheets("Foglio1").Cells(ro, col).Offset(0, 4).Value
            Else
            With Sheets("Foglio2").Range("B:B")
                Set rng = .Find(What:=Cells(ro, col).Offset(0, 3).Value, _
                                After:=.Cells(.Cells.Count), _
                                LookIn:=xlValues, _
                                LookAt:=xlWhole, _
                                SearchOrder:=xlByRows, _
                                SearchDirection:=xlNext, _
                                MatchCase:=False)
                If Not rng Is Nothing Then
                    rng.EntireRow.Delete
                End If
            End With
        End If
    End Sub
    


  • di pasqualebarone data: 24/04/2017 15:58:03

    ciao Alfredo,
    grazie infinitamente del tuo tempo, e mi stanno prudendo le mani perchè impaziente nel provare la tua soluzione. La mia citazione era riferita al poter capire quanto scritto. Certamente lo studio e l'approfondimento da alito a imparare e sono d'accordo, molte volte purtroppo il tempo non ti concede dei margini. Volevo soltanto chiederti un consiglio secondo te è bene che continuo il mio progetto su excel o usare eventualmente un'altro metodo di programmazione? Per riassumerti in poche righe il progetto. Lo scopo, io sono un allenatore di pallavolo, è avere in panchina uno strumento che mi consenta in maniera veloce sapere gli errori della mia squadra e degli avversari sapere di ogni singolo atleta il suo rendimento e poter man mano che la partita va avanti la migliore formazione. Poter nello stesso tempo salvare questi dati e confrontarli.
    Grazie ancora


  • di alfrimpa data: 24/04/2017 16:05:49

    Io non sono un programmatore di professione ma solo un appassionato di Excel per cui non conosco altri strumenti/linguaggi di programmazione.

    Ritengo, però, che per le tue esigenze Excel vada più che bene a patto di studiare bene come funziona soprattutto il suo VBA che, come hai visto, ti consente di fare cose inimmaginabili.

    Altro non saprei dire ma a quanto ho capito questo non è che solo l'inizio di un progetto vasto e complesso.

    Se non hai tempo per approfondire tali argomenti penso che l'unica alternativa che tu hai è commissionare tale progetto ad un professionista che (ovviamente retribuito) possa realizzare un "pacchetto" su misura per te.

    Alfredo

    P.S. ma tutte le macro che sono presenti nel file che hai postato inizialmente le hai scritte tu?


  • di pasqualebarone data: 24/04/2017 16:11:20

    no Alfredo non sono tutte mie ma di tanti amici che come te sui forum mi hanno aiutato in questo progetto. Progetto che poi ho divulgato ad altri colleghi.