macro copiere range excel 1 in range excel 2

Avatar utilizator
gecs
Moderator
Moderator
Mesaje: 2311
Membru din: Sâm Aug 15, 2009 10:05 am
Localitate: Bucuresti

Re: macro copiere range excel 1 in range excel 2

Mesaj de gecs » Mar Feb 09, 2010 6:38 pm

1. Pai daca una e "zilnica" si mai are si functia TODAY() in coloana "DATA", iar "centralizator" are toate datele dintr-o luna, se mai sustine supozitia?
2. Daca omu' zice ca "Zilnic se schimba datele din casute" (in al doilea lui mesaj) nu e clar ca "SE SCHIMBA", adica NU se adauga?

E posibil sa fi inteles eu gresit... :oops:

smcsa
Mesaje: 2805
Membru din: Mar Sep 29, 2009 7:29 pm
Localitate: Timisoara

Re: macro copiere range excel 1 in range excel 2

Mesaj de smcsa » Mar Feb 09, 2010 6:55 pm

Hat, eu acum am vazut TODAY() :shock: Ciudat mod de lucru. Adica deschid in fiecare zi "Productivitate zilnica", completez si ce fac dupa aia ? Inchid fara salvare ? Si daca nu o fac azi, ca n-apuc, maine ce fac ? Ca am TODAY() Pai atunci de ce nu completez direct in "Productivitate" ?
Poate ne lamureste TODAY()+1 (adica maine) :D

Avatar utilizator
gecs
Moderator
Moderator
Mesaje: 2311
Membru din: Sâm Aug 15, 2009 10:05 am
Localitate: Bucuresti

Re: macro copiere range excel 1 in range excel 2

Mesaj de gecs » Mar Feb 09, 2010 7:21 pm

smcsa scrie:Hat, eu acum am vazut TODAY() :shock: Ciudat mod de lucru. Adica deschid in fiecare zi "Productivitate zilnica", completez si ce fac dupa aia ? Inchid fara salvare ? Si daca nu o fac azi, ca n-apuc, maine ce fac ? Ca am TODAY() Pai atunci de ce nu completez direct in "Productivitate" ?
Poate ne lamureste TODAY()+1 (adica maine) :D
Si maine TODAY()+1 vazut de azi devine poimaine si tot asa... :lol:

Probabil ca TODAY() "functioneaza" doar daca inchid CU salvare - altfel, D-zeu cu mila, ca daca uita sa completeze intr-o zi, raman aceleasi date pana le modifica...

Dar poate ca e special facut asa, ca sa aiba niste date "convenabile" care sa fie preluate la fel in fiecare zi ;)

Probabil ca nu se completeaza in "productivitate" pentru ca nu toata lumea are acces la el, dar depinde de cei care au acces daca se prind ca pot "inghiti" aceleasi date datorita lui TODAY... ;)

Bogdan
Mesaje: 27
Membru din: Mar Oct 20, 2009 11:10 am

Re: macro copiere range excel 1 in range excel 2

Mesaj de Bogdan » Mie Feb 10, 2010 12:41 pm

:( ... de aceea un macro ar fi fost mai indicat . Conditia de la inceputul codului ar trebuii sa-mi verifice casuta A3 din produttivita giornaliera si in functie de ce scris acolo sa-mi actualizeze datele in produttività ( asa cum spuneam : daca in produttivita giornaliera imi apare 04 Ianuarie tot randul ar trebuii actualizat si in file-ul produttività , in cazul nostru pe tot randul 7 )

daca aveam data de 08 ianuarie pe file-ul produttività ar trebuii actualizate / copiate datele ( tot randul 3 de pe produttività girnaliera ) dar de data aceasta pe randul 11


ma gandeam ca ar trebuii sa fie o conditie in macro ( IF ... then , si tot asa in functie de data )

multumesc mult si o zi buna tuturor

Avatar utilizator
gecs
Moderator
Moderator
Mesaje: 2311
Membru din: Sâm Aug 15, 2009 10:05 am
Localitate: Bucuresti

Re: macro copiere range excel 1 in range excel 2

Mesaj de gecs » Vin Feb 12, 2010 12:08 pm

In fisierul atasat ai o varianta de cod vba care face cam ce vrei tu (sper). Oricum trebuie testata mai intai pe fisiere de proba si apoi, dupa remediarea eventualelor probleme, s-o folosesti cu fisierele reale.

In fisierul atasat, "produttività_01.xls" (o copie a fisierului tau original "produttività.xls") am adaugat o foaie de calcul care se numeste "Sheet1". In aceasta foaie trebuie scrise in celulele A1, B1 si C1 urmatoarele date:
- in A1: calea catre fisierul de unde se citesc datele - calea trebuie sa se termine cu un backslash ("\"), ca cea care este scrisa acum in fisier, dar aia este calea catre fisierul-sursa din locatia de pe discul meu, asa ca e musai s-o modifici;
- in B1: numele fisierului-sursa;
- in C1: numele foii de unde se citesc datele.

Tot in aceasta foaie, in celula C2 trebuie scrisa denumirea foii de calcul unde se scriu datele, pentru ca inteleg ca acest fisier va avea cate o foaie pentru fiecare luna, sau oricum denumirea foii unde se copiaza datele se va schimba de la luna la luna.

Aceasta foaie, "Sheet1", poti s-o ascunzi, daca vrei.

In procedura Init_Location se scriu referintele la cele 8 celule de unde se citesc datele, iar scrirea valorilor acestor celule in fisierul-destinatie se face (in procedura Copy_Data_From_File) in coloanele omoloage ale foii al carei nume e inscris in Sheet1!C2, pe randul unde a fost gasita data corespunzatoare. Daca modifici aceste referinte, fie ca schimbi locatia valorilor care trebuie copiate, fie ca nu se mai respecta corespondenta coloana-coloana intre sursa si destinatia valorilor, codul va trebui adaptat in consecinta.

Procedura de copiere a valorilor din fisierul-sursa ruleaza automat si silentios la deschiderea fisierului "produttività_01.xls", asa ca nu mai e nevoie de vreun buton pentru lansarea ei (daca asta era scopul nasturelui :) ). Logica procedurii de copiere a datelor, asa cum e acum, spune ca datele se copiaza numai daca pe coloana D din "produttività_01.xls", din foaia lunii curente, pe randul unde a fost gasita data, nu e inscris nimic, sau e inscrisa valoarea 0. In aceasta situatie, daca vrei sa preiei din nou datele din fisierul sursa, stergi valorile inscrise in fisierul "produttività_01.xls" pe cele 8 coloane de pe randul cu data curenta, salvezi si redeschizi fisierul. Se poate face si ca datele sa fie suprascrise, adica sa nu se testeze daca exista deja date pe cele 8 coloane pentru data curenta.

Nu uita sa activezi macro-urile la deschiderea fisierului. Ca sa incepi testarea deschizi fisierul "produttività_01.xls" fara activarea macro-urilor, modifici datele din Sheet1, eventual stergi valorile inscrise pe cele 8 coloane (sunt valori de la testele pe care le-am facut eu), salvezi si inchizi fisierul. In fisierul-sursa, in cele 8 celule scrii valorile pe care vrei sa le vezi copiate si salvezi si inchizi - programul considera fisierul-sursa inchis in momentul in care face copierea. Deschizi fisierul "produttività_01.xls", activezi macro-urile si vezi daca functioneaza.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Închis

Înapoi la “Visual Basic for Application (VBA) cu Excel - Intrebari tehnice”