Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Hota cu diametrul tubului de evac...

Yamaha ax 470

Independenta financiara, pensiona...

Upgrade / inlocuire PC
 Cablu cu inel magnetic

Setari temperatura centrala termica

Anomalie electrica/Interferenta

ZVON: Mihai Bendeac a semnat cu P...
 Prea multi bani bagați in ma...

Usa garaj Nice Spin se deschide p...

Recomandare TV 2500-3000 lei

Sala de sport pentru baschet?
 HP Pavilion 14-ec1008nq Ryzen 5 5...

Mai am nevoie de antivirus?

Viata de noapte Asia

Cum pot vedea inregistrarile facu...
 

Cod VBA Excel - copiere informatii in workbook

- - - - -
  • Please log in to reply
26 replies to this topic

#19
sandra_m

sandra_m

    New Member

  • Grup: Members
  • Posts: 19
  • Înscris: 03.12.2008

View Postgecs, on 5th October 2010, 15:18, said:

Formula mi se pare cam ciudata, dar asta o putem discuta separat.

Ai vrea sa-ti centralizeze si inregistrarile unde apare sirul "scadenta depasita"? Daca asta e ideea, au as face o formula care sa afiseze un sir de caractere care contine cuvantul "scadenta" pentru orice inregistrare o vrei centralizata. Macro-ul din fisierul atasat asta face. In plus, formula despre care vorbeai mai sus am adaptat-o sub forma:

=IF(LEN($E2)=0,"",IF(LEN($F2)=0,IF(TODAY()=$E2,"factura scadenta",IF(TODAY()<$E2,"","scadenta depasita")),IF(ISNUMBER($F2),IF($F2>$E2,"scadenta depasita",""),"")))
si am copiat-o in toate tabelele.

Attachment Facturi_...._cl1_R3.rar

Din nou ai gasit varianta perfecta de rezolvare. Daca ma mai descurci cu o chestie ma declar super multumita: cum sa fac sa ruleze macro-ul si daca redenumesc foile de lucru? Cu ce ar trebui sa schimb cli_txt & i ca sa nu-mi dea eroare? As vrea in loc de client 1, client 2, etc. sa pun numele lor. Am incercat cu un cod vba de inlocuire in foaia "scadente" client 1 cu nume 1, client 2 cu nume 2 dar de la client 11 imi trece nume11...

View Postsandra_m, on 5th October 2010, 15:37, said:

Din nou ai gasit varianta perfecta de rezolvare. Daca ma mai descurci cu o chestie ma declar super multumita: cum sa fac sa ruleze macro-ul si daca redenumesc foile de lucru? Cu ce ar trebui sa schimb cli_txt & i ca sa nu-mi dea eroare? As vrea in loc de client 1, client 2, etc. sa pun numele lor. Am incercat cu un cod vba de inlocuire in foaia "scadente" client 1 cu nume 1, client 2 cu nume 2 dar de la client 11 imi trece nume11...
Am mai observat o chestie: formula pentru scadenta depasita nu tine cont de existenta unei informatii in coloana incasare. Daca apare o data la incasare nu vreau sa-mi mai afiseze "scadenta depasita", pentru ca inseamna ca factura este incasata.

#20
gecs

gecs

    Member

  • Grup: Members
  • Posts: 795
  • Înscris: 12.02.2008

View Postsandra_m, on 5th October 2010, 15:48, said:

Din nou ai gasit varianta perfecta de rezolvare. Daca ma mai descurci cu o chestie ma declar super multumita: cum sa fac sa ruleze macro-ul si daca redenumesc foile de lucru? Cu ce ar trebui sa schimb cli_txt & i ca sa nu-mi dea eroare? As vrea in loc de client 1, client 2, etc. sa pun numele lor. Am incercat cu un cod vba de inlocuire in foaia "scadente" client 1 cu nume 1, client 2 cu nume 2 dar de la client 11 imi trece nume11...


Am mai observat o chestie: formula pentru scadenta depasita nu tine cont de existenta unei informatii in coloana incasare. Daca apare o data la incasare nu vreau sa-mi mai afiseze "scadenta depasita", pentru ca inseamna ca factura este incasata.
Iti propun urmatoarea rezolvare:
- in tabelul centralizator redenumim coloana Client in Foaie Client si dupa ea mai introducem o coloana pe care o denumim Client si acolo va fi afisat numele;
- mai adaugam o foaie de calcul numita Clienti in care facem un tabel in care pe prima coloana va fi numele foii si pe a doua coloana numele clientului;
- tabelul din noua foaie va fi intr-un range dinamic cu pana la 100 de clienti (daca vrei mai multi iti spun unde si ce sa modifici);
- in coloana noua inserata in tabelul centralizator punem o formula care returneaza numele clientului cu un INDEX+MATCH din foaia Clienti

Formula tine cont de informatie, dar daca data inscrisa in coloana Incasare e mai mare decat data din coloana Scadenta afiseaza "scadenta depasita", chiar daca e o factura cu scadenta mai veche decat TODAY() - mi se pare normal si am crezut ca asta e informatia pe care o vrei. Daca insa in coloana Incasare e inscris un sir de caractere (ai in unele celule scris "da"), formula returneaza sirul vid ("").

In fisierul atasat gasesti versiunea despre care vorbeam mai sus.

In foaia Clienti completezi pe coloana A numele foii de calcul a clientului, iar pe coloana B numele reale ale clientilor. Daca adaugi inregistrari in acel tabel va trebui sa adaugi si foaia de calcul corespunzatoare. De asemenea, daca modifici numele unei foi de calcul trebuie sa faci modificarea si in foaia Clienti si invers. Eu am modificat numele foii client 1 in xxx, am modificat si in tabelul din foaia Clienti si acum in centralizator apare xxx in loc de Client 1, iar la numele clientului apare Vasile, fiindca asa am scris in foaia Clienti :)

Acum macro-ul numara si citeste cate foi de clienti sunt in fisier din tabelul din foaia Clienti, asa ca ai grija atunci cand modifici sa existe corespondenta perfecta intre numele si numerul foilor pentru clienti si ce scrie in acel tabel: daca sunt mai putine foi inscrise in tabelul Clienti, acele foi nu vor fi luate in seama de macro, daca sunt mai multe foi inscrise in tabel, sau numele foilor nu corespund, macro-ul va da eroare.

Attached File  Facturi_scadente_Clienti_modif._cl1_R4.rar   306.42K   14 downloads

Edited by gecs, 05 October 2010 - 15:31.


#21
sandra_m

sandra_m

    New Member

  • Grup: Members
  • Posts: 19
  • Înscris: 03.12.2008

View Postgecs, on 5th October 2010, 16:30, said:

Iti propun urmatoarea rezolvare:
- in tabelul centralizator redenumim coloana Client in Foaie Client si dupa ea mai introducem o coloana pe care o denumim Client si acolo va fi afisat numele;
- mai adaugam o foaie de calcul numita Clienti in care facem un tabel in care pe prima coloana va fi numele foii si pe a doua coloana numele clientului;
- tabelul din noua foaie va fi intr-un range dinamic cu pana la 100 de clienti (daca vrei mai multi iti spun unde si ce sa modifici);
- in coloana noua inserata in tabelul centralizator punem o formula care returneaza numele clientului cu un INDEX+MATCH din foaia Clienti

Formula tine cont de informatie, dar daca data inscrisa in coloana Incasare e mai mare decat data din coloana Scadenta afiseaza "scadenta depasita", chiar daca e o factura cu scadenta mai veche decat TODAY() - mi se pare normal si am crezut ca asta e informatia pe care o vrei. Daca insa in coloana Incasare e inscris un sir de caractere (ai in unele celule scris "da"), formula returneaza sirul vid ("").

In fisierul atasat gasesti versiunea despre care vorbeam mai sus.

In foaia Clienti completezi pe coloana A numele foii de calcul a clientului, iar pe coloana B numele reale ale clientilor. Daca adaugi inregistrari in acel tabel va trebui sa adaugi si foaia de calcul corespunzatoare. De asemenea, daca modifici numele unei foi de calcul trebuie sa faci modificarea si in foaia Clienti si invers. Eu am modificat numele foii client 1 in xxx, am modificat si in tabelul din foaia Clienti si acum in centralizator apare xxx in loc de Client 1, iar la numele clientului apare Vasile, fiindca asa am scris in foaia Clienti :)

Acum macro-ul numara si citeste cate foi de clienti sunt in fisier din tabelul din foaia Clienti, asa ca ai grija atunci cand modifici sa existe corespondenta perfecta intre numele si numerul foilor pentru clienti si ce scrie in acel tabel: daca sunt mai putine foi inscrise in tabelul Clienti, acele foi nu vor fi luate in seama de macro, daca sunt mai multe foi inscrise in tabel, sau numele foilor nu corespund, macro-ul va da eroare.

Attachment Facturi_...._cl1_R4.rar

Super rezolvarea cu denumirea clientilor. "Scadenta depasita" trebuie sa apara la facturile care au fost scadente si in dreptul coloanei "incasare" nu apare nici o informatie (in foaia mea sunt celulele albastre). Daca factura este incasata trec data la care se incaseaza sau "da" (pana aflu exact data la care s-a incasat, conform extraselor de cont).

#22
gecs

gecs

    Member

  • Grup: Members
  • Posts: 795
  • Înscris: 12.02.2008
Pentru problema cu returnarea sirului "scadenta depasita" modifici formula in:
=IF(LEN($E2)=0,"",IF(LEN($F2)>0,"",IF(TODAY()=$E2,"factura scadenta",IF(TODAY()<$E2,"","scadenta depasita"))))


#23
sandra_m

sandra_m

    New Member

  • Grup: Members
  • Posts: 19
  • Înscris: 03.12.2008

View Postgecs, on 5th October 2010, 17:38, said:

Pentru problema cu returnarea sirului "scadenta depasita" modifici formula in:
=IF(LEN($E2)=0,"",IF(LEN($F2)>0,"",IF(TODAY()=$E2,"factura scadenta",IF(TODAY()<$E2,"","scadenta depasita"))))
Acum e totul perfect. Multumesc tare mult pentru ajutor.
Alexandra

#24
gecs

gecs

    Member

  • Grup: Members
  • Posts: 795
  • Înscris: 12.02.2008

View Postsandra_m, on 5th October 2010, 18:25, said:

Acum e totul perfect. Multumesc tare mult pentru ajutor.
Alexandra
Cu placere.
Despre Excel si celelalte programe Office poti sa gasesti informatii foarte utile si aici.

#25
sandra3112

sandra3112

    New Member

  • Grup: Members
  • Posts: 9
  • Înscris: 29.03.2007

View Postgecs, on 5th October 2010, 18:35, said:

Cu placere.
Despre Excel si celelalte programe Office poti sa gasesti informatii foarte utile si aici.

:(( Mai am o problema. Dupa ce am definitivat tabelele si am modificat formula pentru info scadenta la rularea macro-ului apare o noua eroare: run-time error '1004': application-defined or object-defined error si imi indica randul
Selection.FormulaLocal = "=IF(LEN($A" & j & ")=0,"""",INDEX(clienti,MATCH($A" & j & ",INDEX(clienti,,1),0),2))"
din codul vba.

#26
gecs

gecs

    Member

  • Grup: Members
  • Posts: 795
  • Înscris: 12.02.2008

View Postsandra3112, on 5th October 2010, 19:51, said:

:(( Mai am o problema. Dupa ce am definitivat tabelele si am modificat formula pentru info scadenta la rularea macro-ului apare o noua eroare: run-time error '1004': application-defined or object-defined error si imi indica randul
Selection.FormulaLocal = "=IF(LEN($A" & j & ")=0,"""",INDEX(clienti,MATCH($A" & j & ",INDEX(clienti,,1),0),2))"
din codul vba.
Chiar am vrut sa modific linia aia care introduce o formula fiindca se poate scrie direct valoarea din tabelul Clienti. S-ar putea insa ca eroarea sa nu fie legata de linia cu formula.

Attached File  Facturi_scadente_Clienti_modif._cl1_R5.rar   299.46K   44 downloads

#27
sandra3112

sandra3112

    New Member

  • Grup: Members
  • Posts: 9
  • Înscris: 29.03.2007

View Postgecs, on 5th October 2010, 20:03, said:

Chiar am vrut sa modific linia aia care introduce o formula fiindca se poate scrie direct valoarea din tabelul Clienti. S-ar putea insa ca eroarea sa nu fie legata de linia cu formula.

Attachment Facturi_...._cl1_R5.rar

Acum totul este in ordine, multumesc.

Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate