Çözüldü Makro Ile Otomatik Listeler Oluşturma

fledermaus

Site Üyesi
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhabalar,

Ekte paylaşmış olduğum dosyamda, ilk sayfanın G veya J sütunlarına ait başlıklar altına girilen benzersiz verilere göre çapraz ara yaparak ikinci sayfadan kişilere ait bilgiler otomatik olarak çekilmektedir.

Sonrasında ise, listelenen dosya bir buton yardımı ile sayfa ismi verilerek masa üstüne .xlsx olarak kayıt edilmektedir.

Benim burada farklı olarak eklemek istediğim;

Listede olmayan bir kişiye ait veriler manual olarak girildiğinde, dosyayı kapatırken "listede olmayan yeni kişileri kaydetmek istiyor musunuz" gibi bir uyarı alarak, dosyayı kapatmadan önce yeni girilen verilerin ikinci sayfadaki listeye otomatik olarak eklenmesidir.

Bunu yapmak mümkün müdür ?

Yardımları için herkese şimdiden teşekkür ederim.

Not: İlk sayfada herhangi bir satırdaki veriler silindiğinde makro hata mesajı alınmamalıdır.

Syg,
 

Ekli dosyalar

Moderatörün son düzenlenenleri:
İyi de; mevcut koddaki şu kısım dolayısıyla,
listede olmayan bir kişiye ait ID NO girildiğinde A-F ve H-L aralığı temizleniyor,
yani listedeki sütunlarda, ID NO bilgisi olmayan kişiye ait bilgilerin tamamlanması mümkün değil.

Yoksa uyarı vs mesele değil.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(6 satır)
 
İyi de; mevcut koddaki şu kısım dolayısıyla,
listede olmayan bir kişiye ait ID NO girildiğinde A-F ve H-L aralığı temizleniyor,
yani listedeki sütunlarda, ID NO bilgisi olmayan kişiye ait bilgilerin tamamlanması mümkün değil.

Yoksa uyarı vs mesele değil.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(6 satır)

Hocam Tekrar Merhaba,

Peki mevcut kodlarda düzeltmeye gitmek mümkün değil midir ?

Yada farklı bir algoritma kullanarak kodlar revize edilemez mi ?

Syg,
 
O kısmı iptal ettik diyelim.
Excel belgesi oluşturma düğmesine tıkladığınızda karşınıza,
listede olmayan kişi bilgilerinin olduğu uyarısı geldi.

Verilecek cevap EVET ise listeye dahil edildi ve Excel belgesi oluşturma işlemi, mevcut haliyle devam etti.
Peki uyarıya HAYIR denilirse; listeye ekleme ve Excel belgesi oluşturma işlemlerinin durumunu
ayrı ayrı belirtmeniz lazım. Listeye dahil edilmeden Excel belgesi oluşturulmayacak mı?
 
O kısmı iptal ettik diyelim.
Excel belgesi oluşturma düğmesine tıkladığınızda karşınıza,
listede olmayan kişi bilgilerinin olduğu uyarısı geldi.

Verilecek cevap EVET ise listeye dahil edildi ve Excel belgesi oluşturma işlemi, mevcut haliyle devam etti.
Peki uyarıya HAYIR denilirse; listeye ekleme ve Excel belgesi oluşturma işlemlerinin durumunu
ayrı ayrı belirtmeniz lazım. Listeye dahil edilmeden Excel belgesi oluşturulmayacak mı?

Hocam Merhaba,

Öncelikle yanlış bir bilgilendirme olmaması adına bir konuya açıklık getirmek isterim. İlk mailimde açıklamayı "dosyayı kayıt ediyor" olarak yazmışım" Doğrusu: Excel belgesini oluştur düğmesini tıkladığımızda "sadece dosyanın ilk sayfasını" (verileri çektiğimiz sayfayı) yeni dosya ismi isteyerek masa üstüne kayıt ediyor.

Burada asıl amaç, benzersiz değerler ile çekilen verilere yönelik yeni bir dosya oluştururken ana dosyadaki data verilerini de aynı anda güncellemek.

Bu yüzden yeni bilgiler ekleme işleminde Evet/Hayır sorusuna yönelik tetikleme yerine bilgi direk kayıt edilip " Yeni kişi bilgileri listeye eklendi" gibi" bir kısa uyarı alınabilir.

Tabi bu durum bir şeyleri değiştirerek kodlamayı kolaylaştırır mı bilemiyorum hocam. Orada takdir sizin elbette.


Not: Ayrıca aşamadığım bir konu da masa üstüne yeni dosyayı kayıt ettikten sonra , kayıt edilen dosyada drop down listelerin silinmesi. (Veriler gizlenen Sayfa2 de olduğundan) Buna da bir çözüm getirebilir miyiz bilemiyorum tabi.


Saygılarımı sunarım,
 
İsteğinizi anladım, halledilir.

Açılır Liste Sorunu:
Belgenize şu an bakamam ama yanlış hatırlamıyorsam listelerden biri epey uzun idi.
Bu açılır liste işleminin oluşturulan yeni belgede de çalışması için;
ya liste kaynağı olan sayfanın da birlikte kopyalanması gerekir,
ya da bu liste kaynaklarını Listenin bulunduğu sayfada tutmanız gerekir.

Mevcut listeleri, veri doğrulama ekranında elle yazılmış gibi yapmak esas olarak mümkün ancak
listelerin uzunluğu ve toplam metin karakter sayısının büyüklüğü buna engel.
Yani liste kaynağının yerini değiştirmekten veya kaynak sayfayı da birlikte kopyalamaktan başka çıkış yok.
Kaynak sayfa kopyalansa da bu sayfanın gizlenmiş olarak tutulması da mümkün elbette.
 
Bir de son şunu sorayım.
A-L sütun aralığında sanırım dolu olması zorunlu olmayan tek sütun İKİNCİ AD sütunu değil mi?
Yani İKİNCİ AD sütunu hariç dolu olduğunda diğer tarafa aktarma yapılmalı,
bunun dışında bir boş alan olduğunda hem diğer tarafa aktarma olmamalı, hem de yeni belge oluşturma işlemi yapılamamalıdır diye düşünüyorum, yanılıyor muyum ?
 
İsteğinizi anladım, halledilir.

Açılır Liste Sorunu:
Belgenize şu an bakamam ama yanlış hatırlamıyorsam listelerden biri epey uzun idi.
Bu açılır liste işleminin oluşturulan yeni belgede de çalışması için;
ya liste kaynağı olan sayfanın da birlikte kopyalanması gerekir,
ya da bu liste kaynaklarını Listenin bulunduğu sayfada tutmanız gerekir.

Mevcut listeleri, veri doğrulama ekranında elle yazılmış gibi yapmak esas olarak mümkün ancak
listelerin uzunluğu ve toplam metin karakter sayısının büyüklüğü buna engel.
Yani liste kaynağının yerini değiştirmekten veya kaynak sayfayı da birlikte kopyalamaktan başka çıkış yok.
Kaynak sayfa kopyalansa da bu sayfanın gizlenmiş olarak tutulması da mümkün elbette.

Hocam Merhaba,

#İsteğinizi anladım, halledilir.

Çok teşekkür ederim hocam.

#Açılır liste sorunu ile ilgili:

Dosya bir sisteme yükleniyor olduğundan aynı sayfa içerisinde olur ise problem olacağını düşünmüştüm ancak bahsi geçen listeleri sizin de öneriniz ile veri çektiğimiz sayfaya taşıdım. Açıkçası yükleme de herhangi bir problem olmadı böylelikle bu sorun aşıldı ve açılır liste sorunu çözüldü.


Saygılarımı sunarım,
 
2 numaralı cevapta belirttiğim Worksheet_Change kod blokundaki kod satırlarını (END IF satırı hariç) silin,
sonra da sayfadaki düğmeye ait kodu aşağıdakiyle değiştirerek denemeler yapın.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(42 satır)
 
@fledermaus
Bir önceki cevabımdaki koda küçük ilave yaptım (B sütunu hariç boşluk kontrolü).
Sayfayı yenileyerek, kodun yeni halini kullanın.
Hocam Merhaba,

Söylemiş olduğunuz gibi gerekli değişiklikleri yaptım.

Ancak çalışmadı. Bir yerde bir hata yapmış olabilir miyim ?

ikinci sayfada olmayan bir isim ve bilgilerini girmeme rağmen çalışmadı. Örnekleme yapmak için girilen yeni bilgiyi silmeden örnek dosyayı sizinle paylaşıyorum.

Dosya ektedir.

Not: Bazı bireylerin (yabancı uyruklu) g sütunu başlığındaki bilgileri olmayabiliyor ve o başlık altındaki hücrelerin bazen boş bırakılması gerekebiliyor.

Syg,
 

Ekli dosyalar

Ben KİŞİ ID bilgisini (TC KİMLİK gibi) benzersizlik garantili alan diye düşünmüştüm.
Ayrıca zaten, konu açılış mesajınıza eklediğiniz dosyadaki asıl kodlar da G sütunundaki veri girişine göre
liste sayfasında varsa diğer bilgileri getiriliyor idi.

Ayrıca eklediğiniz son belgede J2 hücresi BOŞ.
A sütunu ile C-L arasında boş hücre olmamalıdır diye bir varsayım var.
Yani B hariç A-L arasındaki tüm hücreler doluysa işlem yapılmak üzere kodlamıştım.
Zorunlu olan/olmayan alan ayrımı var mıdır onu da benim bilmem mümkün değil.

Neticede mutlaka olmazsa olmaz, yani zorunlu alanlar vardır.
Düğmeye tıkladığınızda dolu/boş kontrolünün yapılması kaçınılmaz, yoksa bilgiler tam yazılmadan düğmeye tıklanırsa
eksik/veya eksiksiz haliyle ve her tıklamada Liste sayfasındaki ilk boş satıra aynı kişi bilgileri yeni kayıt olarak aktarılmış olur.
 
Ben KİŞİ ID bilgisini (TC KİMLİK gibi) benzersizlik garantili alan diye düşünmüştüm.
Ayrıca zaten, konu açılış mesajınıza eklediğiniz dosyadaki asıl kodlar da G sütunundaki veri girişine göre
liste sayfasında varsa diğer bilgileri getiriliyor idi.

Ayrıca eklediğiniz son belgede J2 hücresi BOŞ.
A sütunu ile C-L arasında boş hücre olmamalıdır diye bir varsayım var.
Yani B hariç A-L arasındaki tüm hücreler doluysa işlem yapılmak üzere kodlamıştım.
Zorunlu olan/olmayan alan ayrımı var mıdır onu da benim bilmem mümkün değil.

Neticede mutlaka olmazsa olmaz, yani zorunlu alanlar vardır.
Düğmeye tıkladığınızda dolu/boş kontrolünün yapılması kaçınılmaz, yoksa bilgiler tam yazılmadan düğmeye tıklanırsa
eksik/veya eksiksiz haliyle ve her tıklamada Liste sayfasındaki ilk boş satıra aynı kişi bilgileri yeni kayıt olarak aktarılmış olur.
Hocam Tekrar Merhaba,

#Ben KİŞİ ID bilgisini (TC KİMLİK gibi) benzersizlik garantili alan diye düşünmüştüm.
Ayrıca zaten, konu açılış mesajınıza eklediğiniz dosyadaki asıl kodlar da G sütunundaki veri girişine göre
liste sayfasında varsa diğer bilgileri getiriliyor idi.

* İlgili kodlarda yabancı uyruklu bireylerde G sütunu bazen doldurulamadığından bu durumda veriyi ilgili sayfadan çekmek için J sütununa yine benzersiz olarak (pasaport no) girilen veriler kullanılıyor.

#Ayrıca eklediğiniz son belgede J2 hücresi BOŞ.
A sütunu ile C-L arasında boş hücre olmamalıdır diye bir varsayım var.
Yani B hariç A-L arasındaki tüm hücreler doluysa işlem yapılmak üzere kodlamıştım.
Zorunlu olan/olmayan alan ayrımı var mıdır onu da benim bilmem mümkün değil.

* Yukarıda bahsetmiş olduğum üzere J sütunu da kullanılıyor . Burada ben eksik bilgilendirmede bulundum sanırım hocam kusuruma bakmayın.

#Neticede mutlaka olmazsa olmaz, yani zorunlu alanlar vardır.
Düğmeye tıkladığınızda dolu/boş kontrolünün yapılması kaçınılmaz, yoksa bilgiler tam yazılmadan düğmeye tıklanırsa
eksik/veya eksiksiz haliyle ve her tıklamada Liste sayfasındaki ilk boş satıra aynı kişi bilgileri yeni kayıt olarak aktarılmış olur.

* Doldurulması zorunlu sütunlar: A,C,D,E,F,H,I,K,L,
* Doldurulması ikisinden biri zorunlu sütunlar: G ve J sütunları
* Doldurulması zorunlu olmayan sütunlar: B,M,N

Saygılarımı sunarım,
 
@fledermaus

Mevcut kodların tümünü (Worksheet_Change ve CommandButtoh1_Click) silip,
yerine aşağıdakileri yapıştırarak denemeler yapın.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(51 satır)

Hocam Merhaba,

Şöyle bir sorun ile karşılaştım.

Sayfaya yeni bir bilgi girdikten sonra aynı sayfada düzeltme yapmak için G veya J sütunundaki herhangi bir bilgiyi silersem o satırdaki diğer bütün bilgiler siliniyorlar.

Birde yeni dosyayı masaüstüne kayıt etmek yerine, ana dosyanın olduğu klasöre kayıt etmek gibi bir şansımız var mıdır?

Syg,
 
En baştan beri işlem tetikleyicisi 7 veya 10'uncu sütundaki değişiklik idi.
Kodun ilk halinde de bu iki sütundaki bilgi silindiğinde satır tamamen boşaltılıyor idi bu konuda bir değişiklik yok.
Zaten bence de silinmesi gerekir. Çünkü; örneğin G sütunu için bir TC Kimlik Numarası yazıldı ve karşılığı liste sayfasında varsa diğer sütun bilgileri getirilecek, listede yoksa zaten silinmiyor, TC bilgisi silindiğinde diğer bilgilerin silinmesi normal değil mi?
Ha diyelim yanlış TC yazdınız, aynı hücrede doğrusunu yazdığınızda zaten liste üzerinden kontrol yapılıyor durumda.

Belge adresi için; koddaki yol = ...... satırını, yol = ThisWorkbook.Path & "\" olarak değiştirin.
 
En baştan beri işlem tetikleyicisi 7 veya 10'uncu sütundaki değişiklik idi.
Kodun ilk halinde de bu iki sütundaki bilgi silindiğinde satır tamamen boşaltılıyor idi bu konuda bir değişiklik yok.
Zaten bence de silinmesi gerekir. Çünkü; örneğin G sütunu için bir TC Kimlik Numarası yazıldı ve karşılığı liste sayfasında varsa diğer sütun bilgileri getirilecek, listede yoksa zaten silinmiyor, TC bilgisi silindiğinde diğer bilgilerin silinmesi normal değil mi?
Ha diyelim yanlış TC yazdınız, aynı hücrede doğrusunu yazdığınızda zaten liste üzerinden kontrol yapılıyor durumda.

Belge adresi için; koddaki yol = ...... satırını, yol = ThisWorkbook.Path & "\" olarak değiştirin.

Hocam Merhaba,

Burada size yanlış izahat vermiş olabilirim.

Bu durum, listede olmayan yeni kişi bilgisi girilirken yani henüz dosyayı kaydetmemiş, yeni dosya oluşturulmamış ve yeni kişi bilgisi kayıt edilmemişken ortaya çıkıyor.

Diyelim ki A2 hücresinden itibaren bilgileri girmeye başladık G2 hücresine geldik oraya da veriyi yazdık ve H hücresine geçtik. Sonrasında G2 hücresine veriyi yanlış yazdığımızı fark ettik. Geri dönüp sildiğimizde tüm bilgiler siliniyor.

Aynı durum J2 hücresi içinde geçerli.

Syg,
 
Hücreyi SİLMEK yerine hücreyi seçip doğrudan DOĞRU olan TC Kimlik numarasını yazmanız gerekiyor.
G/J sütunu SİLindiğinde ilgili satırdaki diğer hücrelerin silinmemesi daha sakıncalı bence.
 
Hücreyi SİLMEK yerine hücreyi seçip doğrudan DOĞRU olan TC Kimlik numarasını yazmanız gerekiyor.
G/J sütunu SİLindiğinde ilgili satırdaki diğer hücrelerin silinmemesi daha sakıncalı bence.

Hocam Merhaba,

Söylemiş olduğunuz gibi hücrenin tamamını silmek yerine hücre üzerinde düzeltme yapmak çok daha mantıklı.

Az önce karşılaştığım bir başka husus ise;

Öncesinde kayıtlı olan herhangi veri listeden çekildikten sonra dosyayı kayıt ederken aynı kişiyi listeye tekrar eklemekte.


Syg,
 
Üst