Numar curent VBA Excel

adof
Mesaje: 438
Membru din: Mie Iul 14, 2010 12:42 pm
Localitate: Sibiu

Re: Numar curent VBA Excel

Mesaj de adof » Mar Iun 26, 2012 10:06 am

sal

nu trebuie să te superi că pun tot felul de situaţii şi încerc tot felul de variante

am învăţat până acum ca orice lucru are un scop şi că îmi este de folos mie sau celorlalţi la un moment dat

orice situaţie are mai multe feluri de a fi rezolvata sau poate nu exista soluţii dacă nu se îndeplinesc anumite condiţii

în legătură cu organizarea informaţiei
îţi poţi organiza informaţie în funcţie de posibilităţile care ţi le oferă programul (cu nr. crt. sau fără nr.crt, înscris automat)
în Exel într-un anumit fel , în Access în alt fel

în legătură cu explicaţia CARE dintre cele n coloane pe care le aveţi va fi cea REALA mă gândeam că se POATE face ca şi în cazul în care s-a rezolvat cu Nr. crt. care nu este stabilit într-o anumita coloană sau anumită celulă

doar am întrebat pentru că NU ŞTIU cum se face


mulţumesc

IPP
Moderator
Moderator
Mesaje: 3764
Membru din: Mie Iul 29, 2009 7:26 am
Localitate: Cluj-Napoca

Re: Numar curent VBA Excel

Mesaj de IPP » Mar Iun 26, 2012 6:53 pm

Buna ziua

Nu se pune problema atat de suparare ci de senzatia "munca in zadar" pentru ca cineva nu stie ce vrea. Teoretic, inainte de a se ajunge la un macro ar fi trebuit sa analizati datele problemei si sa veniti cu o formulare si cerinte clare (este o solicitare in litera regulamentului, de altfel). Chiar daca am folosit un ton mai apasat ar trebui sa vedeti cele spuse de mine si ca pe niste sfaturi utile pentru situatia in care veti apela vreodata la servicii specializate. Acolo nu va mai fi vorba de "suparare" ci de costuri suplimentare.
In fine, m-am decis sa va propun o noua versiune mai mult pentru faptul ca, in afara de faptul ca mi s-a parut o solicitare interesanta si cu potential bun/util si pentru alte situatii, am avut timpul necesar, nu a trebuit sa fac modificari majore sau sa am zeci de linii de cod.

Da, o problema poate avea mai multe modalitati de rezolvare si de aceea este bine ca exista acest forum.

Indiferent de unde aduceti informatia in Excel, nu cunosc program care sa permita rearanjarea mai rapida si facila a informatiei prin mutare/copiere in bloc de celule/randuri/coloane. Si acest lucru poate fi folosit din plin daca aveti de facut prelucrari intermediare. Si eu am situatii frecvente in care modul in care imi este exportata informatia din "softul-mama" este nesatisfacator pentru ce am de facut. In acest caz, in loc sa fac formule kilomentrice pentru a-mi extrage niste informatii de interes prefer sa rearanjez rapid ce trebuie si sa folosesc o singura formula de cautare.

Atasat aveti spre testare un fisier.

In esenta este vorba de inserarea numarului curent pornind de la coordonatele date de celula in care se afla textul Nr.crt si coloana cu celula activa. Am folosit urmatorul cod:

Cod: Selectaţi tot

Sub InsertNrCrt()

'IPP - 26.06.2012
'CTRL+SHIFT+N

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
    
 Dim cNrCrt As Range
 Dim RowNrCrt As Long
 Dim ClnNrCrt As Integer
 
    Set cNrCrt = Cells.Find(What:="nr*crt", After:=Range("A1"), LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False).Offset(1, 0)
    
 RowNrCrt = cNrCrt.Row
 ClnNrCrt = cNrCrt.Column
    
Dim ClnDate
 ClnDate = ActiveCell.Column

Dim lRow As Long
 lRow = Cells(65536, ClnDate).End(xlUp).Row
 
Dim NrCrt As Long
 NrCrt = 0

If Len(Cells(RowNrCrt, ClnDate)) <> 0 And IsNumeric(Cells(RowNrCrt, ClnDate).Value) = True Then
    Cells(RowNrCrt, ClnNrCrt).Value = 0
    RowNrCrt = RowNrCrt + 1
End If

Do Until RowNrCrt = lRow + 1
    If Len(Cells(RowNrCrt, ClnDate)) <> 0 Then
        NrCrt = NrCrt + 1
            Cells(RowNrCrt, ClnNrCrt) = NrCrt
            Else: Cells(RowNrCrt, ClnNrCrt) = ""
    End If
    RowNrCrt = RowNrCrt + 1
Loop

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub

Pentru testare: deschideti fisierul atasat, activati macro si (inainte de a rula macro) aveti grija sa fie selectata (cel putin) o celula aflata pe coloana in care se gasesc datele pentru care se doreste inserarea nr.crt. Rulati macro

Daca doriti, 3 scenarii de test:
1.Selectati orice celula de pe coloana D, rulati macro
2.Selectati orice celula de pe coloana E, rulati macro
3.Selectati oric celula de pe coloana F, rulati macro

In aceasta varianta daca selectati celule care nu au nimic de-a face cu informatiile (=selectati celula goala aflata pe o coloana goala) probabil vi se va bloca putin calculatorul si veti obtine o eroare in cod.

IP
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

adof
Mesaje: 438
Membru din: Mie Iul 14, 2010 12:42 pm
Localitate: Sibiu

Re: Numar curent VBA Excel

Mesaj de adof » Mie Iun 27, 2012 12:29 pm

Buna ziua

În primul rând mulţumesc pentru cod, fişierul funcţionează super

Nu este muncă în zadar vă asigur
am muncit de prea multe ori la renumerotat tabele şi când ai câteva sute de înregistrări şi ştergi vro câteva zeci sau introduci altele
Şi trebuie să tragi în jos (am folosit tot felul de formule în celule)
=COUNT($B$9:$B13)+1
=IF(F10="";"";COUNT($B$9:$B25)+1)
=IF(H9="";H8+1;H9+1)
=IF(K10="";"";IF(J9="";J8+1;J9+1))
=IF(M10="";"";L9+1)

De asemenea tragi în jos sau în sus şi la pagina care preia o parte din înregistrări şi tot aşa

Eu ştiu ce am vrut şi am formulat problemele pe rând (este o solicitare in litera regulamentului, de altfel). Nu toate odată .
Pentru ca în alt topic am formulat mai multe probleme deodată şi mi s-a spus că nu aşa se face deoarece nu mai sunt cerinţe clare.

Sunt de acord ca exprimarea şi limba română nu sunt punctul meu forte ;)

Dar aşa se pot observa şi deosebirile de cod şi pot înţelege şi începătorii ca mine despre ce este vorba

Cum se caută ceva în pagina
Cum se scrie de la celula găsita în jos
Cum se scrie daca este ceva în celula din dreapta
Cum se scrie daca se sau şterg introduc coloane
Cum se scrie dacă se sau şterg introduc rânduri
Cum se scrie daca este ceva în a doua celula din dreapta sau a treia celulă (situaţie care aţi identificat-o dumneavoastră deoarece sunt cazuri când în prima celulă sau a doua din dreapta nu este nimic şi aţi găsit una din modalităţile de rezolvare)

Eu vroiam sa vă întreb cum pot fi numerotate toate rândurile care au informaţii pe cele trei coloane sau pe toate rândurile din tabel, deoarece nr colaonelor poate fi determinat din câte celule sunt ocupate în dreapta Nr. Crt. sau prin cifrele din rândul care începe cu 0 care este primul rând după Nr. Crt. care de asemenea se numerotează singur daca în celula din stânga este nr. crt şi deasupra este scris ceva find capulde tabel. (şi uite aşa numai în fraza asta am amestecat vreo trei situaţii care nu mai sunt cerinţe clare).


Mai am încă vreo 3 probleme cu care m-am întâlnit faţă de cele de mai sus

Una dintre care ele care mi-a dat bătăi de cap ele ar fi :

Cu pot fi numerotate cu Nr . Crt .
numai rândurile care sunt afişate iar la cele ascunse să nu fie numerotate

uf atâta text nu am mai sris de mult :lol:
multumesc

IPP
Moderator
Moderator
Mesaje: 3764
Membru din: Mie Iul 29, 2009 7:26 am
Localitate: Cluj-Napoca

Re: Numar curent VBA Excel

Mesaj de IPP » Mie Iun 27, 2012 3:00 pm

Buna ziua

Daca aveti randuri (in totalitate) libere in cadrul unei liste/tabel inseamna ca incalcati o regula elementara si fundamentala de organizare a datelor si nu puteti vorbi (din punct de vedere al Excelului) despre un tabel/lista. Nu spun ca nu se poate face ceva (de ex. Stergere manuala sau via macro a randurilor goale). Spun ca totul poate deveni mult mai complicat daca se lucreaza pe o astfel de structura.

Din punctul meu de vedere, la cum aveti (ne)organizata informatia, este exclusa orice varianta de rulare automata a unui cod macro (adica orice care „sa numere singur daca...”). Este parerea mea si raman la ea. Poate va veni cineva cu o solutie alternativa (chiar as fi curios sa o vad) care sa ma contrazica. Oricum, din partea mea sa nu asteptati o astfel de solutie (sau incercare de solutie) pentru ca nu vad decat potentialul destructiv al unei astfel de abordari. (aici includ si blocarea calculatorului)

Niste randuri pot fi ascunse folosind filtrarea sau folosind optiunea de Hide. In ciuda aparentelor nu e chiar acelasi lucru. Am vazut situatii in care ascunderea randurilor aveau doar scopul de a prezenta vizual un tabel in mod compact fara a se tine cont ca din punct de vedere al prelucrarii datelor acest lucru e ceva total contraindicat.
... Si daca aveti randuri ascunse dar care contin informatie pe cel putin una din cele n coloane atunci?

Nu fac niciun fel de promisiuni pe viitor. Vreau doar sa fac o observatie: macro nu va putea la nesfarsit sa corecteze niste lipsuri elementare de cunostinte si prelucrare in Excel sau daca o va face, costurile (daca nu de bani) de timp, energie pot deveni nejustificate.

IP

adof
Mesaje: 438
Membru din: Mie Iul 14, 2010 12:42 pm
Localitate: Sibiu

Re: Numar curent VBA Excel

Mesaj de adof » Joi Iun 28, 2012 8:59 am

sal

multumesc pt raspuns

sunt de acord cu dumneavoastră la unele puncte de vedere

haideti totusi sa vedem situaţiile pe rând si dacă se pot rezolva înrt-un anumit fel

daca aveţi timp va rog să ma ajutaţi cu privire la numerotare rânduri numai pentru rândurile afişate

mulţumesc frumos

IPP
Moderator
Moderator
Mesaje: 3764
Membru din: Mie Iul 29, 2009 7:26 am
Localitate: Cluj-Napoca

Re: Numar curent VBA Excel

Mesaj de IPP » Joi Iun 28, 2012 9:21 am

Buna ziua

Pentru inserare numar curent, mai putin in dreptul randurilor ascunse (folosind metoda selectare, click dreapta pe etichetele randurilor, Hide), testati fisierul atasat

IP
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

adof
Mesaje: 438
Membru din: Mie Iul 14, 2010 12:42 pm
Localitate: Sibiu

Re: Numar curent VBA Excel

Mesaj de adof » Dum Iul 01, 2012 1:25 pm

sal

merge pt răndurile ascunse
mersi

cum se poate sorta dupa coloana C
daca râdurile sunt selectate cu filtrare automată

dupa coloana H merge super

atasez un fisier exemplu
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

IPP
Moderator
Moderator
Mesaje: 3764
Membru din: Mie Iul 29, 2009 7:26 am
Localitate: Cluj-Napoca

Re: Numar curent VBA Excel

Mesaj de IPP » Dum Iul 01, 2012 5:09 pm

adof scrie:
cum se poate sorta dupa coloana C
daca râdurile sunt selectate cu filtrare automată

dupa coloana H merge super
Ati incercat sa faceti in acelasi fel cum ati facut si pentru coloana H?

In alta ordine de idei: ma gandesc ca stiti ca, in cazul in care aveti cel putin un rand in totalitate liber in cadrul datelor, in caz de sortare fara selectare prealabila a intregului domeniu de celule, sortarea se va realiza pana la primul rand liber. De asemenea, in caz de filtrare, pentru Excel datele luate in considerare se opresc la primul rand in totalitate liber chiar daca mai exista ceva si dupa acela

Daca doriti sa puteti prelucra datele (folosind instrumentele puse la dispozitie de Excel) atunci ar trebui sa stiti ca acestea trebuie sa fie completate in totalitate, pentru toate celulele care vor fi implicate la un moment dat. Asadar o persoana care are trei copii trebuie sa aiba completata in tabel aceeasi informatie privitoare la persoana sa in toate cele 3 randuri. Altfel nu va functiona cu rezultate bune nici filtrarea (veti vedea doar numele copilului care are in dreptul sau completata informatia despre parinte in caz de filtrare dupa nume parinte), nici pivot table, nici sortarea. Da, este vorba de informatie redutanta dar daca nici Excelul nu are instrumente de completare rapida a informatiei (sau la o adica se poate face un macro si pentru asta) atunci nu stiu.

adof
Mesaje: 438
Membru din: Mie Iul 14, 2010 12:42 pm
Localitate: Sibiu

Re: Numar curent VBA Excel

Mesaj de adof » Dum Iul 01, 2012 10:20 pm

sal

pe coloana H imi arata citi copii sunt

pe coloana C am selectat prima celula si nu afunctionat sa arate citi parinti sunt

eram curios dacă merge

multumesc pt tot

stiu ca am fost un pic cam pisalog si am cautat tot felul de situaţii
dar cind folosesti Exelul pt a strânge date se întâmpla tot felul de situaţii

sal

adof
Mesaje: 438
Membru din: Mie Iul 14, 2010 12:42 pm
Localitate: Sibiu

Re: Numar curent VBA Excel

Mesaj de adof » Mar Oct 23, 2012 8:09 am

am revenit :|
codul funcţioneza de minune


DAR

am un bai

am facut o selectie cu filtrare
am numerotat cu macrocomana Nr_crt

dupa care a trebuit sa fac alta selecţie dupa alt criteriu aceeaşi coloana (unde lucrează)
când am renumerotat , sa sters numerotarea dupa celalat criteriu
atasez fisierul cu exemplu

se poate modifica astel încât dupa ce am numerotat niste rânduri la acestea sa nu li se stearga numarul dacă rândurile sunt ascunse ?
curaţirea celelelor şi renumerotarea să se facă numai pt celulele care se afla pe rândurile care se vad

mulţumesc
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Scrie răspuns

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