Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Info Coronavirus/Vaccinare vs Fake News

Anul asta vinerea neagra chiar va...

banda alergat acasa

Reprezentanța B.B.C. (Brown, Bove...
 Analizele Medicale, intre fericir...

Recomandare carcasa si sursa cu pwm

Cum s-ar putea face plafonarea pr...

Preparing automatic repair diagno...
 Planul Samsung pentru urmatorii 5...

videoproiector vs oricare display

Produse comandate din china (wish...

probleme mașina de spalat rufe
 Magazine care vand bere la keg

Proiect ciudat legat de metaverse...

Daniel Fenechiu: Nu vom aște...

Transfer in acelasi pc cu FTP
 

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

Bun venit pe Forumul Softpedia!

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