• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Değişiklikleri Kayıt Et ve Raporla

Katılım
5 Kasım 2007
Mesajlar
4,727
Excel Vers. ve Dili
64 Bit TR - Microsoft Office 365 - Win11 Home
Merhaba,

Aşağıdaki kod ile, satırda değişiklik var ise, değişim tarihi, saat, dakika ve değişikliği yapanı kayıt edebiliyorum,

Kod ; KAYIT_LİSTESİ sayfasındadır.

Kod:
KAYIT_LİSTESİ sayfasında, kayıtlardaki değişikleri, StatusBar'daki isme göre kayıt eder

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [A2:R5000]) Is Nothing Then
Cells(Target.Row, "AB") = Format(Now, "dd/mmmm/yyyy - hh:mm:ss") _
& " - " & Application.StatusBar
End If
End Sub

İSTENEN ;

1) Kod'un KAYIT_LİSTESİ sayfasında, A2:R5000 arasında değişiklikleri yapanı "AB" sütununa yazarken, bu kayıtları;
Aynı zamanda KAYIT_YEDEKLERİ sayfasına da, yine AB sütununa yazması,

2) Değişikliğe uğrayan hücre zemin renginin sarı olması,

3) Bu değişikliklerin, RAPOR_SAYFASI'nda raporlanması,

NOT; Her 2 sayfa da sayfa koruması ile korunmaktadır.

Sayfaların şifresi ; 12345 tir.

Teşekkür ederim.
 

Ekli dosyalar

Merhaba,

1 ve 2 no.lu isteklerimi hallettim,

3 no.lu sorunum için çözüm arıyorum,

NOT ; Sayfa koruması, sadece "KAYIT_LİSTESİ" sayfasında mevcuttur.

Teşekkür ederim.
 
Merhaba,

Konu günceldir arkadaşlar.

Teşekkür ederim.
 
Merhaba.

İlk iki maddeyi hallettim yazmışsınız, bunun için kullandığınız kod'u bilemiyorum.
Ben kendimce üç isteği birden karşılayacak şekilde aşağıdaki gibi düşündüm.

Zaman tespitinde saniye kısmını devre dışı bırakıp, aynı dakika saniyede (farklı saliselerde)
gerçekleşen işlemlerin hücre adreslerini, aynı satırda sağa doğru (RAPOR sayfası C-S sütun aralığında işaretlediğiniz gibi)
listelemenin doğru olacağını düşünerek salise kısmını kullanmadım.
Böylece RAPOR sayfasındaki listenizin gereksiz fazlalaşmaması da sağlanmış olur.

KAYIT_LİSTESİ isimli sayfanın kod bölümüne aşağıdaki kodları uygulayarak dener misiniz?
.
Kod:
[B][COLOR="blue"]Public eski As String

Private Sub Worksheet_Change(ByVal Target As Range)[/COLOR][/B]
If Not Intersect(Target, [A2:R5000]) Is Nothing Then
    adr = Target.Address(0, 0)
    bilgi = Format(Now, "dd/mmmm/yyyy - hh:mm") & " - " & Application.StatusBar
    If eski = "" Then
        Sheets("KAYIT_YEDEKLERİ").Range(adr) = Target.Value
        Cells(Target.Row, "AB") = bilgi
    ElseIf eski <> "" And eski <> Target.Value Then
        Sheets("KAYIT_YEDEKLERİ").Range(adr).Interior.Color = vbYellow
        varmi = WorksheetFunction.CountIf(Sheets("RAPOR_SAYFASI").[B:B], Format(Now, "dd/mmmm/yyyy - hh:mm") & "*")
        If varmi = 0 Then
            rssat = Sheets("RAPOR_SAYFASI").Cells(Rows.Count, 2).End(3).Row + 1
            rssut = 3
            Sheets("RAPOR_SAYFASI").Cells(rssat, 1) = rssat - 1
        Else
            rssat = WorksheetFunction.Match(Format(Now, "dd/mmmm/yyyy - hh:mm") & "*", Sheets("RAPOR_SAYFASI").[B:B], 0)
            rssut = Sheets("RAPOR_SAYFASI").Cells(rssat, Columns.Count).End(xlToLeft).Column + 1
        End If
        Sheets("RAPOR_SAYFASI").Cells(rssat, 2) = bilgi
        Sheets("RAPOR_SAYFASI").Cells(rssat, rssut) = adr
        Sheets("KAYIT_YEDEKLERİ").Cells(Target.Row, "AB") = bilgi
    End If
End If
[B][COLOR="blue"]End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)[/COLOR][/B]
eski = ""
If Selection.Count > 1 Then Exit Sub
If Intersect(Target, [A2:R5000]) Is Nothing Then Exit Sub
If Target <> "" Then eski = Target
[B][COLOR="Blue"]End Sub[/COLOR][/B]
 
Tekrar merhaba.

Önceki verdiğim kod'da küçük bir değişiklik yaptım.
Böylece bir hücreye ilk veri girişinde renklendirme yapılmaz, mevcut bir veri değiştirildiğinde sarı boyama gerçekleşir.
.
 
Sayın Ömer BARAN merhaba,

Her şey için çok teşekkür ederim, zaman ve emek harcadınız, çok sağ olun.

Düzeltme ; Değişiklikler "KAYIT_LİSTESİ" sayfasında yapılmaktadır, yapılan değişiklikler "KAYIT_YEDEKLERİ" sayfasına işlenmemelidir ( değişikliğin ne olduğunu anlayabilmek adına )

Şayet zor olmayacak ise,

İlave ; "KAYIT_LİSTESİ" AB sütununa yapılan kayıtın, aynı zamanda bire bir, "KAYIT_YEDEKLERİ" AB sütununa da yapılmasını rica ediyorum,

Teşekkür ederim.
 
Son düzenleme:
Önceki kod cevabımı güncelledim, sayfayı yenileyerek yeni halini kullanabilirsiniz.
 
Sayın Ömer BARAN merhaba,

Affınıza sığınarak, zor olmayacaksa,

Düzeltme ; Değişiklikler "KAYIT_LİSTESİ" sayfasında yapılmaktadır, yapılan değişiklikler "KAYIT_YEDEKLERİ" sayfasına işlenmemelidir ( değişikliğin öncesini görebilmek adına )

Teşekkür ederim.
 
Bilgisayar başında değilim.
İşlemleri; ilk veri girişinde - veri değişikliğinde şeklinde
(veri yazılıp sonra silinmişse ve ardından aynı hücreye veri yazılmışsa ne olacağını da netleştirmek lazım sanırım)
ayrıma tabi tabi tutarak,
herbir sayfada yapılacak işlemi maddeler halinde yazarsanız iyi olur.
Bilgisayar başına geçtiğimde bakarım.
.
 
Sayın Ömer BARAN merhaba,

Duyarlığınız için teşekkür ederim,

Olay şu ;

"KAYIT" sayfasından, UF ile "KAYIT_LİSTESİ" ve "KAYIT_YEDEKLERİ" sayfalarına aynı anda bire bir kayıt yapılıyor,

Yapılan kayıtlarda sonradan her hangi bir değişiklik yapılması gerektiğinde, şifresi girilerek "KAYIT_LİSTESİ" sayfasına giriliyor ve ilgili hücrede/hücrelerde değişiklik yapılıyor, bu değişikliği yapan ve yapılan zaman, her 2 sayfada da "AB" sütununa işleniyor,

Yapılan değişiklik/değişiklikler "KAYIT_YEDEKLERİ" sayfasına (A2:R5000) işlenmiyor, ancak değişen hücreler sarı renge boyanıyor,

Kayıtlardaki değişiklikleri kontrol edeceğim zaman, şifresini girerek "KAYIT_YEDEKLERİ" sayfasına gidip, sarı renkli hücrelerdeki veriler ile "KAYIT_LİSTESİ" sayfasındaki verileri karşılaştırıyorum,

Örnek ; "KAYIT_LİSTESİ" sayfası E2 =40 iken "KAYIT_YEDEKLERİ" sayfası E2 =45 ise, sarı renk sayesinde dikkatim çekiliyor, "AB" sütunu ile de değişikliği yapanı ve zamanı görebiliyorum,

Son olarak ta "RAPOR_SAYFASI" sayfası ile raporluyorum.

"KAYIT_LİSTESİ" ve "KAYIT_YEDEKLERİ" sayfaları, sayfa korumasına sahip, şifresi 12345'tir. (1 no.lu mesaj ekindeki dosyaya, rahat çalışılabilmesi maksatlı, sayfa koruması koyulmamıştır)

Yazdığınız kod, korumalı 2 sayfaya ve "RAPOR_SAYFASI"na (bunu da sayfa korumaya alacağım), her 3 sayfa da korumada iken kayıt yapabilir ise memnun olurum,

Sayfalardan çıkınca da sayfaları tekrar şifrelemesi, tercihimdir.

NOT ; Değişiklikler, KAYIT işlemi bittikten sonra gerçekleşmektedir.
Kayıt esnasında, "düzeltilen-silinen-yeniden yazılanlar" için, "KAYIT_YEDEKLERİ" ve "RAPOR_SAYFASI" nda, her hangi bir işlem yapılmamaktadır.

Şayet sizi yoracak ise ;

"RAPOR_SAYFASI" hariç diğer 2 konuyu çözmüştüm, şöyle ki ;

"KAYIT_YEDEKLERİ" sayfasında, benzemeyen hücreler için, "Koşullu Biçimlendirme" kullandım,

"KAYIT_LİSTESİ" sayfasındaki kodu da revize edip KAYIT esnasında, "KAYIT_LİSTESİ" sayfası "AB" nin aynısını, "KAYIT_YEDEKLERİ" sayfası "AB" sütununa da kayıt ettirdim,

Yanlış anlamazsanız ;

Belki, "RAPOR_SAYFASI", "KAYIT_YEDEKLERİ" sayfasındaki sarı zeminli hücrelere bakılarak, oluşturula bilir ?

Anlayışınız ve yardımlarınız için tekrar teşekkür ederim.
 
Son düzenleme:
Son cevabınızda "UF ile .....sayfalarına aynı anda bire bir kayıt yapılıyor" yazmışsınız bunu anlamadım.

Anladığım kadarıyla önceki cevabımdaki kod güncellendi.

Kod'un yeni halini, belgenizde KAYIT_LİSTESİ sayfasının kod bölümüne uygulayarak deneyiniz.
► Boş hücreye veri girildiğinde;
-- yeni veri KAYIT_YEDEKLERİ sayfası aynı hücreye de kaydedilir,
-- işlem zamanı KAYIT_LİSTESİ sayfası AB sütununa yazılır.
► Dolu hücredeki veride değişiklik yapıldığında;
-- yeni veri KAYIT_YEDEKLERİ sayfasına yazılmaz. ilgili hücre SARI boyanır,
-- KAYIT YEDEKLERİ sayfası AB sütununa değişiklik zamanı kaydedilir,
-- RAPOR sayfasında aynı dakikadaki değişiklik yapılan hücre adresleri sağa doğru gitmek üzere zaman ve değiştirilen hücre adresi kaydedilir
.
 
Sayın Ömer BARAN merhaba,

Zahmetlerinize bir kere daha teşekkür ederim.

UF'den kasıt UserForm idi,

Kodları 1 no.lu mesaj ekindeki dosyaya uyguladım, sorunsuz çalışıyor, sağ olun.

Geri dönüşüm biraz gecikti, çünkü ;

Tüm parametreleri aynı ( sayfa adı vb ) olan orijinal dosyamda "KAYIT_YEDEKLERİ" sayfasında değişen hücreler sarıya boyanmadı, ayrıca "KAYIT_LİSTESİ" sayfasında değişen hücre "KAYIT_YEDEKLERİ" sayfasında da değişiyor ve "RAPOR" sayfası dolmuyor,

Bir önceki kod'da, değişen hücrenin sarıya boyanması ve "KAYIT_YEDEKLERİ" sayfasında hücre değişimi dışında sorun yaşamamıştım.

Bunun nedenini araştırıyordum,

Başka sayfalarda, modülde olan kodlardan kaynaklanıyor olabilir diye düşünüyorum, henüz bir sonuç almış değilim.

Nasıl bir kodun buna engel olabileceği konusunda, tahmini bir fikriniz var mı ?

Orj.dosyayı yüklemek istemedim,

Anlayışınıza teşekkür ederim.

Saygılarımla.
 
Kıdemli bir üyesiniz ama bu durumda söylenecek tek şey kalıyor bana.
O da; sorunun, gerçek belgenin küçük boyutlu bir kopyası şeklinde hazırlanacak örnek belge üzerinden sorulması gerekliliği malesef.
.
 
Sayın Ömer BARAN tekrar merhaba,

Eklenen örnek belge userformlar dışında zaten orj.kopya idi,

Sayfaya yazılan kod'un, userform'daki kodlar ile uyumsuzluğunu tahmin edememiş olabilirim, ki bu da kesin değil,

Görünen o ki , sorunu bulmak için, araştırmama devam edeceğim,

Zaman bulursanız ve sizce de uygunsa;

Son kodun satır satır açıklamasını öğrenebilirsem, belki hatayı bulmam kolaylaşır.

Her şey için bir kere daha teşekkür ederim,

Saygılarımla.
 
Tekrar merhaba.

Belgenize veri yazma ve değiştirme işlemleri Userform üzerinden yapılıyorsa;
esas olarak Worksheet_Change ve Worksheet_SelectionChange kodlarının kullanılmasına gerek olmayabilir.

Neden Userformun (tabi kullanılan kodlar dahil) içerisinde olduğu bir örnek belge yüklemediğinizi anlamadım doğrusu.

Userform'la işlem yaparken zaten belgenin sayfa veya hücreleri için select kodunun kullanılmasından kaçınmak gerektiğini düşünüyorum.

Verdiğim kod'un temel direği, Public olarak tanımlanmış ...._SelectionChange kısmındaki eski adını verdiğim değişken ki, işlemin yapılmasını sağlayan ..._Change kodu da bu değişken değerine göre çalışıyor zaten.
.
 
Sayın Ömer BARAN tekrar merhaba,

EK'li dosyadaki kod, orj.dosyada da görev yapıyor,

Bu dosyada "RAPOR_SAYFASI" na değişiklikleri içeren çizelgeyi alabilir miyiz ?

Teşekkür ederim.
 

Ekli dosyalar

Tekrar merhaba.

Açtığınız bu konu sayfasında, son mesajınıza kadar anladığım şey;
KAYIT_LİSTESİ sayfasına elle veri girişi yapılırken, dolu bir hücredeki veri değiştirilirse
bu değişiklik yapıldığı anda, değişikliğe uğrayan hücre adresinin zaman bilgisiyle birlikte RAPOR sayfasına yazılmasını istediğiniz yönünde idi.
Şimdiye kadarki cevaplarım ve kod önerilerimin amacı ve çalışma ilkesi de buna yönelik idi.

Son belgenizde, RAPOR sayfasına bir düğme eklediğinize ve
"RAPOR_SAYFASI' na değişiklikleri içeren çizelgeyi alabilir miyiz ?" şeklinde bir cümle yazdığınıza göre;
LİSTE ve YEDEK sayfasındaki verilerin hücre hücre karşılaştırılarak farklı olan hücrelerin adreslerini,
YEDEK sayfası AB sütunundaki bilgiyle birlikte RAPOR sayfasına listelemek istediğiniz sonucu çıkıyor.

Bu işlemi sayfaya eklediğiniz düğme ile aşağıdaki kod'u ilişkilendirerek yapabilirsiniz.
.
Kod:
[B][COLOR="blue"]Sub RAPOR()[/COLOR][/B]
Set ky = Sheets("KAYIT_YEDEKLERİ"): Set rs = Sheets("RAPOR_SAYFASI")
rsson = rs.UsedRange.SpecialCells(xlCellTypeLastCell).Address(0, 0)
If rs.Cells(Rows.Count, "B").End(3).Row > 1 Then rs.Range(rs.[A2], rsson).ClearContents
For sat = 2 To ky.Cells(Rows.Count, "B").End(3).Row
    If ky.Cells(sat, 28) <> "" Then
        rssat = rs.Cells(Rows.Count, 2).End(3).Row + 1
        rs.Cells(rssat, 1) = rssat - 1
        For sut = 2 To 18
            If ky.Cells(sat, sut) <> Sheets("KAYIT_LİSTESİ").Cells(sat, sut) Then
                rs.Cells(rssat, 2) = ky.Cells(sat, 28)
                rssut = rs.Cells(rssat, Columns.Count).End(xlToLeft).Column + 1
                rs.Cells(rssat, rssut) = Cells(sat, sut).Address(0, 0)
            End If
        Next
    End If
Next
MsgBox "Listeleme tamamlandı.", vbInformation, "..:: Ömer BARAN ::.."
[B][COLOR="Blue"]End Sub[/COLOR][/B]
 
Sayın Ömer BARAN merhaba,

Öncelikle göstermiş olduğun anlayışınız ve emekleriniz için teşekkür ederim,

Kod istediğimi gerçekleştiriyor, ellerinize sağlık,

Öğrenmek istediğim bir şey var ; kodda geçen ky.Cells(sat, 28) ifadesindeki 28 ile ne kast ediliyor ?

Tekrar teşekkür ederim,

Saygılarımla.
 
-- ky kısaltması=> KAYIT YEDEKLERİ sayfası
-- 28 sayısı sütun numarası yani AB sütunu.

ky.Range("AB" & sat) şeklinde de yazılabilirdi.
 
Sayın Ömer BARAN tekrar merhaba,

Bilgilendirme ve nezaketiniz için teşekkür ederim,

Saygılarımla.
 
Geri
Üst