Nuovo delleMacro



  • Nuovo delleMacro
    di pietro (utente non iscritto) data: 11/11/2012 14:07:25

    Ciao a tutti, sono nuovo delle macro.
    Volevo sapere se fosse possibile creare una macro di questo tipo:
    Ho una lista di numeri e premendo un pulsante (che ho già creato) mi mette a confronto il primo con il secondo e si ferma, poi ripremo il pulsante e mi mette a confronto il primo con il terzo e si ferma, poi ripremo il pulsante e mi mette a confronto il primo con il quarto e si ferma...e così via....primo con il quinto, ripremo primo con il sesto....secondo con il terzo....ripremo, e secondo con il terzo...ripremo, e secondo con il quarto....ripremo, e terzo con il quarto.
    Secondo voi è possibile farlo??



  • di Vecchio Frac data: 11/11/2012 15:30:32

    Sì, è possibile farlo.
    Solo che non ne vedo nessuna utilità :)






  • di Pietro (utente non iscritto) data: 12/11/2012 07:27:38

    Ciao, grazie per aver risposto...cmq capisco che tu non ne veda la necessità, ma ti assicuro che mi SERVE :) :)
    riusciresti a darmi una mano, oppure conosci qualcuno in grado di farlo?? TE NE SAREI GRATO!!



  • di Vecchio Frac data: 12/11/2012 09:05:36

    La mia risposta era cortesemente provocatoria per suscitare un minimo sforzo di descrizione del problema e della necessità :)
    Potrei anche buttarti giù un pezzo di codice così ti renderesti conto che, pur funzionando perfettamente, se non indichi alla macchina cosa farne del confronto, non serve a niente.
    Intendevo dire che un codice che confronta un numero con un altro è realizzabile in poche linee, ma che senso ha se non dici che reazione vuoi ottenere? dovevi specificare cosa vuoi ottenere dal confronto. Vuoi conoscere il maggiore tra i due? il minore e il maggiore nel range dopo ogni click? ottenere una risposta in seguito al confronto? Cambiare il colore di una cella se uno è minore dell'altro? Cancellare i files dall'hard disk se un numero è minore di zero? ;)
    Sono perfettamente convinto che ti serva altrimenti non avresti chiesto :)





  • di pietro (utente non iscritto) data: 12/11/2012 09:45:41

    Hai perfettamente ragione :)
    Davvero si possono fare tutte queste cose??..credevo potesse fare solo delle semplici operazioni cicliche...vabbè, meglio così :) :)
    Ti ho allegato il codice di quello che ho realizzato io (se mi dai una mail ti invio anche il file excel almeno si capisce meglio).
    Quello che vorrei fare è semplice (ma non per me)...premendo il pulsante una volta, metto a confronto i numeri della riga 4 con quelli della riga 5, copiandoli su una tabellina di fianco...ripremendo il pulsante metto a confronto quelli della riga 4 con quelli della riga 6, sostituendoli con quelli precedenti e copiandoli sempre sulla tabellina di fianco...e così via fino a fare tutte le combinazioni. Il problema è che premendo il pulsante, la macro in un colpo solo mette a confronto tutte le combinazioni e termina quindi con l'ultimo confronto (nel mio caso riga 10 con riga 11). Io ho realizzato questa stupidissima macro utilizzando il registratore e non lavorando sui codici direttamente.
     
    Sub Macro2()
    '
    ' Macro2 Macro
    '
    
    '
        Range("C4:D5").Select
        Selection.Copy
        Range("L4:M5").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("L7").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = ""
        Range("C4:D4,C6:D6").Select
        Range("C6").Activate
        Selection.Copy
        Range("L4:M5").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("L7").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = ""
        Range("C4:D4,C7:D7").Select
        Range("C7").Activate
        Selection.Copy
        Range("L4:M5").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Range("C4:D4,C8:D8").Select
        Range("C8").Activate
        Selection.Copy
        Range("L4:M5").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("L7").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = ""
        Range("M7").Select
    End Sub
    
    



  • di Vecchio Frac data: 12/11/2012 14:23:15

    cit. " Davvero si possono fare tutte queste cose? "
    ---> Potenzialmente non c'è niente che non si possa fare. Se hai determinati privilegi puoi perfino distruggere tutto il sistema operativo (questo per le macchine Winzozz... per altri sistemi è meno semplice ^_^). Per dire, puoi anche allegare il file ad una email e spedirlo in automatico.

    cit. " ...se mi dai una mail ti invio anche il file excel almeno si capisce meglio"
    ---> Ti do un suggerimento migliore: allega il file con dati di esempio (zippato) direttamente qui in forum (Nuova Risposta - Allega un file). Così lo possono vedere tutti e chi sa e può riesce a darti una mano più velocemente. Io adesso ho un po' da fare ma cercherò di occuparmene.





  • di Pietro (utente non iscritto) data: 12/11/2012 18:41:41

    OK grazie!! spero ti possa liberare da impegni presto, perchè qui vedo che nessuno mi vuole aiutare :(
    TRANNE TE!!



  • di Vecchio Frac data: 12/11/2012 18:58:13

    Non dire così... qui non ci sono obblighi verso nessuno.
    Ho già detto che chi sa e può ti aiuterà; posso anche aggiungere "chi vuole" e il concetto sarebbe esatto lo stesso ^_^





  • di HarryBosch data: 12/11/2012 19:22:58

    La pazienza è la virtù dei forti :)
    Vediamo un pò, ho bisogno di queste info:
    - i valori che sono lungo la colonna C o lungo la colonna D sono univoci o possono ripetersi?
    - al momento le info che deduco dal codice, fanno si che copi semplicemente quattro valori più a destra (il modo l'ho capito); nient'altro per il confronto? solo la copiatura?
    - ti interessa solo un tasto che proceda con il confronto o anche uno che retroceda con le righe?



  • di HarryBosch data: 12/11/2012 21:08:12

    Vedi questo esempio che ti allego.
    Ho inserito uno "SpinButton" che ti permette di premere entrambi i lati; con uno avanzi e con l'altro retrocedi.
    Se inserisci dei nuovi numeri sotto le colonne C e D i pulsanti continueranno a svolgere il loro lavoro.
    Per adesso, più che un confronto, è un copia e incolla.
    Mi sono basato sul fatto che lungo la colonna C i valori siano univoci, in attesa di una tua risposta. Se invece ci sono dei doppioni, allora bisogna sistemare.



  • di Pietro (utente non iscritto) data: 12/11/2012 22:38:05

    Grazie HarryBosch per la risposta e l'impegno :) !!! ho guardato il codice che hai "generato"...FANTASCIENZA per me!!
    La strada è quella giusta...allego file per farti capire meglio l'argomento in modo da poter sistemare meglio il programmino (sempre che per te non sia un problema).
    Premessa...potrebbe essere che ci siano nella stessa colonna anche numeri simili.
    Và benissimo il doppio pulsante che permette di salire e scendere a mio piacimento, pero' dovrei poter mettere a confronto tutte le righe di numeri, quindi oltre a tutta la sequenza della riga "1" con le altre (1 vs 2; 1 vs 3; 1 vs 4; 1vs 5; ... ; 1 vs 11) mi servirebbe che anche tutte le altre siano messe a confronto (2 vs 3; 2 vs 4; 2 vs 5; ... ;2 vs 11; 3 vs 4 ; 3 vs 5; ... ; 3 vs 11; 4 vs 5; ...ecc fino a... 10 vs 11).
    GRAZIE MILLE!!!



  • di HarryBosch data: 12/11/2012 23:18:15

    Un file di esempio è sempre illuminante! ^_^
    Adesso vedo come sistemare al meglio



  • di HarryBosch data: 13/11/2012 16:03:20

    Ti allego il .rar "Macro -1"
    Ho inserito altri tasti:
    - il tasto R dovrebbe comportarsi come volevi: passa la prima riga con tutte le successive, quindi la seconda con tutte le successive e via dicendo
    - poi ho lasciato i due tasti Spin: con uno scorri solo una riga, con l'altro scorri l'altra riga
    - infine c'è un tasto "reset" che ti riporta alla situazione di partenza, ovvero con le prime due righe

    Fammi sapere



  • di Pietro (utente non iscritto) data: 13/11/2012 18:56:35

    Ciao HarryBosch, Ottimo!! ci sono...se posso...2 o 3 cosine che se fosse possibile sistemare......
    - quando premo il pulsante "R" ho notato che ci sono delle ripetizioni...per esempio una volta che ho fatto la sequenza riga 1 (1 vs 2; 1 vs 3; 1 vs 4; ... ; 1 vs 11;) perfettamente, quando passo alla sequenza riga 2, mi ripropone 1 vs 2 e poi parte con la sequenza giusta; quando parte la sequenza riga 3, mi ripropone 1 vs 3 e 2 vs 3. per farla breve dovrebbe essere così la sequenza:
    1-2;1-3;1-4;1-5;1-6;1-7;1-8;1-9;1-10;1-11;
    2-3;2-4;2-5;2-6;2-7;2-8;2-9;2-10;2-11;
    3-4;3-5;3-6;3-7;3-8;3-9;3-10;3-11;
    4-5;4-6;4-7;4-8;4-9;4-10;4-11;
    5-6;5-7;5-8;5-9;5-10;5-11;
    ...
    9-10;9-11;
    10-11;
    e poi riparte da 1-1;1-2; ecc.

    -perfetto il discorso delle frecce up-down...volevo chiederti...a questo punto non si potrebbe associare ad una riga un colore e ad un'altra riga un altro colore, associando poi, ad una riga a 2 frecce in modo da spostarla su e giù indistintamente, e all'altra riga altre 2 frecce sempre per poterla spostare su e giù a mio piacimento??

    -perfetto il tasto "RESETTA"

    Non capisco perchè non si vede il codice VBA in "visualizza macro"!?
    Ma se volessi spostare i pulsanti potrei farlo io??
    CMQ GRAZIEEE!!!!! SEI UN GRANDE!!!!



  • di HarryBosch data: 14/11/2012 00:41:04

    Ora dovrebbe andare come volevi.
    Con il tasto unico "R" sposti entrambe le righe, nel modo che mi hai descritto nell'ultimo intervento.
    Ci sono due SpinButton: per entrambe le righe hai la possibilità di scendere e salire; sarà evidenziata sempre la riga selezionata.
    Con il tasto resetta ti riporti alla situazione di partenza, con le prime due stazioni, in qualunque momento.

    Se vuoi vedere il codice, è inserito nel modulo del foglio "Tabelle".
    I pulsanti puoi spostarli dove vuoi ovviamente; se vai alla scheda "sviluppo" premi su "modalità progettazione" e potrai muoverli dove preferisci; ingrandirli e rimpicciolirli. Ripremi la progettazione per renderli "cliccabili" ^_^




  • di pietro (utente non iscritto) data: 14/11/2012 19:58:48

    Ciao GRANDE!! tutto perfetto!!
    volevo chiederti se era possibile aggiungere una cosa...ho inserito, come puoi vedere dal file che ho allegato, 3 liste di numeri (1,2,3) e una tabella dove dentro ci sono scritte riga...riga...riga.
    Vorrei che in questa tabella venissero inserite i vari casi "OK" come nell'esempio di cui ti ho fatto nel file allegato. Quindi, quando ad esempio nella riga 23,1388,1574,2931 mi trovo un "OK", vorrei che mi venissero riportati i numeri nella tabella in alto.
    L"OK" viene fuori quando mi trovo 4 numeri vicini, evidenziati in verde in ogni lista.



  • di pietro (utente non iscritto) data: 14/11/2012 20:10:24

    purtroppo non riesco a mandarti il file, che anche zippato pesa 4 MB (originale 28 MB). Ho allegato una STAMP del mio monitor. Se non ti è sufficiente, potrei mandarti il file via mail



  • di HarryBosch data: 15/11/2012 01:06:53

    28 MB?? E che cosa hai dentro questo file!
    Mi sembrano tanti... tutto l'archivio del lotto, a partire dalla prima estrazione del '45, pesa circa 2 MB :)

    Comunque, qualcosa ho capito anche dall'immagine che hai allegato, ovvero:
    - se in una delle 3 liste esce una combinazione che ti interessa, la formula inserita nella colonna "V" restituirà un "OK"
    - se se esce un OK, i quattro numeri della lista dove appaiono tutti verdi, dovranno essere riportati nella tabella "S4:AJ18" con tanto di riferimento di riga

    mi sorgono alcune domande:
    - le 3 liste sotto la riga 20, sono già compilate, e si estendono fino ad una riga X, giusto?
    - l'OK ti esce quando in una delle liste tutti e quattro i numeri vengono evidenziati?
    - nelle 3 liste, potrebbe succedere che sono anche 2 o 3 le combinazioni da copiare riferite alla stessa riga?
    - queste combinazioni vengono copiate nella tabella in alto; ci sono 14 posizioni con scritto riga: se le combinazioni da riportare sono maggiori?



  • di Pietro (utente non iscritto) data: 15/11/2012 07:32:03

    Ciao, in effeti è strano che pesi così tanto...NON CAPISCO
    Mi sembra di capire che ti cimenti nei programmini di lotto , o sbaglio??!!
    La lista 1 ( che va da B23 a F23) corrisponde riporta l'ipotetico "OK" alla lista V
    La lista 2 ( che va da H23 a L23) corrisponde riporta l'ipotetico "OK" alla lista AB
    La lista 3 ( che va da N23 a R23) corrisponde riporta l'ipotetico "OK" alla lista AH
    Le 3 liste sotto la riga 20 sono solo degli esempi, cmq utilizzali così come sono. Saro' io poi a sostituire "in un certo modo" questi numeri. Fai finta che siano quelli definitivi. Mi mancano delle cose che devo ancora capire come buttarle giù
    L"OK" esce quando i 4 numeri risultano TUTTI VERDI e vengono quindi riportati nella tabella in alto.
    In questa tabella potrebbero venir fuori diverse soluzioni ( per adesso quelle che ho inserito siano sufficienti) , anche 3 sulla stessa riga, ma sono 3 separate cmq, come se fossero su righe diverse. Le ho messe su tre liste diverse altrimenti sarei finito alla riga 9000
    Tutte le situazioni "OK" che si verificano, quindi potrebbero essere anche maggiori di 14, dovrebbero (se si puo') essere inserite in quella tabella.
    Nel caso, si puo' anche mettere di fianco a questa tabella il numero totale di casi "OK", almeno mi rendo conto di quanti ce ne sono?
    Perdonami capisco che è uin po' un casino!!! GRAZIE!!! faro' sicuramente una DONAZIONE AL SITO...MI SEMBRA IL MINIMO!!!



  • di Pietro (utente non iscritto) data: 15/11/2012 09:51:42

    Dimenticavo....non riesci, cortesemente, a vedere come mai pesa così tanto il file?? è troppo strano!!



  • di HarryBosch data: 15/11/2012 10:18:29

    Dovrei vedere il file per capire...
    per caso hai cercato di importare dati con le connessioni?

    Le tue ultime indicazioni hanno chiarito i miei dubbi. Solamente, sistemerei meglio la tabella dove vengono riportare le combinazioni con OK.



  • di Pietro (utente non iscritto) data: 15/11/2012 11:39:03

    Il problema è che per farti vedere il file dovrei mandartelo, ma no so come visto che posso inviarti file di 1MB max.
    Per dati importati con le connessioni intendi dire se ho scaricato i dati da internet?
    No, li ho copiati da un altro foglio excel
    Per quanto riguarda la tabella finale, hai carta bianca...io l'ho messa lì in alto, solo per avere tutto sott'occhio, visto che i dati che verranno riportati in questa tabella cambieranno ogni volta che premerò il pulsante "R" o le "frecce" per modificare le selezioni delle righe GIALLO-VERDI.



  • di pietro (utente non iscritto) data: 15/11/2012 23:21:50

    Ciao H.Bosh...novità?



  • di HarryBosch data: 16/11/2012 10:13:26

    Vedi questo nuovo file, "Macro -3"
    Ho spostato qualche colonna rispetto all'immagine che mi avevi allegato. Così il riepilogo risulterà su un'unica colonna, senza limiti.
    Anche le 3 liste non hanno un limite finale, puoi riportare tutte le combinazioni che ti interessa cercare.
    Dove sarà trovato "OK", la rispettiva riga sarà riportata; devi solo spostare le formule nelle nuove 3 colonne che ho messo vicino.



  • di pietro (utente non iscritto) data: 16/11/2012 22:17:43

    Ciao...
    ho dato un'occhiata al file...ci sono un paio di cose che si potrebbero sistemare...ovviamente se puoi!!
    Ho visto che nella tabella vengono riportate righe che non rispondono al requisito dei "4 numeri evidenziati consecutivamente".
    Ti ho re-inviato il file con le liste aggiornate e salvate con un esempio in cui ci sono dei casi che dovrebbero comparire in tabella automaticamente.
    riga 23 - lista 1 (1-5-4-2) "OK"
    riga 1355 - lista 3 (73-61-19-25) "OK"
    riga 1508 - lista 3 (61-73-25-19) "OK"
    riga 2832 - lista 1 (5-1-2-4) "OK"
    Siccome non ci potranno essere più di una decina di casi "OK" ogni volta che premo i pulsanti per spostare le selezioni nella tabella B4:H14, non si potrebbe fare una tabella piu' piccola e magari con una barra di scorrimento che si crea automaticamente nel caso in cui ci dovessero essere più casi?? FANTASCIENZA??
    E' normale che sia lento il programmino quando premo i pulsanti??
    Ciao e ancora GRAZIE!!



  • di HarryBosch data: 16/11/2012 23:24:09

    E' lento perché ci sono tanti dati da analizzare. E poi dipende anche dalla potenza del pc.
    Tra l'altro si potrebbe anche ottimizzare il codice, che all'inizio l'avevo buttato di getto.
    Tieni presente che ogni volta che clicchi un pulsante si ricalcola tutto il foglio.

    Quindi, forse si potrebbe staccare il movimento delle righe dal calcolo automatico, in modo da portarti velocemente sulle ruote desiderate: poi premi un tasto per calcolare i dati.
    Altrimenti, se ad ogni cambio analizzi i risultati ottenuti, la routine può rimanere anche un pò lentina, giusto?

    Venendo alle righe che riporta: non ho detto che se ci sono i 4 numeri evidenziati la riga viene riportata. Se rileggi l'ultimo mio commento, ti indicavo che:
    "Dove sarà trovato "OK", la rispettiva riga sarà riportata"
    pertanto, solo dove risulterà Ok, in quelle 3 colonne unite, allora la riga viene copiata nella tabella.

    Mi sembrava di aver capito che così dovesse andare. In un tuo commento dicevi:
    "L"OK" viene fuori quando mi trovo 4 numeri vicini"

    Per quanto riguarda la tabella con le linee di scorrimento, si potrebbe inserire una Listbox; se i dati superano la grandezza di questa, si creano automaticamente le linee di scorrimento.
    Appena posso ti preparo un esempio



  • di Pietro (utente non iscritto) data: 16/11/2012 23:44:52

    Ciao...4 numeri vicini ci saranno sempre. L"OK" viene fuori quando mi trovo 4 numeri vicini EVIDENZIATI(come nell'esempio che ti ho girato)...poi quei 4 numeri evidenziati (che creano appunto la mia CONDIZIONE IDEALE) mi vengono riportati nella tabella in alto....ma non è un problema, ci possono essere delle incomprensioni (SENZA OFFESA)...ero convinto di aver scritto vicini ed evidenziati.
    Perfetto la list-box!!
    Per quanto riguarda lo "staccare il movimento delle righe dal calcolo automatico", prova a girarmi un esempio in questo modo...vedo se è meglio o no, altrimenti lo tengo lento
    Se riesci girami i due esempi



  • di Pietro (utente non iscritto) data: 20/11/2012 16:12:54

    Ciao Harry, sei riuscito a dare un'occhiata al file??



  • di HarryBosch data: 21/11/2012 08:47:28

    Ciao Pietro, ho trovato un pò di tempo per sistemare le ultime cose dette.
    Ho inserito una listbox, nella quale apparirà il riepilogo delle eventuali combinazioni trovate lungo le 3 liste, con i soliti riferimenti di riga e di lista.
    Per inserire gli "OK" ho aggiunto qualche riga di codice.

    Per quanto riguarda il discorso "staccare il movimento delle righe dal calcolo automatico", ti ho inserito le due possibilità nello stesso foglio mediante una casellina chiamata "Calcolo immediato":
    - se la selezioni, ogni spostamento delle righe genererà il controllo delle combinazioni, e ci metterà un pò di tempo
    - se lasci la casellina vuota, gli spostamenti saranno veloci, e dovrai cliccare il pulsante "Trova combinazioni" per popolare la listbox



  • di Pietro (utente non iscritto) data: 22/11/2012 19:50:06

    Ciao Harry, grazie per il file perchè è fantastico, solo un paio di cose se puoi...
    - svincolare le colonne D,J,P dalle formule e calcoli vari perchè li dovro' mettere dei numeri specifici (scusa se non te l'ho detto prima) e ho visto che crea conflitto.
    - Come noterai, ho bloccato parte del foglio (dalla riga 1 alla 16); ho visto che se clicco sopra la riga di una delle combinazioni trovate e riportate in tabella, questa diventa blu; domanda...è possibile, cliccando appunto su ognuna di queste, far spostare automaticamente la parte di foglio "non bloccata" fino ad arrivare a quella combinazione selezionata? (scusa la richiesta )



  • di HarryBosch data: 23/11/2012 10:34:26

    Si, le colonne che hai detto creano conflitto perché il codice passava anche quelle...
    ora le ho fatte saltare, quindi all'interno di queste 3 colonne puoi inserire quello che vuoi.

    Sulla linea blu non ti ho detto niente, ma ho visto che hai già intuito:
    in effetti si può far scatenare l'evento desiderato al suo click, o con il doppio click, o tramite pulsante o altro ancora.
    Ho inserito l'evento DoubleClick: clicca due volte e la riga corrispondente al valore indicato in "Riga" verrà portata all'inizio della delimitazione impostata con il comando "blocca riquadri".

    Ti Allego la nuova revisione "Macro5"



  • di Pietro (utente non iscritto) data: 23/11/2012 19:54:51

    Che dire...SEI un grande Harry!!
    Volevo porti un quesito più semplice, ma da svolgere NON su "Macro" ma su foglio di calcolo semplice.
    Ho allegato un file in cui vado ad inserire 2 variabili (numeri da 1 a 90); io sono riuscito a creare queste formule.
    - Le differenze (quadrati gialli) non devono MAI essere superiori a 45;
    - Le mie incognite sono i quadrati verdi;
    - Le mie incognite NON devono essere numeri negativi o superiori al 90;
    Se nell'esempio che ti ho allegato vai a modificare le variabili, ad esempio inserendo i numeri 20 e 66, mi viene fuori un errore.
    La prova del nove per capire se il programmino è giusto è la seguente;
    - Se T18+U18=V18; V18+W18=X18; X18+Y18=Z18; stessa cosa, se inverto le variabili devo trovare le varie somme ma al contrario.
    Io ho trovato la soluzione creando tante tabelle, ma mi sono trovato con troppe tabelle; l'obbiettivo è trovare tutte le situazioni in un'unica tabella. FANTASCENZA????



  • di Pietro (utente non iscritto) data: 27/11/2012 07:27:39

    PERFETTO!!!