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

    marco_budin
    Partecipante
      2 pts

      buongiorno a tutti,

      sto creando un foglio per eseguire dei preventivi. ho creato un database, dove ci sono tutte le prestazioni (Foglio procedure) e un altro foglio principale dove io compilo i vari campi (preventivo acuto).

      In alto al foglio principale (preventico acuto) cella C10 scrivo parte del testo, e vorrei che in automatico apparissero tutte le prestazioni che contengono quella dicitura che sto inserendo in C10, sotto forma di tendina, nella cella E10. O in una tendina che credo. Così appena arrivo alla dicitura che mi interessa la seleziono dalla tendina. Le nomenclature che appaiono nella tendina sono quelle della colonna F nel foglio Procedure.

      Mi piacerebbe che appaiono live... cioe che non devo scrivere tutto nella cella C10..... ma che basta delle parole... e lui mi dai i risultati nella tendina, da scegliere la decisione opportuna. (C10 deve essere un cerca... live)...

      spero che qualcuno saprà darmi una soluzione al mio problema. ma sono sicuro di si, visto che mi avete già aiutato diverse volte!

      vi ringrazio anticipatamente,

      saluti e a presto

      Marco

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

      albatros54
      Moderatore
        89 pts

        marco_budin wrote:dove ci sono tutte le prestazioni (Foglio procedure) e un altro

        nel tuo file non esiste questo foglio , forse ti riferisci al foglio"30.08.2018" quale colonna devi visualizzare nella combobox?

         

        Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
        Sempre il mare, uomo libero, amerai!
        ( Charles Baudelaire )
        #6636 Score: 0 | Risposta

        marco_budin
        Partecipante
          2 pts

          Ciao Albatros 54,

          grazie mille della tua risposta. Si scusami intendevo 30.08.2018, la cosa che dovrà apparire sarà la colonna F.

          ti ringrazio in anticipo, e ti auguro una buona serata.

          saluti

          Marco

          #6637 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            Una convalida dinamica doppia a cascata?

            Da qualche parte ho un leggero tutorial... se sopravvivo alla giornata dovrei cercarlo 🙂

            #6677 Score: 0 | Risposta

            albatros54
            Moderatore
              89 pts

              Ciao

              io l'ho pensata cosi, nel foglio"PreventivoAcuto" ho inserito una combobox1,dove ci sono tutti  le stringhe della colonna"F" del foglio("30082018" l'ho rinominato), che sono troppo lunghe, quando tu attivi il foglio"PreventiviAcuti" VBA esegue il codice associato a questo evento, e li inserisce in ordine alfabetico.Tu, invece di inserire la stringa nella cella"c10", comincia ad inserire la stringa nella combobox1, ti comparira mano mano che inserisci i valori le varie stringhe, se poi tu apri la combobox1 ti troverai immediatamente i valori che corrisèpondono ai caratteri che hai inserito, a questo punto fai click sulla stringa che ti interessa, e te la trovi nella cell "c10", se ho capito.

              ti allego codice e file.

              Option Explicit
              Private Sub ComboBox1_Click()
                  Sheets("PreventivoAcuto").Range("c10") = ComboBox1.Text
              End Sub
              
              Private Sub Worksheet_Activate()
                  Dim i As Long, j As Long, v As Variant
                  Dim tmp As Variant
                  v = Sheets("30082018").Range("F4:F899")
                  For i = 1 To UBound(v, 1) - 1
                      For j = i + 1 To UBound(v, 1)
                          If v(i, 1) > v(j, 1) Then
                              tmp = v(i, 1)
                              v(i, 1) = v(j, 1)
                              v(j, 1) = tmp
                          End If
                      Next
                  Next
                  ComboBox1.List = v
              End Sub

               

               

              Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
              Sempre il mare, uomo libero, amerai!
              ( Charles Baudelaire )
              Allegati:
              You must be logged in to view attached files.
              #6698 Score: 0 | Risposta

              vecchio frac
              Senior Moderator
                272 pts

                Carino il sorting, io avrei implementato la copia del range in altra posizione, effettuato il sort in place e poi avrei copiato il range ordinato nella combo. Ho anche provato in effetti e funziona velocemente (naturalmente è Excel dipendente, mentre la soluzione di albatros è perfettamente VBA like e mi piace), con l'inconveniente che bisogna disattivare e poi riattivare gli eventi per impedire un loop spaziotemporale e la lacerazione del continuum cosmico 🙂

                 

                Private Sub Worksheet_Activate()
                Dim i As Long, j As Long, v As Variant
                Dim tmp As Variant
                    Application.EnableEvents = False
                    With Sheets("30082018")
                        .Range("F4:F899").Copy
                        .Range("AA1").PasteSpecial xlPasteValues
                        .Range("AA1").CurrentRegion.Sort key1:=.Range("AA1"), Header:=xlNo
                        v = .Range("AA1").CurrentRegion
                    End With
                    ComboBox1.List = v
                    Application.EnableEvents = True
                End Sub
                #6703 Score: 0 | Risposta

                marco_budin
                Partecipante
                  2 pts

                  ciao Ragazzi!

                  scusate se rispondo solo adesso, ma ero assente questi giorni! ho provato i due codici che mi avete dato! e chiaramente, senza che avessi dubbi funziona tutto alla perfezione come volevo!

                  come sempre vi ringrazio tanto per il vostro prezioso aiuto.

                  vi auguro una buona giornata, e alla prossima

                  Marco

                  #6709 Score: 0 | Risposta

                  albatros54
                  Moderatore
                    89 pts

                    Cosi tanto per  confrontare le velocita di esecuzione, incolla la routine che ti posto nel modulo del foglio"30082018" e la esegui, dovrebbe essere piu veloce 😀 delle altre due

                    Sub confrontoVelocita()
                        Dim j As Long
                        Dim sn As Variant
                        Dim StartTime As Date, EndTime As Date
                        StartTime = Timer
                        sn = Sheets("30082018").Range("F4:F899")
                        With CreateObject("System.Collections.ArrayList")
                            For j = 1 To UBound(sn)
                                If sn(j, 1) <> "" And Not .contains(sn(j, 1)) Then .Add sn(j, 1)
                            Next
                            .Sort
                            ComboBox1.List = Application.Transpose(.toarray())
                        End With
                        EndTime = Timer
                        MsgBox Format(EndTime - StartTime, "0.0")
                    End Sub

                     

                    Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
                    Sempre il mare, uomo libero, amerai!
                    ( Charles Baudelaire )
                    #6710 Score: 0 | Risposta

                    vecchio frac
                    Senior Moderator
                      272 pts

                      L'oggetto ArrayList lo incontro per la prima volta... e non riesco a referenziarlo direttamente  🙄 

                      #6711 Score: 0 | Risposta

                      albatros54
                      Moderatore
                        89 pts

                        Io ciò perso il sonno per poterlo capire 😀

                         

                        #6712 Score: 0 | Risposta

                        vecchio frac
                        Senior Moderator
                          272 pts

                          Bè è ben documentato però forse non ho il Net Framework corretto.

                          In realtà referenziandolo così

                          ThisWorkbook.VBProject.References.AddFromguid "{BED7F4EA-1A96-11D2-8F08-00A0C9A6186D}", 2, 4

                          lo vedo anch'io 😉

                        Login Registrati
                        Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)
                        Rispondi a: tendina dinamica
                        Gli allegati sono permessi solo ad utenti REGISTRATI
                        Le tue informazioni: