Excel e gli applicativi Microsoft Office Restituzione di più valori da un foglio all'altro vincolato ad una ricerca

Login Registrati
Stai vedendo 25 articoli - dal 51 a 75 (di 121 totali)
  • Autore
    Articoli
  • #42056 Score: 0 | Risposta

    alexps81
    Moderatore
      58 pts

      Mi sembra da capire da fonti sul web che per le versioni Mac non è disponibile Scripting Runtime.

      Ma (mi rivolgo a @Vecchio_Frac) è necessario utilizzare "Scripting.Dictionary"? (che tra l'altro è la prima volta che ne sento parlare    )

      Vedendo il suo utilizzo sembra che abbia un funzionamento analogo agli array dinamici (neanche a farlo apposta è ciò che mi stavi facendo vedere ieri su un altro lavoro), anche se mi sembra di capire che Scripting.Dictionary crea dei record indicizzati...non so se gli array possono fare la stessa cosa.

      #42057 Score: 0 | Risposta

      Dadava
      Partecipante

        LucaSR ha scritto:

        devi andare su Strumenti -> Riferimenti -> Scripting Runtime.

         

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

        LucaSR
        Partecipante
          15 pts

          esatto sei nel posto giusto, non trovi la libreria Microsoft Scripting Runtime??

          alexps81 ha scritto:

          Mi sembra da capire da fonti sul web che per le versioni Mac non è disponibile Scripting Runtime.

          molto probabilmente non esiste per MAC    peccato i Dictionary sono degli oggetti utili e potenti   

          #42060 Score: 0 | Risposta

          Dadava
          Partecipante

            ottimo.....  

             

            secondo voi sarebbe possibile alllora questo, con solo funzioni?

             

             

            Dadava ha scritto:

            ma sarebbe più semplice, magari passando da funzioni (che probabilmente sono più compatibili, non sò, con la versione per mac) arrivare a un risultato come lo screen che ho allegato?

            Nel quadro rettangolo rosso viene richiamato il dipendente tramite un menu a tendina, (dove vedi in vrde Dip 1) vengono compilati i campi solo di quel dipendente, poi eventualmente faccio due macro per la stampa sia del rett rosso che di quello verde... Stampa nel senso di generare un pdf... che dici? 

             

             

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

            LucaSR
            Partecipante
              15 pts

              il VBA serve ad automatizzare qualsiasi cosa si voglia fare e superare i limite che hanno le funzioni di Excel.

              Ogni cosa ha il proprio scopo e grado di difficoltà/comprensione, per dire io con le funzioni "zoppico" invece col VBA ci vado in bici. Altri più bravi lo rivoltano come un calzino    detto questo capisci che forse non si può fare solo con le funzioni.

              Vediamo i ragazzi che soluzione ti trovano, purtroppo io sono senza Office al momento   

              #42063 Score: 0 | Risposta

              Dadava
              Partecipante

                ci credo.... non so che dire... in altri file ho fatto delle macro e funzionano... tipo questa....

                la posto magari ti accorgi di qualcosa... nn si sa mai

                grazie comunque per il tempo dedicato

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

                vecchio frac
                Senior Moderator
                  272 pts

                  Dadava ha scritto:

                  sarebbe più semplice, magari passando da funzioni

                  Se sia più semplice non ne ho idea, io con le formule sono negato   

                  #42066 Score: 0 | Risposta

                  LucaSR
                  Partecipante
                    15 pts

                    Intanto tutte quelle Select sono "terribili" da vedere ed in più rallentano in modo spropositato la velocità di esecuzione della macro.

                    Elimina ".select" ed anche "Selection" ed unisci il codice tipo: 

                    Range("P36:W36").copy

                    riduci il listato e viaggi liscio    consiglio: quando si applicano modifiche di qualsiasi tipo e non si è sicuri, fai una copia del file e lavori su quella. Quando hai trovato la soluzione, questo file diventa il principale ed elimini la provenienza, e così via!!

                    OT - Boss guarda la posta   

                    #42067 Score: 0 | Risposta

                    vecchio frac
                    Senior Moderator
                      272 pts

                      alexps81 ha scritto:

                      è necessario utilizzare "Scripting.Dictionary"?

                      Puoi utilizzare, al posto di un dizionario, una Collection che funziona in modo simile ma è più versatile (e non c'è bisogno di referenziare una libreria, è builtin). Oppure sì, un array. Dipende dal gusto personale.

                      #42068 Score: 0 | Risposta

                      vecchio frac
                      Senior Moderator
                        272 pts

                        LucaSR ha scritto:

                        devi andare su Strumenti -> Riferimenti -> Scripting Runtime.

                        Non servirebbe perchè io creo l'oggetto senza installare la libreria... ma se manca la libreria non c'è niente da fare   

                        #42070 Score: 0 | Risposta

                        vecchio frac
                        Senior Moderator
                          272 pts

                          Dadava ha scritto:

                          secondo voi sarebbe possibile alllora questo, con solo funzioni?

                          Secondo me ci si sbatte la testa pazzescamente.
                          Il mio codice è già pronto e funziona, basta cambiare i dizionari con le collezioni (bè insomma non è così banale ma si può fare).
                          Se mi date fiducia e un po' di tempo lo faccio oggi.

                          #42071 Score: 0 | Risposta

                          Dadava
                          Partecipante

                            vecchio frac ha scritto:

                            Se mi date fiducia e un po' di tempo lo faccio oggi.

                            Hai voglia a fiducia..... citando Bridget Jons..".. mi avevi convito al ciao"

                            Puoi fare anche partendo dall ultimo screen che ho messo con un solo dipendente per volte credo sia più semplice, oppure no...  carta blanca

                            #42072 Score: 1 | Risposta

                            vecchio frac
                            Senior Moderator
                              272 pts

                              Ci ho messo meno di quello che temevo e comunque non ho letto l'ultimo post di Dadava.

                              Ne consegue che adesso provi, per cortesia, la versione che allego e che è la stessa ma utilizza due Collection al posto di due Dictionary. La logica che c'è dietro rimane inalterata.

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

                              vecchio frac
                              Senior Moderator
                                272 pts

                                Dadava ha scritto:

                                con un solo dipendente per volta, credo sia più semplice

                                Secondo me è più semplice come l'ho pensata io: il codice raccoglie i dati tutti insieme e poi li processa giornata per giornata, dipendente per dipendente. Ma in memoria ci sono già, quindi tanto vale spalmarli tutti insieme. Se poi desideri anche la vista per singolo, penso che non rimanga altro che provare.

                                Sulle stampe invece non ho ancora messo il naso ma esiste Activesheet.ExportAsFixedFormat che salva uno o più fogli in formato pdf.

                                #42075 Score: 0 | Risposta

                                Dadava
                                Partecipante

                                  F U N Z I O N A !!

                                  Che ti devo dire.... vo a svegliare quegli di 365 e gli dico fatelo più difficile che VF un si diverte più...   

                                  vecchio frac ha scritto:

                                  Se poi desideri anche la vista per singolo, penso che non rimanga altro che provare.

                                  sarebbe il massimo si  

                                   

                                  grazie mille ancora, davvero

                                   

                                   

                                  #42076 Score: 0 | Risposta

                                  vecchio frac
                                  Senior Moderator
                                    272 pts

                                    Dadava ha scritto:

                                    fatelo più difficile che VF un si diverte più

                                      

                                    Dadava ha scritto:

                                    sarebbe il massimo si

                                    lo lasciamo fare ad Alex o Luca quando avrà il pc funzionante?   

                                    #42077 Score: 0 | Risposta

                                    Dadava
                                    Partecipante

                                      vecchio frac ha scritto:

                                      lo lasciamo fare ad Alex o Luca quando avrà il pc funzionante?   

                                      Ma io non gli darei compiti da gregari....  

                                      #42078 Score: 0 | Risposta

                                      Dadava
                                      Partecipante

                                        Ho aggiornato il mio file con quello che m hai mandato te, dopo qualche errore mio sono riuscito a mettere tutto come volevo...

                                        RAGAZZI GRAZIE MILLE A TUTTI!!!!!! 

                                        in particolare ovviamente a VF    

                                        #42081 Score: 0 | Risposta

                                        vecchio frac
                                        Senior Moderator
                                          272 pts

                                          E' stato un bel lavoro di squadra. La pulce nell'orecchio me l'hanno messa Alex e Luca che ringrazio. Peccato che il Mac abbia questo limite rispetto alla versione Windows, in ogni caso vedrò di ricordarmelo...

                                          Per completare il lavoro però vorrei essere sicuro dello scenario, il codice che ho inviato dipende dal formato del foglio di riepilogo (anche se ho sganciato i range effettivi perchè la ricerca avviene sul nome dipendente, purtuttavia lo schema del riepilogo deve restare quello: cella giorno, celle orari, cella negozio).

                                          L'immagine che hai inviato non corrisponde ovviamente al file usato per il test. Puoi inviare il file di lavoro, senza dati riservati, così lavoriamo sul file finale? O perlomeno il foglio di cui stiamo parlando? tanto il codice dovrà girare solo relativamente a tale foglio.

                                          #42092 Score: 0 | Risposta

                                          Luca73
                                          Partecipante
                                            58 pts

                                            Ciao 

                                            Permettetemi di intervenire anche io in questa discussione.

                                            Ho provato a stilare anche io una macro che facesse il lavoro.

                                            Parte da un concetto completamente diverso....direi molto più basic di quella di VF.

                                            Vi chiedo però di provarla e testarla.

                                            Sub CercaeCompila()
                                            Dim MioDip
                                            Dim MiaCellaDip As Range
                                            Dim MioRisultato As Range
                                            Dim Giorno As Range
                                            Dim Negozio As Range
                                            Dim AddressIni As String
                                            Dim Riga
                                            
                                            Application.ScreenUpdating = False
                                            Call pulisci_specchietto
                                            
                                            For Each MioDip In Worksheets("INFO").Range("F1:F9")
                                                Set MiaCellaDip = Worksheets("GEN.RAGAZZE (3)").Cells.Find(MioDip.Value, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows)
                                                    MiaCellaDip.Worksheet.Activate
                                                    MiaCellaDip.Select
                                               
                                                    With Worksheets("GEN.RAGAZZE (4)").Range("D1:O52")
                                                    Set MioRisultato = .Find(Trim(MiaCellaDip.Value), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows)
                                                    If Not MioRisultato Is Nothing Then
                                                        AddressIni = MioRisultato.Address
                                                        Do
                                                            MioRisultato.Worksheet.Activate
                                                            MioRisultato.Select
                                                            For Each Giorno In MiaCellaDip.Offset(1, -2).Resize(13, 2)
                                                                If Giorno = MioRisultato.EntireRow.Cells(1, 1).Offset(-(MioRisultato.Row - 4) Mod 7, 0) Then
                                                                    If Giorno.Offset(0, 1) = "" Then
                                                                        Set Negozio = Giorno.Offset(0, 1)
                                                                    Else
                                                                        Set Negozio = Giorno.Offset(0, 1)
                                                                        Set Negozio = Negozio.Offset(1, 0)
                                                                    End If
                                                                    MiaCellaDip.Worksheet.Activate
                                                                    Negozio.Select
                                                                    Negozio = MioRisultato.EntireColumn.Cells(1, 1).Offset(0, -2)
                                                                    Negozio.Offset(0, 1) = FormatDateTime(MioRisultato.Offset(0, -2).Value, vbShortTime)
                                                                    Negozio.Offset(0, 2) = FormatDateTime(MioRisultato.Offset(0, -1).Value, vbShortTime)
                                                                    Exit For
                                                                End If
                                                            Next
                                                            Set MioRisultato = .FindNext(MioRisultato)
                                                        Loop While Not MioRisultato Is Nothing And AddressIni <> MioRisultato.Address
                                                    End If
                                                End With
                                            Next
                                            Application.ScreenUpdating = True
                                            End Sub
                                            
                                            #42093 Score: 0 | Risposta

                                            Dadava
                                            Partecipante

                                              vecchio frac ha scritto:

                                              E' stato un bel lavoro di squadra. La pulce nell'orecchio me l'hanno messa Alex e Luca che ringrazio. Peccato che il Mac abbia questo limite rispetto alla versione Windows, in ogni caso vedrò di ricordarmelo...

                                              Certo che posso, più tardi allego il file che ho rifatto unendolo al tuo, ora sto un po impazzendo con il discorso della stampa per via sempre delle versioni mac pc... 

                                              #42095 Score: 0 | Risposta

                                              vecchio frac
                                              Senior Moderator
                                                272 pts

                                                Luca73 ha scritto:

                                                Vi chiedo però di provarla e testarla.

                                                Nice!   

                                                All'inizio avevo immaginato una cosa simile poi però non so perchè, Find non mi trovava il valore dei Dipendenti come risultato di una formula. Quello che tu ottieni con Set MiaCellaDip insomma. Alla fine ho impostato in un modo diverso, ma i risultati sono simili.

                                                Non mi piacciono tutti gli Activate e i Select un po' ridondanti ma il resto regge bene anche modificando la struttura delle righe tra uno specchietto e l'altro   

                                                #42098 Score: 0 | Risposta

                                                LucaSR
                                                Partecipante
                                                  15 pts

                                                  Ciao @luca73 MioDip invece che Variant (senza dichiarazione) impostalo come Range.

                                                  Set MiaCellaDip = foglio......Cells....Find cerca in ogni cella del foglio (migliaia se non milioni)   

                                                  vecchio frac ha scritto:

                                                  Non mi piacciono tutti gli Activate e i Select un po' ridondanti ma il resto regge bene anche modificando la struttura delle righe tra uno specchietto e l'altro   

                                                  Confermo! Puoi scriverlo meglio, ma sei sulla buona strada   

                                                  #42100 Score: 0 | Risposta

                                                  vecchio frac
                                                  Senior Moderator
                                                    272 pts

                                                    LucaSR ha scritto:

                                                    Puoi scriverlo meglio

                                                    Ho scritto di fretta... a volte il mio italiano langue e bisogna capirmi   

                                                    #42101 Score: 0 | Risposta

                                                    LucaSR
                                                    Partecipante
                                                      15 pts

                                                      vecchio frac ha scritto:

                                                      Ho scritto di fretta... a volte il mio italiano langue e bisogna capirmi   

                                                          ma non era riferito a te       

                                                    Login Registrati
                                                    Stai vedendo 25 articoli - dal 51 a 75 (di 121 totali)
                                                    Rispondi a: Restituzione di più valori da un foglio all'altro vincolato ad una ricerca
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni: