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

    FROST220684
    Partecipante

      Ciao a tutti ho questo file dove ho creato un userform per l'inserimento di alcuni dati. Ho inserito manualmente già alcuni dati per far vedere il risultato che vorrei, solo che trovo parecchia difficoltà non tanto a far inserire le informazioni dalle textbox sul foglio ma più che altro a far capire che deve creare delle nuove righe ed unire le celle che serve unire. 

      Mi spiego meglio:

      1. Con l'userform inserisco i dati di una camera

      2. l'userform crea tante righe quanti sono gli ospiti inseriti

      3. li racchiude sotto un'unica camera unendo le celle Numero progressivo (colonna A) e Tipologia Camera

      Vi invio file per capire come procedere, spero come sempre in qualche consiglio

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

      alfrimpa
      Partecipante
        33 pts

        Scusa ma a che servono ben 56 textbox nella userform?

        Altra cosa: non usare mai celle unite col VBA causano più problemi che vantaggi; in colonna A più che unire le celle ripeti il codice numerico.

        #46107 Score: 0 | Risposta

        FROST220684
        Partecipante

          per ogni ospite devono esserci tutti quei dati ed in ogni camera ci possono essere fino a 7 ospiti per questo ci sono tutti queste textbox

          #46117 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            alfrimpa ha scritto:

            a che servono ben 56 textbox nella userform?

            FROST220684 ha scritto:

            devono esserci tutti quei dati

            Alfri intende dire che ti stai vincolando a una struttura troppo rigida o macchinosa e che e' solo uno spreco di risorse. A te serve simulare il foglio elettronico, ma forse un normale controllo Listbox (io preferirei un Listview) potrebbe bastare allo scopo (in VB6 c'era un controllo Flexgrid che era ben architettato e serviva proprio per questo utilizzo).

            Nel merito non ho capito perche' hai difficolta' a creare delle nuove righe. Quando cerchi di inserire una nuova riga di dati devi "solo" raggiungere la fine della tabella o dell'intervallo esistente e operare da costi'... se poi hai celle unite, confermo che questa non e' una scelta molto ben vista dai VBAisti   

            #46119 Score: 0 | Risposta

            alfrimpa
            Partecipante
              33 pts

              E che problema c'è avere nella userform 7/8 textbox inserendo un nome per volta ripetendo il numero e la tipologia (che mi pare siano le uniche colonne con celle unite) per enne volte?

              #46120 Score: 0 | Risposta

              FROST220684
              Partecipante

                capisco quello che mi diceva alfrimpa sinceramente non so neanche io bene cosa voglio fare. Spiego meglio:

                1. Nel mio lavoro facciamo degli eventi con molte persone

                2. Ci arrivano una serie di dati che sono necessari per la registrazione e spesso ci vengono dati alla meno peggio dagli organizzatori

                3. io vorrei creare un file che obbligasse l'organizzatore ad inserirmi i dati in un certo modo (per quello l'userform)

                4. In modo che io abbia tutto quello che mi serve per poi fare altre operazioni e conteggi

                5.Posso dire che i dati necessari per ogni ospite sono: Nome, Cognome, Data di nascita, Luogo di nascita, Comune di Residenza

                6. Le altre colonne servono a fare altri calcoli (come elenco delle tipologie camere, elenco arrivi di un determinato giorno, etc etc)

                7. L'idea di base è da un foglio completo andare ad estrapolare una serie di dati che mi servono (tipo quante persone adulte e quanti bambini), (arrivi del giorno), etc

                lo so non rendo la vita facile ma è cosi rigido perchè alla fine lo fanno gli altri non lo faccio io ed è sempre sbagliato e c'è sempre una gran lavoro per rimetterlo apposto

                #46148 Score: 0 | Risposta

                alexps81
                Moderatore
                  58 pts

                  Prova questo esempio.

                  Sicuramente da rivedere alcune situazioni che possono verificarsi e poi lavorare con le celle unite non è il massimo. Tra l'altro non è chiaro come deve essere gestito il discorso della Tipologia della camera. Se metto "M" solo al primo cliente ma a gli altri clienti sempre della stessa camera metto un'altra lettere, verrà presa in considerazione sempre la prima e cioè la "M". Comunque poi mi spieghi meglio domani.

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

                  FROST220684
                  Partecipante

                    Ciao Alex Buongiorno,

                    Come sempre ti ringrazio per l'aiuto e idee. Allora fondamentalmente quello che hai fatto è tutto corretto ti rimando il file con gli inserimenti che ho fatto ed è il risultato che volevo.

                    La tua osservazione è giusta, ma la camera deve essere uguale. Il form serve ad inserire un'unica camera alla volta. Infatti a questo punto stavo pensando, per obbligare l'inserimento corretto ad un elenco a discesa unico e non tutte le textbox per ogni ospite. Volevo modificare io ma non vorrei fare danni sul codice. Ti inserisco sul file le varie tipologie camere su un foglio.

                    Resta poi da implementare le altre colonne:

                    Note: Servirebbe un campo note per ogni ospite

                    Colonne (Adulto, 0-3 , 4-12 , 13-17 ): Questo forse un po più complicato dovrebbe fare i calcoli con la data di nascita.

                     

                    Non è una cosa urgente, ci volevo lavorare un po alla volta anche perchè poi avrei voluto cercare di creare delle macro che creano altri fogli con alcuni dati del foglio originale (Ad es. Quanti adulti ho la notte del 25/04, che può essere diverso dal 26/04)

                    Grazie dell'aiuto, come detto in precedenza non ho una grossa idea finale di questo file pero è molto utile a semplificare un lavoro che adesso faccio a mano. 

                    Immagina tutte quelle righe scritte con un criterio che per quello che uso io non va bene, e poi mi devo mettere a copiare ed incollare colonne, modificare dati, creare fogli etc

                     

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

                    alexps81
                    Moderatore
                      58 pts

                      Ma quindi non hai bisogno di tante TextBox Tipologia Camera per ogni cliente...giusto? Ne basta una sola riferita a tutti i clienti che inserisci...tanto tutti loro faranno parte di quella tipologia. Stessa cosa per Check-In e Check-Out...o può essere che in questo caso qualche cliente arriva/parte in un giorno diverso rispetto agli altri?

                      #46160 Score: 0 | Risposta

                      FROST220684
                      Partecipante

                        Se vuoi ti prendo come collega preferito ahahhahahah, domande pertinenti   

                        Allora si per la tipologia camera si può optare per un menu a discesa da selezionare una sola volta per tutti gli ospiti (non c'è bisogno di quelle textbox)

                        Per il Check-in invece no potrebbero arrivare in tempi diversi

                        #46166 Score: 0 | Risposta

                        alfrimpa
                        Partecipante
                          33 pts

                          alexps81 ha scritto:

                          Ma quindi non hai bisogno di tante TextBox Tipologia Camera per ogni cliente...giusto? Ne basta una sola riferita a tutti i clienti che inserisci...tanto tutti loro faranno parte di quella tipologia. Stessa cosa per Check-In e Check-Out...o può essere che in questo caso qualche cliente arriva/parte in un giorno diverso rispetto agli altri?

                          E' quello che cercavo di dire anch'io; evidentemente non mi sarò spiegato bene.

                          Ringrazio Vecchio Frac per avermi fatto da interprete   

                          #46171 Score: 0 | Risposta

                          vecchio frac
                          Senior Moderator
                            272 pts

                            alfrimpa ha scritto:

                            Ringrazio Vecchio Frac per avermi fatto da interprete   

                            Capire i nostri clienti / utenti e' sempre la parte piu' difficile. Nel mio ufficio mi fanno sempre delle richieste strane, che poi grattando meglio con l'unghia, spesso viene fuori che intendono tutt'altro.

                            #46176 Score: 0 | Risposta

                            FROST220684
                            Partecipante

                              vecchio frac ha scritto:

                              grattando meglio con l'unghia

                              siamo come i gratta e vinci    pensi di vincere ma poi gratti e non vinci nulla  

                              #46190 Score: 0 | Risposta

                              alexps81
                              Moderatore
                                58 pts

                                Allora...proviamo con questo upgrade.

                                Tieni presente che io con le date   ....

                                Ti dico subito che l'ho ideato secondo la struttura del file che hai allegato, quindi qualsiasi modifica alla foglio implica modiche significative al codice. 

                                La combobox preleva i dati direttamente dal Range(J1:J10) del Foglio. Non ho capito se lo hai inserito lì perché volevi indicarmi le varie tipologia oppure ti serve avere uno schema riepilogativo. Insomma se lo cancelli non avrai più i valori in combobox. A quel punto dobbiamo modificare il codice.

                                Per i vari calcoli dell'età ho preferito utilizzare le Formule direttamente sul Foglio perché ho pensato che magari se volessi effettuare delle modifiche al volo sulle date almeno verranno ricalcolate. Il problema è che se cancella le Formule nelle celle, perdi il calcolo.

                                Aggiungo che se elimini righe, col tempo non ti ritrovi più celle con Formule. Ora io le ho trascritte fino al rigo 400. Proviamo a capire prima il risultato finale poi vediamo come arrivarci. Tutt'al più potrebbero arrivare anche suggerimenti dal forum per affrontare i vari problemi in modi alternativi a questo mio proposto.

                                Nel Foglio è presente anche un campo PRANZO EXTRA, ma non ho capito se lo utilizzi dopo la userform o durante (mi auguro di no perché vuol dire modificarla ancora   ).

                                Comunque inizia a fare dei test e vedi il comportamento. Immagino che vorrai delle implementazioni anche se non so ancora quali.

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

                                FROST220684
                                Partecipante

                                  Ciao Alex,

                                  alexps81 ha scritto:

                                  Ti dico subito che l'ho ideato secondo la struttura del file che hai allegato, quindi qualsiasi modifica alla foglio implica modiche significative al codice. 

                                  Tenterò di farti fare meno modifiche possibili

                                  alexps81 ha scritto:

                                  La combobox preleva i dati direttamente dal Range(J1:J10) del Foglio. Non ho capito se lo hai inserito lì perché volevi indicarmi le varie tipologia oppure ti serve avere uno schema riepilogativo. Insomma se lo cancelli non avrai più i valori in combobox. A quel punto dobbiamo modificare il codice.

                                  Era per darti un elenco ma va bene anche come Riepilogativo. Può stare li tranquillamente probabilmente dovrò aggiungere qualche tipologia ma per adesso come dici vediamo se riusciamo a raggiungere il risultato.

                                  alexps81 ha scritto:

                                  Per i vari calcoli dell'età ho preferito utilizzare le Formule direttamente sul Foglio perché ho pensato che magari se volessi effettuare delle modifiche al volo sulle date almeno verranno ricalcolate. Il problema è che se cancella le Formule nelle celle, perdi il calcolo.

                                  va bene, potremmo ideare un database formule per salvarle ed averle nel caso succede qualcosa.

                                  alexps81 ha scritto:

                                  Aggiungo che se elimini righe, col tempo non ti ritrovi più celle con Formule. Ora io le ho trascritte fino al rigo 400. Proviamo a capire prima il risultato finale poi vediamo come arrivarci. Tutt'al più potrebbero arrivare anche suggerimenti dal forum per affrontare i vari problemi in modi alternativi a questo mio proposto.

                                  facciamo un passo alla volta 🙂

                                  alexps81 ha scritto:

                                  Nel Foglio è presente anche un campo PRANZO EXTRA, ma non ho capito se lo utilizzi dopo la userform o durante (mi auguro di no perché vuol dire modificarla ancora   ).

                                  posso gestirlo anche manualmente!!!

                                  alexps81 ha scritto:

                                  Comunque inizia a fare dei test e vedi il comportamento. Immagino che vorrai delle implementazioni anche se non so ancora quali.

                                  Sarebbero davvero tante da fare, vediamo cosa si riesce a fare, ripeto nessuna fretta.

                                   

                                  Gli ho dato un occhiata veloce e modificato alcune cose, ma sembra funzionare me lo guardo bene e ti aggiorno. Grazie come sempre per l'aiuto e per la pazienza.

                                   

                                  #46199 Score: 0 | Risposta

                                  FROST220684
                                  Partecipante

                                    Ciao Alex e buona domenica a tutti,

                                    A me sembra funzionare bene, ho aggiunto una macro che sistema nuovamente il foglio qualora volessi ripartire da zero ed ho sostituito le X con il numero 1.

                                    Ad ogni modo continuerò a fare prove per verificare eventuali problemi. Ora mi chiedo e passiamo alle migliorie:

                                    1. In un altro file che tu hai visto c'è una parte di codice che trasforma in automatico le date delle textbox (ti faccio un esempio se io scrivo 2206 lui la trasforma in 22/06/2024) sarebbe secondo te possibile implementarlo sulle textbox (checkin, checkout, data di nascita), il codice dovrebbe essere questo, chiaramente ci sono cose che non servono e cose riferite a quel file: 

                                    Public Sub form_tbdate_afterupdate(frm As Object, ctl As Object)
                                    Dim l As Integer
                                    Dim s As String
                                    Dim tb1 As Object
                                    Dim tb2 As Object
                                    
                                        set_info frm, ""
                                        
                                        'memorizzo il campo data in esame
                                        s = ctl
                                        
                                        'se è una data valida lo formatto in modo coerente gg/mm/aaaa
                                        If Not IsDate(s) Then
                                            l = Len(s)
                                            
                                            Select Case l
                                            Case 0
                                                ctl.Tag = 0
                                                Exit Sub
                                            Case 4
                                                s = Join(Array(Left$(s, 2), Right$(s, 2), Year(Now)), "/")
                                            Case 6, 8
                                                s = Join(Array(Left$(s, 2), Mid$(s, 3, 2), Right$(s, l - 4)), "/")
                                            End Select
                                            If Not IsDate(s) Then
                                                set_info frm, "Data inserita non valida."
                                                ctl.Tag = 0
                                                Exit Sub
                                            End If
                                        End If
                                        
                                        ctl = Format(s, "dd/mm/yyyy")
                                    
                                        'ne controllo il contenuto per la validità nel range di date scelto
                                        If CDate(s) < CDate("31/12/2022") Then
                                            set_info frm, "Data non consentita. Inserire una data superiore al 31/12/2022."
                                            ctl.Tag = 0
                                            Exit Sub
                                        ElseIf CDate(s) > CDate("31/12/2199") Then
                                            set_info frm, "Data non consentita. Inserire una data inferiore al 31/12/2199."
                                            ctl.Tag = 0
                                            Exit Sub
                                        End If
                                        
                                        'nei form con due date, la seconda non può essere inferiore alla prima
                                        If frm.Caption <> "TRANSFER" Then
                                            Set tb1 = frm.TextBox1
                                            Set tb2 = frm.TextBox2
                                        Else
                                            Set tb1 = frm.TextBoxA
                                            Set tb2 = frm.TextBoxB
                                        End If
                                    
                                        If IsDate(tb1) And IsDate(tb2) Then
                                            If CDate(tb2) < CDate(tb1) Then
                                                set_info frm, "La prima data non può essere superiore alla seconda. Inserire una data diversa in uno dei due campi."
                                                tb1.Tag = 0
                                                Exit Sub
                                            End If
                                        End If
                                        
                                        ctl.Tag = 1
                                    End Sub

                                    Altra cosa che servirebbe è una colonna vuota che viene creata con le righe vuote ed unite in base agli ospiti tipo la colonna Tipologia Camera, in cui io inserirò solo successivamente il numero della camera. Questo non deve andare nell'userform come textbox, ma deve essere l'userform quando crea la camera a lasciarmi questo spazio di inserimento successivo.

                                    Ti allego il tuo file con le mie modifiche

                                    Grazie milleeeeeeeeeeee

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

                                    alexps81
                                    Moderatore
                                      58 pts

                                      Il primo punto l'ho fatto ma il secondo non so se ho capito bene.

                                      Forse, se ho inteso la tua richiesta, vorresti che ci sia un colonna in più alla fine della tabella e che dal momento in cui si genera la camera (ipotizziamo che ci sono 4 ospiti) allora le 4 righe di questa nuova colonna che intersecano questi ospiti, devono unirsi come avviene per la colonna Tipologia?

                                      Poi a cosa serve la Macro nel Modulo4?

                                      #46214 Score: 0 | Risposta

                                      FROST220684
                                      Partecipante

                                        Esatto. Sarebbe meglio vicino alla colonna tipologia che alla fine se non è un grosso problema.

                                         

                                        #46216 Score: 0 | Risposta

                                        alexps81
                                        Moderatore
                                          58 pts

                                          Prova a vedere così se va bene...

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

                                          alexps81
                                          Moderatore
                                            58 pts

                                            Mi sono accorto di un piccolo errore per quanto riguarda la divisione Adulti/Ragazzi/Bambini.

                                            La funzione che avevo creato per capire il range di età, va a calcolare la differenza degli anni che passano tra l'anno della data attuale e l'anno di nascita. Quindi chi è nato nel 2010 dovrebbe avere 14 anni. Dico dovrebbe perché se è nato prima del 21 aprile (data odierna) allora avrà 14 compiuti, altrimenti ne avrà ancora 13.

                                            Ora mi chiedo se è un problema questo tipo di calcolo oppure bisogna essere più precisi.

                                            C'è da dire che se un cliente è nato a dicembre, e tu lo registri a giugno, mancheranno ancora 6 mesi prima di avere l'età data dalla funzione.

                                            #46222 Score: 0 | Risposta

                                            FROST220684
                                            Partecipante

                                              In realtà questo discorso va fatto direttamente sulle date di check-in e check-out, quindi la cosa migliore sarebbe prendere in considerazione la data di check-in. Per una concretezza del dato l'età corretta dovrebbe essere stabilità sull'arrivo in hotel(check-in)

                                              #46223 Score: 0 | Risposta

                                              alexps81
                                              Moderatore
                                                58 pts

                                                Mmmm....cioè? Fammi un esempio pratico.

                                                #46225 Score: 0 | Risposta

                                                alexps81
                                                Moderatore
                                                  58 pts

                                                  Forse ho capito...ti giro una nuova versione e dimmi se va bene così

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

                                                  FROST220684
                                                  Partecipante

                                                    Ciao Alex, 

                                                    Scusa ma oggi sono stato un po assente. Allora bene per quanto riguarda la colonna vuota.

                                                    Ok anche per le date, se riesci sarebbe perfetto che la textbox check-out dia errore se la data non è successiva a quella del check-in.

                                                    Per quanto riguarda l'età no, ti spiego meglio cosi ti faccio un esempio pratico, prendiamo in considerazione la data di check-out che forse è meglio (ad ogni modo anche con il check-in il concetto è errato):

                                                    1. Check-out 25/04/2024. Nato il 26/04/2011. (Questa persona alla data di uscita dall'hotel avrà sempre 12 anni quindi farà parte del segmento bambini).

                                                    2. Check-out 25/04/2024. Nato il 24/04/2011. (Questa persona alla data di uscita dall'hotel avrà 13 anni quindi farà parte del segmento ragazzi).

                                                    Questo concetto lo puoi applicare a tutte le fasce. Ti rimando il file allegato in quanto da alcune prove non so perchè se metto il 2021 non prende nessuna casella. Ti ho fatto alcuni esempi all'interno del file colorandoti di verde dove dovrebbe essere collocato, di rosso dove c'è l'errore

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

                                                    FROST220684
                                                    Partecipante

                                                      alexps81 ha scritto:

                                                      Poi a cosa serve la Macro nel Modulo4?

                                                      scusami non avevo letto questa domanda, la macro serve a riaggiustare le colonne allo stato normale fino alla riga 400. Riportando il foglio allo stato iniziale senza colonne con righe unite etc. Mi serve quando devo fare un altro evento per resettare tutto insomma. In realtà adesso che hai cambiato un po di cose va aggiornato ma l'ho fatta con una semplice registrazione di macro    in effetti è orribile.

                                                    Login Registrati
                                                    Stai vedendo 25 articoli - dal 1 a 25 (di 31 totali)
                                                    Rispondi a: Inserimento dati ospiti
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni: