› Excel e gli applicativi Microsoft Office › Restituzione di più valori da un foglio all'altro vincolato ad una ricerca
-
AutoreArticoli
-
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.
devi andare su Strumenti -> Riferimenti -> Scripting Runtime.
Allegati:
You must be logged in to view attached files.esatto sei nel posto giusto, non trovi la libreria Microsoft Scripting Runtime??
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
ottimo.....
secondo voi sarebbe possibile alllora questo, con solo funzioni?
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.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
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.sarebbe più semplice, magari passando da funzioni
Se sia più semplice non ne ho idea, io con le formule sono negato
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").copyriduci 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
è 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.
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
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.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
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.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.
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ù...
Se poi desideri anche la vista per singolo, penso che non rimanga altro che provare.
sarebbe il massimo si
grazie mille ancora, davvero
fatelo più difficile che VF un si diverte più
sarebbe il massimo si
lo lasciamo fare ad Alex o Luca quando avrà il pc funzionante?
lo lasciamo fare ad Alex o Luca quando avrà il pc funzionante?
Ma io non gli darei compiti da gregari....
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
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.
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 SubE' 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...
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
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)
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
Puoi scriverlo meglio
Ho scritto di fretta... a volte il mio italiano langue e bisogna capirmi
Ho scritto di fretta... a volte il mio italiano langue e bisogna capirmi
ma non era riferito a te
-
AutoreArticoli
