Risultati da 1 a 21 di 21

Discussione: Macro per archiviare dati - EP56 - scelta foglio da menù a tendina



  1. #1
    L'avatar di Celeno
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Ancona
    Messaggi
    9
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0

    Macro per archiviare dati - EP56 - scelta foglio da menù a tendina

    Ciao a tutti,

    come da oggetto sto lavorando su una macro per archiviare dati come Gerardo (che ringrazio), ha mostrato nel video EP56 le MACRO di excel per ARCHIVIARE dati ( Macro assolutI e relativI)

    Riguardo la macro ed i riferimenti relativi assoluti tutto chiaro.

    La mia attuale ricerca riguarda il poter scegliere da un elenco a tendina il Foglio in cui andare ad archviare i dati.

    Nel foglio uno oltre al data entry ho un dashboard di riepilogo; ogni foglio successivo è un archivio il cui totale è riportato nella dashboard iniziale.

    La tendina è costituita dai nomi dei vari fogli di archiviazione.

    Nel data entry i campi presenti sono:

    - Foglio (menù a tendina)
    - Data
    - Descrizione
    - Importo

    Ho preparato la macro di caricamento come descritto nel video, ma come faccio a dirle in quale foglio deve andare ad operare?

    Spero possiate aiutarmi.

    Grazie

  2. #2

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7164
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2065
    Likes dati
    1304
    Ciao Celeno,
    per meglio interpretare la tua richiesta è bene che alleghi un file con un esempio di ciò che vuoi ottenere.

  3. #3
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160
    Buona giornata, Celeno.
    Ipotizzando che il NomeFoglio, definito con Convalida dati (Menu a tendina) sia in Cella "A1", potresti provare con:
    Codice: 
    Option Explicit
    
    Sub TuoCodiceVBA()
    Dim Foglio As String
        Foglio = Cells(1, 1)
    Sheets(Foglio).Select
    
    
    Tuo Codice VBA
    .
    .
    .
    End Sub

    A disposizione.

    Buon fine settimana.

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  4. #4
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1126
    Ciao a tutti
    @Celeno il codice che ti ha scritto GiuseppeMN non saprei dirti se ha risolto il tuo problema o no, perchè la mia conoscenza VBA è proprio limitata, spero di si cosi il caso è chiuso.

    Ad ogni modo la Macro che avevo creato con il registratore di Macro come da Video EP56 non so se altre persone l'abbiano vista, per cui sarebbe meglio che tu allegassi un file con il tuo progetto e il risultato finale desiderato cosi da poter stuzzicare meglio la curiosità di tanti esperti.

    Dico questo perchè ci potrebbero essere soluzioni molto migliori, sia dal punto di vista del risultato finale ma sopratutto per il tipo di codice perchè il registratore rilascia un codice lunghissimo, poco modificabile e a volte trema lo schermo-

    Celeno hai mai pensato ad una userform che vada ad archiviare i dati su più Fogli?

    Qui in allegato vedrai un esempio che è stato risolto da un nostro carissimo utente Baloon_50 (Che saluto)

    Apri il file in questo link e dimmi se potrebbe andarti bene?


    http://dropcanvas.com/apqg7

  5. #5
    L'avatar di zio_tom
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Veneto
    Messaggi
    526
    Versione Office
    2010 - Win10
    Likes ricevuti
    64
    Likes dati
    17
    forse si può fare senza codice, se il foglio da cui si agisce è sempre lo stesso
    raccomanderei prima di tutto di spiegare dettagliatamente cosa si vuol fare, l'intero progetto
    e NON solamente il problema
    molte volte si evitano dei veri e propri 'cul de sac'

    per leggere il nome del foglio, che può essere diverso da Foglio1... FoglioN
    =STRINGA.ESTRAI(CELLA("FILENAME";A1);TROVA("]";CELLA("FILENAME";A1))+1;255)
    magari messo su cella A1

    poi dal foglio di lavoro si punta alle prime caselli di ogni foglio
    creando così la lista di selezione
    poi usando Dati>Convalida Dati>Elenco ecc
    si seleziona il testo voluto (nome foglio)
    e restituisce un numero che sarebbe la riga relativa d 1 ad n
    quindi facilmente si può selezionare il testo (nome foglio) con
    =INDICE(P2:P14;O5)
    dove P2:P14 è il range dove sta l'elenco dei nomi fogli
    e O5 è dove sta il numero risultato della selezione con Convalida Dati
    e quindi.... leggendo da VBA la cella dove sta la formula =INDICE(
    facciamo ciò che vogliamo
    con un Change riferito alla suddetta cella si può attivare la Sub di imput che leggerà dove andare a salvare i dati
    la stessa cosa si può fare con un form ed un ComboBox
    solamente che se si aggiunge un foglio bisogna cambiare il codice VBA
    invece così si copiano i fogli si rinominano
    e poi estendere solamente il campo del Convalida Dati

  6. #6
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160
    La mia risposta era relativa alla Richiesta:

    @ Celeno, scrive:
    Ho preparato la macro di caricamento come descritto nel video, ma come faccio a dirle in quale foglio deve andare ad operare?
    Pensando ad una alternativa senza VBA, potrei pensare alla Funzione "Indiretto"; in questo caso, servirebbe veramente un File, senza Dati sensibili, ma con le indicazioni di quello che si vuole ottenere.


    A disposizione.

    Buon aFine settimana.

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  7. #7
    L'avatar di Celeno
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Ancona
    Messaggi
    9
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0
    Buongiorno e buona Domenica a tutti!

    Grazie per le risposte.

    Ieri già alla prima di GiuseppeMN non vedevo l'ora di fare un tentativo.

    Ho riletto ora tutta la discussione.

    Dunque per il file da postare mi ci vorrà un po' perchè ne devo fare una creare una copia vuota per lavorarci su.

    Per Gerardo: la useform che mi hai mandato è bellissima oltre ad essere molto completa; mi piacerebbe imparare a crearne una così, ma sono ancora un neofita dell'Excel. Magari se capisco come crearne una mi cimento nell'impresa! Spero solo che per il mio scopo attuale non sia sovradimensionata perchè ho veramente pochi record da archiviare.

    Per zio_tom: grazie per la dritta; appena posso provo e ti dico!

    Appena posso vi carico un file così da rendere l'idea.

    Di nuovo grazie a tutti.

  8. #8
    L'avatar di Celeno
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Ancona
    Messaggi
    9
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0
    Ecco a voi il file.

    E' un semplice archivio che uso per la contabilità.

    Il folgio Riepilo è una sorta di dashboard in cui tengo sotto controllo i totali di ogni foglio di archiviazione.

    Sostanzialemente quando devo andare a caricare un spesa in uno dei fogli di archiviazione (Voce di spesa 1, ecc., ...), la inserisco manualmente: quidni mi sposto nel foglio desiderata e nella prima riga libera inserisco data, breve descrizione della spesa ed importodella stessa.

    Con la macro che ho registrato vado ad inserire nel primo foglio di archiviazione, Voce di Spesa 1, i dati che inserisco nel data entry presente in Riepilogo.

    Vorrei riuscire ad automatizzare il processo, facendo sì che, in base al foglio che selezionato nel menù a tendita del data entry (cella P6 di Riepilogo), la macro vada a lavorare proprio in quel foglio.

    Ora che vi ho postato il file pulito, mi deidico alle varie prove suggeritemi:242:

    Grazie ancora ragazzi :111:.

    Aggiornamento per GiuseppeMN: la prima dritta che mi hai dato non va purtroppo, mi da errore di debug.

  9. #9
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1126
    Ciao Celeno
    Forse non ho capito bene la domanda, ma credo che non ti serve un Macro, credo che sia sufficiente una formula visto che comunque tutti i fogli sono delle stesse dimensioni, le linguette del foglio sono scritte allo stesso modo delle intestazioni di riga e comunque ti serve una somma
    Nel foglio "Riepilogo" nella cella D6 metti questa formula e copia in basso:
    =SOMMA(INDIRETTO("'"&C6&"'!C5:C50"))

    Mentre nella cella E6 sempre nel foglio "Riepilogo" metti questa formula e copia in basso
    =SOMMA(INDIRETTO("'"&C6&"'!D5:D50"))

    Fammi sapere!

  10. #10
    L'avatar di Celeno
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Ancona
    Messaggi
    9
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0
    Citazione Originariamente Scritto da Gerardo Zuccalà Visualizza Messaggio
    Ciao Celeno
    Forse non ho capito bene la domanda, ma credo che non ti serve un Macro, credo che sia sufficiente una formula visto che comunque tutti i fogli sono delle stesse dimensioni, le linguette del foglio sono scritte allo stesso modo delle intestazioni di riga e comunque ti serve una somma
    Nel foglio "Riepilogo" nella cella D6 metti questa formula e copia in basso:
    =SOMMA(INDIRETTO("'"&C6&"'!C5:C50"))

    Mentre nella cella E6 sempre nel foglio "Riepilogo" metti questa formula e copia in basso
    =SOMMA(INDIRETTO("'"&C6&"'!D5:D50"))

    Fammi sapere!
    Ciao Gerardo,

    mi scuso per la poca chiarezza; provo a riordinare le idee.

    Le macro se non erro servono ad evitare operazioni ripetitive; la mia in questo file è quella di archviare, nei vari fogli, le spese di cui tengo traccia.

    Es.:

    ho acquistato un bene che appartiene alla categoria Voce di Spesa 1; io apro il mio file archivio, vado nel foglio Voce di Spesa 1 e mi archvio la spesa fatta, scrivendo data, descrizione ed importo.

    Poi vado in Riepilogo ed aggiorno la data ed il saldo del mio conto corrente; se corrispondono tutto ok, se non è così ricontrollo.

    Fine esempio.

    Nel video che ho visto la macro legata al data entry che impieghi va a lavorare sempre nello stesso foglio di archiviazione; io invece ho bisogno di potere selzionare, dal foglio Riepilogo, quello in cui la macro andrà ad operare.

    La dashboard (B4:L14) serve solo a monitorare i totali dei fogli, non è da prendere in cosiderazione.

    Spero di essermi spiegato.

  11. #11
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1126
    Oppss!Scusa non avevo visto nel Foglio "Riepilogo" il data-Entry in O4:P9 ( ho dovuto rimpicciolire il file per vederlo)
    Adesso ho capito bene il problema e visto che non conosco bene il VBA come già detto più volte passo la parola agli esperti VBA
    Celeno quel video che hai citato nel titolo è stata creata una MACRO con il registratore di macro invece con una buona conoscenza del VBA potrai ottenere un codice più sintetico ed efficace e facilmente Modificabile.
    Passo la parola agli esperti VBA

    Ciao Celeno

  12. #12
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1126
    @Celeno
    Comunque le formule che ti ho creato nel post #9 le potresti sfruttare comunque per avere una dashboard senza fare calcoli a mano

  13. #13
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160
    Buona giornata, Celeno;
    in attesa che qualche "vero" Esperto desideri risponderti, potresti provare a sostituire il Tuo Codice VBA con questo.
    Codice: 
    Option Explicit     ' Indica a VBA che tutte le Variabili e Costanti devono essere definite; non è obbligatorio, ma ... aiuta!
    
    Sub CaricaSpesa()
    Dim Foglio As String                ' Definisco la Variabile "Foglio"
        If Cells(6, 16) = "" Then End   ' Controllo che in Cella "P6" sia indicata una "Voce di spesa"
        Foglio = Cells(6, 16)           ' Attribuisco alla Variabile "Foglio" il NomeFoglio nel quale operare
    '           Tua Macro
        Range("P7").Select
        Selection.Copy
        Sheets(Foglio).Select           ' Istruzione modificata
        Range("A4").Select
        Selection.End(xlDown).Select
        ActiveCell.Offset(1, 0).Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("Riepilogo").Select
        Application.CutCopyMode = False
        Range("P8").Select
        Selection.Copy
        Sheets(Foglio).Select           ' Istruzione modificata
        ActiveCell.Offset(0, 1).Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("Riepilogo").Select
        Application.CutCopyMode = False
        Range("P9").Select
        Selection.Copy
        Sheets(Foglio).Select           ' Istruzione modificata
        ActiveCell.Offset(0, 2).Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False ' Nuova istruzione ... Gerardo docet! (Gerardo insegna) ;)
    End Sub
    Ho inserito dei commenti nelle Istruzioni nuove o modificate.

    Sarò sincero, avrei scritto un Codice molto diverso dal Tuo, ma cerco sempre di non essere "ficcanaso".

    Ora mi guardo il Mondiale GP :168: sperando che Nessuno si faccia del male.


    A disposizione.

    Buon fine settimana a Tutti.

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  14. #14
    L'avatar di zio_tom
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Veneto
    Messaggi
    526
    Versione Office
    2010 - Win10
    Likes ricevuti
    64
    Likes dati
    17
    velocemente dal tuo file ho riscitto il codice e sembra andare bene
    NB: le macro sono il PEGGIORE modo di programmazione, quintali di codice inutile
    avendo del codice VBA il file va salvato con estensione .xlsm
    Ultima modifica fatta da:Gerardo Zuccalà; 25/10/15 alle 15:38 Motivo: allegato

  15. #15
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160
    Riprendo dopo un "brutto" Moto GP; molto bella la prima parte, da dimenticare il confronto Rossi - Marquez.

    Ma, tornado alla Nostra discusione; direi, altra Discussione interessante!

    @ zio_tom, scrive:
    NB: le macro sono il PEGGIORE modo di programmazione, quintali di codice inutile
    avendo del codice VBA il file va salvato con estensione .xlsm
    @ zio_tom, perdonami, ma non mi trovi d'accordo.
    I Codici VBA possono essere anche di "pochi grammi"

    Consentimi anche una considerazione Userform sono utilissimi, ma considera che TextBox rendono sempre un "testo"; voglio dire la data odierna, se non gestita, anzichè essere proposta come:
    - 25/10/2015
    verrà riproposta come:
    - ^25/10/2015

    Analogmente, l'Importo, se il Valore sarà un numero intero, senza decimali, non avrai problemi:
    - 100
    verrà riproposta come:
    - 100,00

    ma, se il Valore sarà un numero con decimali, avrai problemi:
    - 100,50
    verrà riproposta come:
    - '100,50
    L'apice indica che il valore non è numerico.

    Poi, tutto si può fare, ma, a mio parere, i Valori da TextBox vanno resi nel Formato corretto.


    A disposizione.

    Buon fine settimana a Tutti

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  16. #16
    L'avatar di Celeno
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Ancona
    Messaggi
    9
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0
    Andando con ordine:

    1 - Grazie mille a Gerardo per la stringa, ne farò buon uso
    2 - @ GiuseppeMN - codice inserito al volo per una prova veloce..funziona alla grande!! Stasera me lo studio e cerco di assimilare le modifiche che hai inserito così da comprenderle.
    3 - @ zio_tom - stasera provo il tuo file e studio anche quello
    4 - VBA mi piac eperchè è come una ligua solo che finora ho trovato solamente libri di testo molto teorici e poco pratici; mi piacerebbe imparare a scrievre direttamente in VBA, ma ancora non ho trovato qualcosa che mi permetta di tradurre correttaemente in istruzione quello che voglio progettare. Non ne conosco la sintassi insomma. Avevete qualche consiglio?

    Vi ringrazio tutti intanto.

    Celeno

  17. #17
    L'avatar di zio_tom
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Veneto
    Messaggi
    526
    Versione Office
    2010 - Win10
    Likes ricevuti
    64
    Likes dati
    17
    Citazione Originariamente Scritto da GiuseppeMN Visualizza Messaggio
    @ zio_tom, perdonami, ma non mi trovi d'accordo.
    I Codici VBA possono essere anche di "pochi grammi"
    mi sono spiegato male intendevo il codice generato con registratore Macro
    che genera montagna di codice inutile

    infatti ho sostituito il codice generato dal registratore
    con codice pensato e scritto

  18. #18
    L'avatar di Celeno
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Ancona
    Messaggi
    9
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0
    Citazione Originariamente Scritto da zio_tom Visualizza Messaggio
    velocemente dal tuo file ho riscitto il codice e sembra andare bene
    NB: le macro sono il PEGGIORE modo di programmazione, quintali di codice inutile
    avendo del codice VBA il file va salvato con estensione .xlsm
    Grazie per il file,

    trova la useform formalmente corretta rispetto alla macro, o perlomeno è la mia opinione.

    L'unico inghippo ora sarà di imparare a crearne una da solo.

    Per Gerardo: credo che si possa cambiare lo stato del thread in risolto; per le soluzioni ringrazio GiuseppeMN per il codice VBA corretto e zio_tom per la useform.

    Grazie mille a tutti, ho impararato molto dai Vostri consigli.

    Celeno

  19. #19
    L'avatar di gianluca33
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Roma
    Età
    41
    Messaggi
    16
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    0
    Ciao a tutti, non so se sia inerente la discussione ma, come appassionato di Excel, dopo averci sbattuto un pò la testa, ho creato la mia prima userform, per ora semplicissima, che mi fa inserire 3 piccoli dati (nome, cognome e numero di telefono) dalla userform alla tabella Excel ogni volta scendendo di una riga.

    https://drive.google.com/open?id=0By...2tiUUdGZV9FLVE

  20. #20
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1126
    Ciao Gianluca33
    In questo caso ti consiglio di aprire una discussione nuova, cosi c'è meno rischio che la tua domanda venga ignorata.
    Ciao Grazie

  21. #21
    L'avatar di gianluca33
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Roma
    Età
    41
    Messaggi
    16
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    0
    ok

Discussioni Simili

  1. foglio con menù a tendina, caselle di selezione e conteggio dati
    Di M_Druido nel forum Domande su Excel in generale
    Risposte: 1
    Ultimo Messaggio: 31/01/17, 11:59
  2. Messaggi di errore per errata scelta nei menu a tendina collegati
    Di ProgrammD69 nel forum Domande su Excel in generale
    Risposte: 23
    Ultimo Messaggio: 04/09/16, 13:13
  3. Risposte: 8
    Ultimo Messaggio: 05/05/16, 00:24
  4. Macro per archiviare in base alla scelta dal menu convalida
    Di Lety88 nel forum Domande su Excel VBA e MACRO
    Risposte: 3
    Ultimo Messaggio: 22/04/16, 09:17
  5. EP56 le MACRO di excel per ARCHIVIARE dati ( Macro assolutI e relativI)
    Di giackko86 nel forum Domande su Excel VBA e MACRO
    Risposte: 4
    Ultimo Messaggio: 10/09/15, 22:59

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •