PDA

View Full Version : [VBA Excel] Fattibilità Macro


Speed399
10-04-2010, 21:51
Vi chiedo se è possibile realizzare una cosa del genere, uso excel da molto tempo ma purtroppo non so nulla della parte VBA/macro e delle sue potenzialità

io ho un foglio di lavoro formattato in questa maniera:

http://img442.imageshack.us/img442/5373/esempio1.jpg

quindi un elenco di negozi, 1 per ogni riga (circa 200) e un elenco di articoli, 1 per colonna con indicato il relativo codice e quantità predefinita di quell'articolo per "kit" poi in corrispondenza della riga dei negozi c'è la quantità di "kit" di quel prodotto che il negozio deve ricevere

quello che mi serve è creare/stampare in A4 un "report" per ogni singolo negozio formattato in questo modo

http://img256.imageshack.us/img256/4843/esempio2.jpg

in pratica in alto il nome e il codice del negozio e sotto un elenco dei prodotti con i relativi dati (codice e pezzi per kit) ma solo se "richiesti" cioè se quantità kit è 1 o più

mi chiedevo in oltre se c'è qualcuno che lo può realizzare a pagamento eventualmente (io potrei provare a mettermici ma partirei da 0 completo e la vedo dura) ese secondo voi è da realizzare in un altro modo perchè una cosa del genere non è realizzabile direttamente in ambito excel

zuper
11-04-2010, 11:48
ciao ;)

bisognerebbe vedere come funziona,

non puoi postare un foglio excel allegandolo direttamente qui per avere un esempio di dati?
nn ho voglia di riscrivermi tutto :)

per il pagamento ci mettiamo d'accordo dopo AHAHAHHAHA :Prrr: :Prrr:

e poi il kit da cosa lo deduci?

Speed399
11-04-2010, 11:55
si certo che posso :) dammi 2 min che magari lo faccio anche un po + articolato e lo uppo

Speed399
11-04-2010, 12:06
eccolo

zuper
11-04-2010, 12:34
secondo me devi portare tutto su access...

qualcosa di questo tipo

zuper
11-04-2010, 12:38
devi solo rifare il report che io l'ho fatto un po a cazzo :)

ma le tabelle e la query sono ok :D

a parte che nn so come inserire il kit

MarcoGG
11-04-2010, 12:44
in pratica in alto il nome e il codice del negozio e sotto un elenco dei prodotti con i relativi dati (codice e pezzi per kit) ma solo se "richiesti" cioè se quantità kit è 1 o più

mi chiedevo in oltre se c'è qualcuno che lo può realizzare a pagamento eventualmente (io potrei provare a mettermici ma partirei da 0 completo e la vedo dura) ese secondo voi è da realizzare in un altro modo perchè una cosa del genere non è realizzabile direttamente in ambito excel

Presente ! ;)
Anzitutto dovresti spiegare due cose :

1. Come calcoli le Qt Kit che vedo nel Report, ma non nel Foglio Database. Quindi in Report i Qt Articolo sono riportati dagli incroci tra Negozi e Articoli, ma Qt Kit ?

2. Il numero di colonne su Foglio Database è fisso o variabile ?

Personalmente non lo realizzerei in Excel al 100%, ma organizzerei il tutto stampando su file Word, che ovviamente a fine esportazione possono essere stampati direttamente e/o salvati, in modo da mantenere anche uno storico dei report realizzati di volta in volta... ;)

zuper
11-04-2010, 12:48
Presente ! ;)
Anzitutto dovresti spiegare due cose :

1. Come calcoli le Qt Kit che vedo nel Report, ma non nel Foglio Database. Quindi in Report i Qt Articolo sono riportati dagli incroci tra Negozi e Articoli, ma Qt Kit ?

2. Il numero di colonne su Foglio Database è fisso o variabile ?

Personalmente non lo realizzerei in Excel al 100%, ma organizzerei il tutto stampando su file Word, che ovviamente a fine esportazione possono essere stampati direttamente e/o salvati, in modo da mantenere anche uno storico dei report realizzati di volta in volta... ;)

che ti intrometti? il pagamento lo voglio io :D:D:D:D:D

cmq anche io avevo pensato al mail merge...ma secondo me in access è + immediato con questi incroci ;)

MarcoGG
11-04-2010, 13:24
che ti intrometti? il pagamento lo voglio io :D:D:D:D:D

cmq anche io avevo pensato al mail merge...ma secondo me in access è + immediato con questi incroci ;)

Beh, il thread è pubblico, e non c'è niente di male. :p

Perchè "mail merge" ? La mia soluzione prevede solo Excel VBA + Word. Ho già realizzato qualcosa di molto simile. Access non lo scomoderei proprio, anche perchè se il DB arriva così, in formato tabellare di Excel, lo vedrei un passaggio decisamente superfluo.

Che vinca il migliore ! :D

Speed399
11-04-2010, 13:25
Presente ! ;)
Anzitutto dovresti spiegare due cose :

1. Come calcoli le Qt Kit che vedo nel Report, ma non nel Foglio Database. Quindi in Report i Qt Articolo sono riportati dagli incroci tra Negozi e Articoli, ma Qt Kit ?

2. Il numero di colonne su Foglio Database è fisso o variabile ?

Personalmente non lo realizzerei in Excel al 100%, ma organizzerei il tutto stampando su file Word, che ovviamente a fine esportazione possono essere stampati direttamente e/o salvati, in modo da mantenere anche uno storico dei report realizzati di volta in volta... ;)


La Qt kit è il numero che si ottiene incrociando negozio e articolo
Qt articolo invece è una quantità fissa relativa a quell'articolo, cioè va semplicemente riportata come viene riportato il codice e il nome dell'articolo

In pratica mettiamo "Articolo 1" ha il codice XYZ ed è confezionato in kit da 400 pezzi
Il negozio poi può ordinare 1,2,3 ecc kit sapendo che riceverà 400 800 1200 pezzi

Il numero di colonne è variabile da 10-15 a casi eccezionali di 80-100

Word preferirei evitarlo, o meglio, cmq non ho necessità di fare uno storico di questi report, per quello ci basta il foglio originale, e/o cmq un bel pdf con tutte le pagine del report sarebbe + che sufficente

Preferirei rimanere in ambito excel anche per una questione di "formattazione" del report, siccome come dicevo talvolta sono molti articoli volevo realizzare una tabella con una sorta di lettura facilitata (tipo una riga bianca e una don un fondo grigio) e non so se in word si può fare

zuper
11-04-2010, 13:29
La Qt kit è il numero che si ottiene incrociando negozio e articolo
Qt articolo invece è una quantità fissa relativa a quell'articolo, cioè va semplicemente riportata come viene riportato il codice e il nome dell'articolo

In pratica mettiamo "Articolo 1" ha il codice XYZ ed è confezionato in kit da 400 pezzi
Il negozio poi può ordinare 1,2,3 ecc kit sapendo che riceverà 400 800 1200 pezzi

Il numero di colonne è variabile da 10-15 a casi eccezionali di 80-100

Word preferirei evitarlo, o meglio, cmq non ho necessità di fare uno storico di questi report, per quello ci basta il foglio originale, e/o cmq un bel pdf con tutte le pagine del report sarebbe + che sufficente

Preferirei rimanere in ambito excel anche per una questione di "formattazione" del report, siccome come dicevo talvolta sono molti articoli volevo realizzare una tabella con una sorta di lettura facilitata (tipo una riga bianca e una don un fondo grigio) e non so se in word si può fare

se devi fare anche i conti dei kit secondo me la cosa + comoda è access :)

e puoi anche farti i report come vuoi...

l'unica cosa come giustamente dice marco, è se il file ti arriva così o se lo puoi costruire tu come vuoi

MarcoGG
11-04-2010, 13:50
La Qt kit è il numero che si ottiene incrociando negozio e articolo
Qt articolo invece è una quantità fissa relativa a quell'articolo, cioè va semplicemente riportata come viene riportato il codice e il nome dell'articolo

In pratica mettiamo "Articolo 1" ha il codice XYZ ed è confezionato in kit da 400 pezzi
Il negozio poi può ordinare 1,2,3 ecc kit sapendo che riceverà 400 800 1200 pezzi

Il numero di colonne è variabile da 10-15 a casi eccezionali di 80-100


Quindi, rimanendo sul tuo esempio :
1. Su foglio Database, in C3 ho il numero di pezzi per kit ( 400, 800, ecc. ).
2. Su foglio Database, in C4 ho il numero di kit ordinati da quel particolare negozio.
3. In Report, se non ci sono kit ordinati per quell'articolo, NON inserisco nemmeno il record.
4. In Report, in F4 riporto C3, SENZA moltiplicare il numero dei kit per il num-pezzi-per-kit.

Corretto ?

Speed399
11-04-2010, 14:08
si tutto corretto

MarcoGG
11-04-2010, 14:10
si tutto corretto

Ok, manca solo una cosa, poi parto :
In Report c'è un "Codice Negozio", che in "Database" non c'è.
Da dove va preso ?

zuper
11-04-2010, 14:20
se ti interessa la "versione" access ci do un occhio anche io...

per ora senza aver implementato la parte relativa al KIT può venire un report così:
http://img189.imageshack.us/img189/2430/captureqf.th.png (http://img189.imageshack.us/i/captureqf.png/)

MarcoGG
11-04-2010, 14:33
Ok, manca solo una cosa, poi parto :
In Report c'è un "Codice Negozio", che in "Database" non c'è.
Da dove va preso ?

Codice negozio è nella colonna A, solo che nel file di esempio a quanto pare l'hai nascosta ! :doh: :D
Mannaggia però ragazzi. Già è difficile capirsi, così a distanza, se poi vi ci mettete anche voi... :p

zuper
11-04-2010, 14:38
Codice negozio è nella colonna A, solo che nel file di esempio a quanto pare l'hai nascosta ! :doh: :D
Mannaggia però ragazzi. Già è difficile capirsi, così a distanza, se poi vi ci mettete anche voi... :p

uff ma come sei :)

ancora nn hai cominciato!?!?!?!?!?!?!?! :sofico: :sofico: :sofico:

io ho già finito :Prrr: :Prrr: :Prrr: :Prrr:

http://img17.imageshack.us/img17/3412/capturezyy.th.png (http://img17.imageshack.us/i/capturezyy.png/)

MarcoGG
11-04-2010, 14:55
uff ma come sei :)

ancora nn hai cominciato!?!?!?!?!?!?!?! :sofico: :sofico: :sofico:

io ho già finito :Prrr: :Prrr: :Prrr: :Prrr:

http://img17.imageshack.us/img17/3412/capturezyy.th.png (http://img17.imageshack.us/i/capturezyy.png/)

Sto facendo anche altro, io. ;)
Se posso esprimere una personale opinione su quel reportino di Access... E' orreeeendoooo ! :doh: :p :Prrr:
Oltretutto, scherzi a parte, credo non sia rispondente all'analisi...

zuper
11-04-2010, 14:57
Sto facendo anche altro, io. ;)
Se posso esprimere una personale opinione su quel reportino di Access... E' orreeeendoooo ! :doh: :p :Prrr:
Oltretutto, scherzi a parte, credo non sia rispondente all'analisi...

ahahaha beh figurati se nn accetto consigli da te :D :D

è una roba fatta al volo con i report automatici di access :D:D

però per quanto riguarda la parte "funzionale" mi pare corretto,

che trovi che nn vada?

Speed399
11-04-2010, 15:32
Codice negozio è nella colonna A, solo che nel file di esempio a quanto pare l'hai nascosta ! :doh: :D
Mannaggia però ragazzi. Già è difficile capirsi, così a distanza, se poi vi ci mettete anche voi... :p

giuro che non l'ho nascosta :eek: io la vedo come nella prima immagine che avevo postato avevo solo aggiunto altre righe e articoli

cmq riguardo quel rapportino direi che il problema maggiore è che ogni foglio deve contenere un solo negozio (e forse forse nel caso un negozio abbia tantissimi articoli richiesti + fogli per un negozio, dato che mi sa tipo 60-80 in un foglio solo non ci stanno)
e il totale pezzi ottenuto da numeri di kit X pezzi per articolo non è necessario
e il codice sarebbe meglio in una colonna a parte prima del nome articolo
diciamo + che altro sarebbero un po di accorgimenti "estetici"

MarcoGG
11-04-2010, 15:42
Questo dovrebbe rispondere alla tua analisi :

http://thumbnails5.imagebam.com/7600/b803c575990759.gif (http://www.imagebam.com/image/b803c575990759)

1. Tutto in Excel, come nel tuo esempio. Nessun bisogno di usare Access.

2. Possibilità di scelta tra stampa continua o 1 negozio per pagina ( a meno che un singolo negozio non superi la pagina, ovvio ).

Speed399
11-04-2010, 19:02
si così va benissimo l'unica cosa è che per facilitare la corrispondenza tra codice/articolo e quantità le righe sarebbe meglio averle colorate così:

http://img168.imageshack.us/img168/2723/esempio3.jpg

edit
oppure con i caratteri di una riga diversi da quelli da quella seguente alternati, ma penso a livello di "programmazione" non cambi e preferirei evitare per non dover stampare a colori

per il resto è perfetto

zuper
11-04-2010, 21:14
Questo dovrebbe rispondere alla tua analisi :

http://thumbnails5.imagebam.com/7600/b803c575990759.gif (http://www.imagebam.com/image/b803c575990759)

1. Tutto in Excel, come nel tuo esempio. Nessun bisogno di usare Access.

2. Possibilità di scelta tra stampa continua o 1 negozio per pagina ( a meno che un singolo negozio non superi la pagina, ovvio ).

beh premesso che secondo me il tuo report è decisamente + brutto del mio :D:D:D

credo che questo "problema" sia gestibile decisamente meglio usando un db piuttosto che un foglio di calcolo :)

poi chiaramente tutto dipende da cosa si vuol fare :)

tu cmq sei un mago e col vba tiri fuori tutto quello che vuoi, ma è indubbiamente + facile e comodo con una semplice query e credo anche molto + customizzabile, per esempio se un giorno vuoi tirare fuori dei report invece che per negozio, per articolo :)

ma è chiaramente un discorso + generale il mio ;)

Speed399
11-04-2010, 21:28
ma al di la del fatto che al momento non ho access

tramutare quel foglio excel in access è una cosa automatizzabile che poi richiede 2 secondi oppure poi per ogni ordine ci sarebbe da lavorarci su ?

zuper
11-04-2010, 21:45
non si tratta di trasformare quel foglio ma di creare un db partendo da 0, e si può creare in molti modi.

io nel tuo preciso caso ho fatto così:

1 tabella "codice negozio" con la lista dei codici e dei nomi dei negozi
1 tabella "codice articolo" idem come sopra, solo codici e nomi articoli e quantità degli articoli in ogni kit
1 tabella con gli effettivi ordini, con solo codice negozio, codice articolo e quantità di kit ordinati
1 semplicissima query che va a "incastrare" tutte le voci

SELECT codneg.[nome negozio]+'-'+listino.[codice negozio] AS negozio, codart.[nome articolo]+'-'+listino.[codice articolo] AS articolo, listino.[quantita_articolo] AS kit, codart.lotto, [codart].[lotto]*[listino].[quantita_articolo] AS totale
FROM codneg INNER JOIN (codart INNER JOIN listino ON codart.[codice articolo] = listino.[codice articolo]) ON codneg.[codice negozio] = listino.[codice negozio]
WHERE (((listino.quantita_articolo)>0));


pare un po incasinata perchè l'ho creata col wizard di access dato che è abbastanza lineare come query

1 report configurabile come si vuole.

chiaramente la parte di configurazione del db è un po + lunga di quella del foglio excel, ma poi una volta configurato trovo sia gestibile molto meglio, anche solo per esempio cambiare poi il nome di un negozio o simili :)

ho fatto davvero tutto con wizard senza soffermarmi + di tanto sulla configurazione, ma in totale ci avrò messo si e no 20 minuti :)

zuper
11-04-2010, 21:57
e comunque, mi sono dimenticato di aggiungere, che il report creato da marco fa pensare che sia una cavolata da farsi...
ma nn credo proprio lo sia :)

mi immagino solo il codice vba che ci ha scritto dietro :)

per cominciare credo che la gestione con access sia molto + facile...

poi chiaro...se tutti avessimo le sue conoscenze di vba.....sarebbe un mondo migliore :D

Speed399
11-04-2010, 22:19
io non sono per niente nell'ambito della programmazione ma che sia un gran lavoraccio lo immagino, per questo dicevo se c'è qualcuno che lo fa in ambito professionale (perchè diciamo il VBA di excel è un po di "nicchia") magari partendo da qualcosa di fatto potrei riuscire con un po di prove a farmi qualche piccola modifica, ma a mettermici da 0 penso ci impiegherei almeno 6 mesi

Speed399
11-04-2010, 22:57
cmq il vero problema di questo metodo è che ogni volta quindi dovrei ricostruire il database da 0 sostanzialmente http://gaming.ngi.it/images/ngismiles/arg.gif

MarcoGG
11-04-2010, 23:14
Rispondo a tutti e due. Anzitutto un grazie per gli apprezzamenti. Fanno sempre piacere. :D

Per il discorso DB potrei essere d'accordo sul fatto che in questo caso fosse la scelta più razionale, ma c'è un MA, anzi due :

1. Speed399 parla esplicitamente di dati che "arrivano" già in quel formato tabellare di Excel. Quindi io devo desumere che a lui non spetti tanto il data entry, quanto il compito di produrre quel particolare Report. Perciò da qui la mia proposta di realizzare dinamicamente il Foglio Report con VBA. Non "facile", ma certamente fattibile.

2. L'ipotesi di buttare giù tutto e fare un DB Access "da zero" in questo scenario mi fa venire la pelle d'oca. Speed399 parla di una matrice dati di 200 Negozi ( righe ) PER massimo 80 Articoli ( Colonne ). Il che significa, nel caso di dimensioni massime del Foglio : 16000 celle.
Lo fai tu il data entry, zuper ? :D

Comunque, mi pare di capire che ci sia ancora parecchia indecisione, perciò, Speed399, magari dormici sopra e facci sapere come intendi procedere.

Io per il momento mi fermo qui. Mi è già capitato ( una volta sola, per fortuna, e mi è bastata ) di aver praticamente consegnato una soluzione chiavi-in-mano ad altro utente del Forum che aveva promesso un compenso e che poi si è dileguato nella nebbia...

zuper
11-04-2010, 23:19
Rispondo a tutti e due. Anzitutto un grazie per gli apprezzamenti. Fanno sempre piacere. :D

Per il discorso DB potrei essere d'accordo sul fatto che in questo caso fosse la scelta più razionale, ma c'è un MA, anzi due :

1. Speed399 parla esplicitamente di dati che "arrivano" già in quel formato tabellare di Excel. Quindi io devo desumere che a lui non spetti tanto il data entry, quanto il compito di produrre quel particolare Report. Perciò da qui la mia proposta di realizzare dinamicamente il Foglio Report con VBA. Non "facile", ma certamente fattibile.

2. L'ipotesi di buttare giù tutto e fare un DB Access "da zero" in questo scenario mi fa venire la pelle d'oca. Speed399 parla di una matrice dati di 200 Negozi ( righe ) PER massimo 80 Articoli ( Colonne ). Il che significa, nel caso di dimensioni massime del Foglio : 16000 celle.
Lo fai tu il data entry, zuper ? :D

Comunque, mi pare di capire che ci sia ancora parecchia indecisione, perciò, Speed399, magari dormici sopra e facci sapere come intendi procedere.

Io per il momento mi fermo qui. Mi è già capitato ( una volta sola, per fortuna, e mi è bastata ) di aver praticamente consegnato una soluzione chiavi-in-mano ad altro utente del Forum che aveva promesso un compenso e che poi si è dileguato nella nebbia...

rispondo ai 2 MA:
1- si tecnicamente se gli arriva il file così la tua è l'unica soluzione, però nn mi pareva così chiaro che effettivamente ha quel foglio...boh deve dirlo lui :D
2- beh lui cmq credo abbia già tutti i dati per cui copiare e incollare i codici negozi e articoli nn è difficile :) diverso se deve reinserire tutti gli ordini :)

Speed399
11-04-2010, 23:50
1. Speed399 parla esplicitamente di dati che "arrivano" già in quel formato tabellare di Excel. Quindi io devo desumere che a lui non spetti tanto il data entry, quanto il compito di produrre quel particolare Report. Perciò da qui la mia proposta di realizzare dinamicamente il Foglio Report con VBA. Non "facile", ma certamente fattibile.

Comunque, mi pare di capire che ci sia ancora parecchia indecisione, perciò, Speed399, magari dormici sopra e facci sapere come intendi procedere.


rispondo ai 2 MA:
1- si tecnicamente se gli arriva il file così la tua è l'unica soluzione, però nn mi pareva così chiaro che effettivamente ha quel foglio...boh deve dirlo lui :D
2- beh lui cmq credo abbia già tutti i dati per cui copiare e incollare i codici negozi e articoli nn è difficile :) diverso se deve reinserire tutti gli ordini :)

Preciso un attimo di più

Il foglio l'ho ricreato da 0 ma come struttura è esattamente identico a quello che mi arriva direttamente da terze parti (le uniche variabili che non ho ancora precisato a parte il numero di colonne/articoli variabili è che delle volte non mettono la riga con la quantità dei pezzi per articolo e potrebbe non servire .. cioè in quel caso se io aggiungo una riga e la lascio vuota e lo script lascia vuoto il relativo spazio sul report va benissimo)

Copiare e incollare non è difficile ma è molto lungo, più che altro perchè quando arriva un ordine nuovo non è un "aggiornamento" ma devo ricreare tutto da 0, perchè talvolta i negozi non sono tutti, talvolta gli articoli sono pochi ma completamente nuovi ecc

Quindi la soluzione più corretta per le necessità per me è chiara

zuper
12-04-2010, 00:09
posta così l'unica soluzione è quella di marco :)

Speed399
12-04-2010, 00:17
la soluzione access non era male se fosse stata tipo la gestione di un magazzino o stock assegnato per negozio, in quel caso si sarebbe stato comodo crearsi il database e poi man mano aggiornarselo soltato ma purtroppo non è così e ogni foglio che arriva è un ordine/spedizione nuova completamente distaccato da quelli precedenti e a se stante