Çözüldü Kapalı Dosyadan InputBox ile Veri Transferi Yapma

Believing

Yıllık Site Üyesi
Excel Versiyonu
Excel 2019
Excel Sürümü
32 Bit
Excel Dili
Türkçe
Değerli Forumdaş Arkadaşlar,

Ekteki örnek çalışmalarda veritabanı mantığı ile kayıt edilmiş fazla mesai kayıtları "150.SERVICE - OVERTIME" isimli kitabın "Fazla_Mesai_VERİTABANI" isimli sayfasında bulunmaktadır. "150.SERVICE - SCORECARD" isimli kitabın içerisinde aylara göre sonu "*_SCORING" kelimesi ile biten 12 adet sayfa bulunmaktadır. Aşağıda belirtilen koşullara göre Fazla mesaji puantajını ekteki formata göre hazırlanması gereklidir.

Detaylar;
  1. Puantaj tablosu bilgilerinin tümünü "301.SERVICE - OVERTIME" isimli kapalı çalışma kitabından alacaktır.
  2. "301.SERVICE - OVERTIME" isimli kapalı kitap şifreli bir kitap olacağı dikkate alınmalıdır. (Çalışma kitabını açma ve sayfa koruma şifresi=123456 olarak belirlenmiştir.)
  3. Kapalı kitabın "Fazla_Mesai_VERİTABANI" isimli sayfanın "B3:F" bilgileri ile "L3:L" aralığındaki veriler aşağıdaki koşullara göre sonu "*_SCORING" kelimesi ile biten sayfalara transfer edilecektir.
  4. Yazılacak olan kod defteri yukarıdaki KIRMIZI renkli "Puantaj Verilerini Güncelle" butonu ile tetiklenmelidir.
  5. İlk olarak "E3" hücresindeki ay ismi koşul olarak alınarak, kapalı kitabın "Fazla_Mesai_VERİTABANI" isimli sayfanın "H3:H" aralığı ile eşleştirilmelidir.
  6. Eşleştirmenin ardından veya öncesinde InputBox açılmalı, "Başlangıç gününü giriniz.(1-31 arasında bir sayı olmalıdır)" ile "Bitiş gününü giriniz. (1-31 arasında bir sayı olmalıdır)" mesajları ile transfer edilecek veri aralığını belirlenmelidir. Böylelikle hangi döneme (Ay'a) ait verilerin, hangi gün aralığında alınacağını belirlemiştir.
  7. Transfer edilecek veriler bu sayfanın "B6:F230" aralığı sütunları ile "I6:AM230" aralığı sütunlarına kapalı kitabın ilgili sütunlarından transferi sağlanmalıdır.
  8. Transferi yapılan veriler için "D6:D230" aralığındaki dolu hücreler dikkate alınarak "A6:A230" aralığına 1'de başlayarak sıralı satır numarası yazdırılmalıdır.
Yukarıdaki koşulara göre nasıl VBA kod prosedürü kullanmalıyım?
Uzman arkadaşların değerli yardımlarını rica ediyorum.

Saygılarımla.
 

Ekli dosyalar

Çözüm
@Believing

Anladığım kadarıyla
(neden TEK TIKLAMA ile tüm aylara ait verileri aktarmayı istemediğinizi bilemiyorum) ;

herhangi bir ay sayfası aktif iken, o aya ait verileri ve INPUTBOX ile sorulan ve
burada yazılacak 5-17 gibi TİRE işaretiyle ayrılmış 2 sayı (başlangıç günü - bitiş günü)
arasındaki sütunlara göre veri aktarımı istiyorsunuz.

Tabi burada inputboxlara yazılacak metinlerin:
-- 0'dan büyük ve SAYI/DEĞİL kontrolü,
-- 2'inci inputboxa yazılan sayının 1'nciden büyük olup olmadığının kontrolü,
-- 2'nci inputboxa yazılacak sayının aydaki son gün sayısından küçük (eşit dahil) olduğunun kontrolü

gibi ön kontrol aşamaları olacak demektir.

Bunun yanı sıra bir de KAYNAK belgede 2 farklı güne tekabül eden süreler (başlama ve...
@Believing

Anladığım kadarıyla
(neden TEK TIKLAMA ile tüm aylara ait verileri aktarmayı istemediğinizi bilemiyorum) ;

herhangi bir ay sayfası aktif iken, o aya ait verileri ve INPUTBOX ile sorulan ve
burada yazılacak 5-17 gibi TİRE işaretiyle ayrılmış 2 sayı (başlangıç günü - bitiş günü)
arasındaki sütunlara göre veri aktarımı istiyorsunuz.

Tabi burada inputboxlara yazılacak metinlerin:
-- 0'dan büyük ve SAYI/DEĞİL kontrolü,
-- 2'inci inputboxa yazılan sayının 1'nciden büyük olup olmadığının kontrolü,
-- 2'nci inputboxa yazılacak sayının aydaki son gün sayısından küçük (eşit dahil) olduğunun kontrolü

gibi ön kontrol aşamaları olacak demektir.

Bunun yanı sıra bir de KAYNAK belgede 2 farklı güne tekabül eden süreler (başlama ve bitiş tarihleri farklı olanlar) mevcut. Bu tür süre bilgilerinin hangi güne (sütuna) yazdırılacağı hususu da tereddüt doğuran bir durum.

Ayrıca belgedeki ..._SCORING sayfalarının kod bölümünde mevcut Worksheet_Change kodu ile
SAYFA İSMİ değiştiriliyor ve sağa doğru tarihler yazdırılıyor.
Ancak, tüm ay sayfaları hazır iken, diyelim OCAK sayfasında E3 hücresinde Şubat seçildi.
Sağa doğru tarihler değiştiriliyor ancak Şubat isimli sayfa zaten mevcut olduğundan sayfa ismi değiştirilemiyor.

Bence E3 hücresinde, AY İSMİ açılır listesi kullanılmayıp sayfa ismine uygun ay adı hazır ve değiştirilemez olmalıdır.

Her ay sayfasında aynı Worksheet_Change koduun mevcut olması da kodlama tekniği bakımından bence doğru değil. Bu tür, birden çok sayfayı ilgilendiren ...Change kodlarının ThisWorkbook bölümünde yazılması ve buna göre bazı kod değişikliklerinin/eklemelerinin yapılması bence daha doğru.

Şimdilik gördüklerim ve aklıma gelenler bunlar.

Yukarıda değindiğim hususlardan da anlaşılacağı üzere çok kolay / bir çırpıda yazılması biraz zor.
Özel olarak zaman ayrılacak/ilgilenilecek/uğraşılacak bir kodlama olacak gibi görünüyor.
 
Çözüm
Sayın Ömer Bey,

Öncelikle, paylaşmış olduğunuz konudaki kapsamlı ve detaylı incelemeniz için teşekkür ederim. Tespitlerinizin titizlikle yapılmış olması, konuya gösterdiğiniz özeni ve uzmanlık seviyenizi açıkça ortaya koymaktadır. Konuya olan derin bilginiz ve profesyonel yaklaşımınız, forumdaki herkesin bilgi düzeyini artırmakta ve çözüm arayışlarını daha etkili hale getirmektedir.

Özellikle, Excel tabloları üzerinde yapılacak veri aktarımlarıyla ilgili detaylı açıklamalarınız, bu konuda yaşanabilecek sorunların önceden tespit edilmesi adına çok değerli. Önerileriniz, kullanıcı dostu ara yüz tasarımları ve geliştirmeler konusundaki özeniniz, projenin daha etkin ve kullanıcı odaklı bir şekilde yönetilmesini sağlayacaktır.

Aynı zamanda, Worksheet_Change kodlarının ThisWorkbook bölümünde merkezileştirilmesi öneriniz de, kodlama tekniği açısından mantıklı ve düzenli bir yaklaşım sunmaktadır. Bu tür detaylar, uzun vadede projenin sürdürülebilirliğini artırmak adına oldukça önemlidir.

Son olarak, paylaştığınız metin içindeki önerileri anlamak ve detaylı bir şekilde açıklamak, konuya olan hakimiyetinizi ve yardımcı olma isteğinizi gösteriyor. Topluluğunuzdaki bilgi birikimine kattığınız değer için teşekkür ederim.

Umarım, bu öneriler ve tespitler, projenin daha sağlıklı bir şekilde ilerlemesine katkı sağlar. Her bir detayın üzerine düşünülmüş ve düzenlenmiş olduğunu görmek, forumdaki değerli katkılarınızın bir yansımasıdır.

ALLAH sizlerden, sevdiklerinizden ve sebep olanlardan razı olsun. İyi ki varsınız.
İyi çalışmalar dilerim.

Saygılarımla,
 
@Ömer BARAN

Gıyabınızda sizleri çok seviyorum. İyi ki varsınız.
Sizinle ilgili hissettikleri ve düşüncelerimi paylaşmak istedim.

Proje için yukarıda bahsettiğiniz konularda tassarruf hakkı tamamen size aittir.
Sadece koşul, ölcüt, değişkenlerin başvurduğu hücreler, sütunlar değiştirilmemelidir.
Zira bu çalışma network üzerinde 38 adet farklı çalışma kitabı ile haberleşmektedir.

Saygılarımla.
 
Değerli Forumdaş Arkadaşlar,

Konu güncel olup, affınıza sığınarak konu ile ilgilenen var mıdır?
Sayın Ömer bey ilgileneceğini belirtmişti. İnşallah başında kötü bir şeyler yoktur.

Saygılarımla.
 
Yukarıda değindiğim hususlardan da anlaşılacağı üzere çok kolay / bir çırpıda yazılması biraz zor.
Özel olarak zaman ayrılacak/ilgilenilecek/uğraşılacak bir kodlama olacak gibi görünüyor.
Sayın @Believing,

Benim @Ömer BARAN hocamın üstte alıntıladığım kısımdaki yazdıklarından anladığım kadarıyla, (dosyanızı incelemedim) dosyadaki işlemler için harcanacak zaman ya çok fazla uğraş gerektiyor ya da çok fazla yapılması gereken adım var.

Burada, iki farklı öneride bulunabilirim.
  1. Dilerseniz konuyu "Özel Destek"'e dönüştürebilir, tüm istediklerinizi oradan talep edebilirsiniz.
  2. İhtiyaçlarınızı, forum mantığına uygun olarak "parça parça" ve yeni konular şeklinde FORUM SORUSU olarak devam ettirebilirsiniz.
Tercih ve takdir sizlerindir.

İyi çalışmalar,
 
Sayın Ömer Bey,

Kusura bakmayın gecikme için sömestri tatilinin yoğunluğunu yaşıyoruz.
Konuya gösterdiğiniz ilgi için size bir kez daha teşekkür ederim.
Sizin için sorun olan kısımlara aşağıdaki gibi yanıt vermeye çalıştım.

Saygılarımla.
  • Bunun yanı sıra bir de KAYNAK belgede 2 farklı güne tekabül eden süreler (başlama ve bitiş tarihleri farklı olanlar) mevcut. Bu tür süre bilgilerinin hangi güne (sütuna) yazdırılacağı hususu da tereddüt doğuran bir durum.
  • KAYNAK sayfasındaki kayıtlar Başlama Tarihi dikkate alınarak günlük olarak raporlanmakta ve HEDEF sayfaya aktarılmaktadır. KAYANAK sayfadaki Başlama ve Bitiş Tarihi farklı olanlar da dahil, Başlama Tarihi dikkate alınarak mesai saatleri HEDEF sayfaya yazdırılmalıdır.
  • Ayrıca belgedeki ..._SCORING sayfalarının kod bölümünde mevcut Worksheet_Change kodu ile
    SAYFA İSMİ değiştiriliyor ve sağa doğru tarihler yazdırılıyor.
    Ancak, tüm ay sayfaları hazır iken, diyelim OCAK sayfasında E3 hücresinde Şubat seçildi.
    Sağa doğru tarihler değiştiriliyor ancak Şubat isimli sayfa zaten mevcut olduğundan sayfa ismi değiştirilemiyor.
    Bence E3 hücresinde, AY İSMİ açılır listesi kullanılmayıp sayfa ismine uygun ay adı hazır ve değiştirilemez olmalıdır.
  • Haklısınız, E3 sayfa ismine uygun ay adı hazır ve değiştirilemez olmalıdır.
  • Her ay sayfasında aynı Worksheet_Change koduun mevcut olması da kodlama tekniği bakımından bence doğru değil. Bu tür, birden çok sayfayı ilgilendiren ...Change kodlarının ThisWorkbook bölümünde yazılması ve buna göre bazı kod değişikliklerinin/eklemelerinin yapılması bence daha doğru.
  • Haklısınız, tamamen size katılıyorum. Kod yazmayı öğrenmeye çalışan biri olarak hangi modülün nerede, hangi yöntemle daha verimli kullanacağım tam anlamış değilim. Bu kısımda tamamen sizin tasarrufunuza bırakıyorum.

  • KAYNAK sayfadan veriler günlük mutabık kalınarak HEDEF sayfaya aktarıldığında, işlemlerde değişiklik yapılması engellemek için geriye dönük satırlar kilitlenerek düzenlemeye karşı sayfa koruması ile aşağıdaki gibi korunmalıdır.
  • Sayfa Açma Şifresi = 123456
  • Sayfa Koruma Şifresi = 654321
 
Değerli Forumdaş Arkadaşlar,

Konu güncel olup, affınıza sığınarak konu ile ilgilenen var mıdır?
Sayın Ömer bey ilgileneceğini belirtmişti. İnşallah başında kötü bir şeyler yoktur.

Saygılarımla.
 
@Believing merhaba,

Soru - Kapalı Dosyadan InputBox ile Veri Transferi Yapma mesajımda konuya dair aslında sürecin gidişatına dair size bilgi paylaşmıştım.

Ben olaya hakim değilim ama @Ömer BARAN hocamın aktarımından çıkarımım, bu işin bir bütün olarak ele alınmasının bir forum konusu olmaktan öteye geçtiği yönündeydi.

Dilerseniz buradaki konuyu kapatarak, parça parça ihtiyaçlarınızı ayrı ayrı sorularda yazarsanız, o zaman sanırım daha üzerinde durulabilir gibi görünüyor.

İyi çalışmalar,
 
Konuyu başlatan
Yıllık Site Üyesi
Katılım
Konum
Serik - ANTALYA
Konu Bilgi
Durum
Çözüldü 
Forum
Excel Makro Soruları
Başlangıç tarihi
Son yanıt tarihi
Cevaplar
12
Üst