Buongiorno a tutti,
sono nuovo del forum e scrivo perchè sono (purtroppo) completamente ignorante in materia di programmazione. Non conosco la sintassi di VBA e devo scrivere una macro abbastanza complicata (per me).
So che non è carino piombare dal nulla e chiedere favori ma tant'è
Le operazione che ho bisogno di eseguire sono, in sequenza, le seguenti:
Supponiamo di avere un classico file con 3 fogli.
FASE1: partendo dalla riga "2" di "Foglio1" esegui le seguenti operazioni
leggi un codice alfanumerico (formattato come testo) riportato in colonna "E"
leggi una quantità (formattata come numero) riportato in colonna "J"
leggi una data (formattata come data) riportato in colonna "M"
passa alla FASE successiva
FASE2: partendo dalla riga "2" di "Foglio2 esegui i seguenti CHECK
CHECK1: confronta il codice alfanumerico di "Foglio1" con un altro codice alfanumerico (formattato come testo) riportato in colonna "L"
se il codice non corrisponde, prosegui nella "scansione" passando alla riga successiva e ripetendo il CHECK1
se corrisponde passa al CHECK successivo
CHECK2: calcola la differenza tra il valore della colonna "X" meno il valore della colonna "Z" della riga di "Foglio2" che ha superato CHECK1
formatta come numero il valore ottenuto dalla differenza (i due valori in "X" e "Z" sono formattati come testo)
confronta la quantità di "Foglio1" con la differenza appena calcolata
se le due quantità non corrispondono, prosegui nella "scansione" passando alla riga successiva e ripartendo da CHECK1
se corrispondono passa al CHECK successivo
CHECK3: se la riga che rispetta sia CHECK1 che CHECK2 è già stata "usata", passa alla riga successiva e riparti da CHECK1
(mi spiego: se su "Foglio1" esistono due combinazioni codice/quantità uguali, anche su "Foglio2" ci saranno due combinazioni codice/quantità uguali. Ciò che voglio evitare è che la macro stupidamente, leggendo il foglio dall'alto verso il basso, finisca con l'assegnare sempre il primo risultato valido trovato ignorando gli altri)
se la riga non è stata mai "usata" esegui le seguenti operazioni
leggi un codice numerico (formattato come testo) riportato in colonna "C"
leggi un codice numerico (formattato come testo) riportato in colonna "D"
passa alla FASE successiva
FASE3: partendo dalla riga "2" di "Foglio3" esegui le seguenti operazioni
scrivi in colonna "A" il codice numerico letto in colonna "C" al punto sopra
scrivi in colonna "B" il codice numerico letto in colonna "D" al punto sopra
scrivi in colonna "C" la data del Martedì della settimana successiva rispetto alla settimana in cui cade la data di "Foglio1"
formatta la data suddetta come testo e nel seguente modo "ggmmaaaa" (es. 10/06/2011 deve diventare 10062011)
FASE4: riparti da FASE1, questa volta leggi le informazioni presenti sulla riga "3" di "Foglio1"
la FASE2 riparte sempre dalla riga "2"
la FASE3 riparte invece dalla riga "3"
FASE5: il ciclo termina nel momento in cui incontro la prima cella vuota della colonna "E" di "Foglio1"
NOTA: se un codice non dovesse avere corrispondenze non voglio che lo script si blocchi, ma che semplicemente questo passi al codice successivo.
Perdonate il WOT, spero di essere stato abbastanza chiaro. Per riassumere: voglio che in maniera iterativa la macro prenda il codice sul foglio1 e cerchi una corrispondenza sul foglio2, se il codice corrisponde controllo la quantità, se la quantità corrisponde prelevo 3 celle con i dati veri e propri dalle righe di foglio1 e foglio2 interessate e li copio su foglio3. Attenzione ai valori doppi, ad ogni combinazione codice/quantità di foglio2 deve corrispondere una sola combinazione codice/quantità di foglio1 e viceversa.
Tanta tanta tanta ma tanta tanta stima ed ammirazione a chi saprà aiutarmi o per lo meno indirizzarmi sulla strada giusta.
Graziegraziegrazie!!
Bruder