Çözüldü makro tarihlere göre veridağıtma hak.

bycakir

Altın Üye
Katılım
1 Aralık 2017
Mesajlar
220
Excel Vers. ve Dili
Microsoft Office 365 ProPlus
Altın Üyelik Bitiş Tarihi
18-01-2025
merhaba arkadaşlar;

aşağıda üretim planı için hazırlamaya çalıştığım bir excel dosyam var. 1sekmede (HEDEF) 1. macro "veri çek" farklı bir excel den planlamam gereken verileri çekiyorum. aynı yerde 2. macro olan makinelere dağıt seçeneğine nasıl bir öacro koymam gerektiğini bulamadım. burada yapmasını istediğim. 2. sekmede bulunan makineler, g.tarihi yani geliş tarihi ve üzerlerin yazan merkezi numaraları var. "KLP02","KLP01" yazıyor. 1. listede bulunan işleri iş merkezine ve tarihe gore yatay olarak makinelerin mlzm no ve biln tarih yazan kısmına macro ile dağıtmak istiyorum. dağılım sadece iş merkezi olan makinelerde tarihe göre yatay olarak olmalı. yada zaten 1. sayfada gelen işler tarihe sore sıralı geldiğinden sıraya göre yatay dağıtmali ki işler makinelere planlandığında ilk sırada yer alan işler öncelikli tarihli olsun. umarım anlatabilmişimdir. şimdiden teşekkürler.

şifre kaldırılmıştır.
 

Ekli dosyalar

Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.

Yine VBA kısmı şifre korumalı bir dosya için MAKRO destek isteği.
Bu şekilde sonuç almanız pek mümkün görünmüyor.
.
 

bycakir

Altın Üye
Katılım
1 Aralık 2017
Mesajlar
220
Excel Vers. ve Dili
Microsoft Office 365 ProPlus
Altın Üyelik Bitiş Tarihi
18-01-2025
çok özür dilerim unutmuşum şifre kaldırılmıştır.
 
Son düzenleme:

bycakir

Altın Üye
Katılım
1 Aralık 2017
Mesajlar
220
Excel Vers. ve Dili
Microsoft Office 365 ProPlus
Altın Üyelik Bitiş Tarihi
18-01-2025

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.

>> VERİ ÇEK düğmesinin kodlarında yer alan ilgili satırı aşağıdakiyle değiştirin (mevcut haliyle veriler TARİH gibi görünse de TARİH DEĞİL METİN durumunda).
s2.Cells(son, "G") = CDate(Format(s1.Cells(x, "K"), "dd/mm/yyyy"))
Veri kaynağı belgenin örneği olmadığından bu şekilde düzenleme önerdim. Aslında, plan sayfasına aktarma işlemi yapan aşağıdaki kod aynı zamanda bu işi de yapıyor.

>> UserForm: Sorunuzla ilgili olmayyabilir ama; belgenizdeki kodlarda bir userformun açılmasını sağlayan kod var ancak belgede bir userform göremedim.

>>Asıl isteğinize gelince; olması gereken durumu örneklendirmemişsiniz.
Bu nedenle istediğiniz işlem olmayabilir ama aşağıdaki kod ile DAĞIT düğmesini ilişkilendirerek bir deneyin bakalım.


NOT: Verdiğim kod, işlem öncesinde, varsa plan sayfasında mevcut bilgileri silmektedir, önce tedbir olarak plan isimli sayfanın bir kopyasını alın.
Kod:
Sub PLANA_AKTAR()
Set h = Sheets("HEDEF"): Set p = Sheets("plan")
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
p.Cells.UnMerge: p.Cells.Clear
hson = h.Cells(Rows.Count, 1).End(3).Row
    Columns("K:K").Insert Shift:=xlToRight
For hsat = 2 To hson
    h.Cells(hsat, "G") = CDate(h.Cells(hsat, "G").Text)
    h.Cells(hsat, "G").NumberFormat = "m/d/yyyy"
    h.Cells(hsat, "K") = h.Cells(hsat, "J") & "_" & h.Cells(hsat, "G")
    If WorksheetFunction.CountIf(h.Range("K1:K" & hsat), h.Cells(hsat, "K")) = 1 Then
        sut = p.Cells(1, Columns.Count).End(xlToLeft).Column + 4
        p.Cells(1, sut) = h.Cells(hsat, "J"): p.Range(p.Cells(1, sut), p.Cells(1, sut + 3)).Merge
        p.Cells(2, sut) = h.Cells(hsat, "G"): p.Range(p.Cells(2, sut), p.Cells(2, sut + 3)).Merge
      
        p.Cells(3, sut) = "MLZM NO": p.Cells(3, sut + 1) = "BŞLN":
        p.Cells(3, sut + 2) = "BİTİŞ": p.Cells(3, sut + 3) = "PLN SA"
    Else
        For sutt = 5 To h.Cells(2, Columns.Count).End(xlToLeft).Column Step 4
            If p.Cells(1, sutt) = h.Cells(hsat, "J") And p.Cells(2, sutt) = h.Cells(hsat, "G") Then
                sut = sutt
                Exit For
            End If
        Next
    End If
        psat = p.Cells(Rows.Count, sut).End(3).Row + 1
        p.Cells(psat, sut) = h.Cells(hsat, "A")
        p.Cells(psat, sut + 1) = h.Cells(hsat, "G"): p.Cells(psat, sut + 1).NumberFormat = "m/d/yyyy"
        sut = p.Cells(1, Columns.Count).End(xlToLeft).Column
Next
    h.Columns("K:K").Delete Shift:=xlToLeft: p.Columns("A:D").Delete Shift:=xlToLeft
    p.[2:2].NumberFormat = "m/d/yyyy": p.[1:2].HorizontalAlignment = xlCenter
    p.[1:3].Font.Bold = True: p.Columns.AutoFit
    sonn = p.Cells(3, p.Cells(3, Columns.Count).End(xlToLeft).Column).Address(0, 0)
    p.Range("A1:" & sonn).Borders.LineStyle = xlContinuous
Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
MsgBox "İşlem tamamlandı.", vbInformation, "..:: Ömer BARAN ::.."
End Sub
 

bycakir

Altın Üye
Katılım
1 Aralık 2017
Mesajlar
220
Excel Vers. ve Dili
Microsoft Office 365 ProPlus
Altın Üyelik Bitiş Tarihi
18-01-2025
Ömer bey öncelikle çok teşekkür ederim. kod yana dogru tarih düzeninde sıraladı. fakat benim belirlediğim makinaların işmini değiştirdi ve butun listeyi yana doğru tek olarak dağıtıma devam etti. burada değişiklik yapabilirmiyiz yani yana sıralamaya devam edecek klp02 tanımlı makineler yana doğru bittiğinde alt satırda ilk makineden yine devam edecek yani belirlediğimiz makinelerin dışına çıkmayacak şekilde düzenleme yapabilirmiyiz. userformu ben kaldırdım. istediğimi userform ile alamadım açıkcası bu nedenle kaldırdım. ama kodlar kalmış sanırım. veri kaynağı cok buyuk oldugundan eklemedim zaten ilk buton gerekli verileri oradan 1 sayfaya çekiyor oradaki veri düzenin aynısı geleceği için eklemedim. yukarıda belirttiğim gibi yana dağıtırken sınır verip alt satırdan devam et diyebilirmiyiz. buradaki amaç tarih sırtasına göre bütün makinalarımın ilk yapacagı işleri ve tarih sıralamaları düzenli gitmeliki bende bu sıralamalara göre müşterime termin verebilecek duruma geleyim. şimdiden teşekkurler.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Önceki cevabımda da belirttiğim gibi.
OLması gereken durumu örneklendirmediğiniz için; ben isteğinizi tam anlamadığımı belirtmiştim.
A1 : D1'deki KLP02 ile E1 : H1'deki KLP02'nin bir farkı mı var, varsa bunların altındaki A2'deki T1 ve E2'deki T3 nedir (tarih mi?) bilemiyorum.
Yani bir verinin A : D sütununa mı yazılacağı, yoksa E:H sütununa mı yazılacağının kararını nasıl veriyorsunuz?

plan isimli sayfada olması gereken durumu, (olmaması gereken sütunlar varsa onları silip)
mevcut verilere göre elle kopyala yapıştır yaparak ve
1'inci ve 2'satırdaki hücrelerde ne olması gerekiyorsa onları elle yazarak örneklendirirseniz daha hızlı sonuca varılır.
.
 
Son düzenleme:

bycakir

Altın Üye
Katılım
1 Aralık 2017
Mesajlar
220
Excel Vers. ve Dili
Microsoft Office 365 ProPlus
Altın Üyelik Bitiş Tarihi
18-01-2025
Ömer bey tekrardan merhabalar;

öncelikle yardım çabalarınız için minnettarım. bu exceli tamamlayabilirisek bir çok planlamacı arkadaşında faydalanacagını düşünüyorum.

öncelikle sunu belirtmek isterim bu excell kalıphane bölümünde cnc makinalarına iş planı için hazırlamaya çalışıyorum. burada A stunu kalıp kodlarıdır. yapılacak işin kodu a stunundadır bu işi bizden isteme tarihleride D stunundadır biz makinelere öncelikli olarak hangi işleri bağlayacağımızı D stunu belirlemektedir.G stunu ise hangi işin hangi makinelerde yapılabileceğini belirlemektedir. plan sayfasında yer alan KLP01 ler ve altındaki kodların açılımı KLP01 o makinanın sadece tamir kalıplarını yapması gerektiğini belirlememize yarıyor altında yer alan T1 ise CNC makinasının tanımıdır
Benim amacım kalıpları makinelere yatay olarak dagıtmak bunun nedenide ilk gelen ilk yapılsını sağlamak örnek dağılımı el ile yapıyorum.

buradaki dağıtım şeklim, tarihe göre yatay dağılımı yaparken A3 satırında klp2 ler doldu ise a4 satınıdan devam klp2 ler yine doldu a5 den dağıtmaya devam şeklinde böylece her makine de en acil iş planı 1. sırada daha ileri tarihte bana gelen 2. sırada dahada ileri tarıhte bana gelen kalıp 3 sırada vs devam edecek amaçladığımız sistem bu.
 

Ekli dosyalar

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Tekrar merhaba.

Aşağıdaki kod'u kullanabilirsiniz.
NOT: Kod'da yer alan kırmızı renklendirdiğim satır, kod'un işleyişi bakımından bir etkisi olmaksızın
bilgi amaçlı olarak, HEDEF isimli sayfada H sütununa, ilgili satırdaki PARÇA KODU'nun, plan sayfasında yazıldığı hücrenin adresini yazıyor.
Gereksiz ise kırmızı satırı silebilirsiniz.

Rich (BB code):
Sub PLANA_AKTAR2()
Set h = Sheets("HEDEF"): Set p = Sheets("plan")
hson = h.Cells(Rows.Count, 1).End(3).Row
psut = p.Cells(3, Columns.Count).End(xlToLeft).Column

p.Range(p.Cells(4, 1), p.Cells(Rows.Count, psut)).ClearContents
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual

For hsat = 2 To hson
    h.Cells(hsat, "D") = CDate(h.Cells(hsat, "D")): h.Cells(hsat, "Y").NumberFormat = "m/d/yyyy"
    If WorksheetFunction.CountIf(h.Range("G2:G" & hsat), h.Cells(hsat, "G")) = 1 Then
        h.Range("A1:G" & hson).AutoFilter Field:=7, Criteria1:=h.Cells(hsat, "G")
        adet = WorksheetFunction.CountIf(p.[1:1], h.Cells(hsat, "G"))
        ilk = WorksheetFunction.Match(h.Cells(hsat, "G"), p.[1:1], 0)
        psut = ilk
        
        For Each hcr In h.Range("G2:G" & hson).SpecialCells(xlCellTypeVisible)
            If a = adet Then: a = 0: psut = ilk
            a = a + 1: sat = p.Cells(Rows.Count, psut).End(3).Row + 1
            p.Cells(sat, psut) = h.Cells(hcr.Row, "A")
            p.Cells(sat, psut + 1) = CDate(h.Cells(hcr.Row, "D"))
            h.Cells(hcr.Row, "H") = Cells(sat, psut).Address(0, 0)
            psut = psut + 4
        Next: a = 0
    End If
Next
h.Range("A1:G" & hson).AutoFilter Field:=7: p.Columns.AutoFit
Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
MsgBox "İşlem tamamlandı.", vbInformation, "..:: Ömer BARAN ::.."
End Sub
 
Son düzenleme:

bycakir

Altın Üye
Katılım
1 Aralık 2017
Mesajlar
220
Excel Vers. ve Dili
Microsoft Office 365 ProPlus
Altın Üyelik Bitiş Tarihi
18-01-2025
çok teşekkürler ömer bey sorunsuz çalıştı ellerinize sağlık
 

bycakir

Altın Üye
Katılım
1 Aralık 2017
Mesajlar
220
Excel Vers. ve Dili
Microsoft Office 365 ProPlus
Altın Üyelik Bitiş Tarihi
18-01-2025
başlığı düzenleyemiyorum. sorunum çözüldü yetkili arkadaşlar başlıktaki soru ibaresini çözüldü olarak değiştirebilirmi ?
 

bycakir

Altın Üye
Katılım
1 Aralık 2017
Mesajlar
220
Excel Vers. ve Dili
Microsoft Office 365 ProPlus
Altın Üyelik Bitiş Tarihi
18-01-2025
Ömer bey bir konuda daha bilginize başvurmak istiyorum. extra olarak eklediğiniz tanım çok işime yarayacak fakat sorguyu su sekilde değiştirebilir isek verdiğiniz kod
Kod:
h.Cells(hcr.Row, "H") = Cells(sat, psut).Address(0, 0)
bu idi bu kod bana malzeme min hangi hucrede oldugunu veriyor.
bana şöyle bir değişiklik gerekiyor.

ben hucre adresini değil 2 stun yanındaki hücrenin içeriğini getirmek istiyorum. bu hücre termin tarihleri olacagından cok işime yarayacaktır.
detaylandırmam gerekir ise

kalıp kodunu a2 hucresine planladık sizin eklediğiniz kod bana A2 olarak veriyor.ben c2 deki el ile yazacagım terminleri burada görmek istiyorum. mümkünmüdür.?
 

bycakir

Altın Üye
Katılım
1 Aralık 2017
Mesajlar
220
Excel Vers. ve Dili
Microsoft Office 365 ProPlus
Altın Üyelik Bitiş Tarihi
18-01-2025

bycakir

Altın Üye
Katılım
1 Aralık 2017
Mesajlar
220
Excel Vers. ve Dili
Microsoft Office 365 ProPlus
Altın Üyelik Bitiş Tarihi
18-01-2025

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.
Aşağıdaki gibi olur.
Rich (BB code):
h.Cells(hcr.Row, "H") = h.Cells(sat, psut + 2)
 

bycakir

Altın Üye
Katılım
1 Aralık 2017
Mesajlar
220
Excel Vers. ve Dili
Microsoft Office 365 ProPlus
Altın Üyelik Bitiş Tarihi
18-01-2025
olmadı hocam sanırım benim planda eklemem gerekecek buna verileri dağıt dediğimde planlanan bitişide hesaplatmadan termin gelmeyecek
yinede teşekkürler.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Yanlış anlamış olabilirim.
Son zamanlarda biraz iş yoğunluğum var.
En iyisi örnek belgede istenilen sonucu elle yazarak örneklendirip yeni bir örnek belge yükleyin.
Uygun zamanım olursa bakarım.
 

bycakir

Altın Üye
Katılım
1 Aralık 2017
Mesajlar
220
Excel Vers. ve Dili
Microsoft Office 365 ProPlus
Altın Üyelik Bitiş Tarihi
18-01-2025
tekrar merhabalar. excel çalışmamı ekledim ömer bey. üzerine biraz eklemelerim oldu bu nedenle sorumu söyle değiştirmek isterim excel dagılımı yapıyor ben dağılıma plan sayfasında plan içerikli hücreleride ekledim. fakat orada dağılımı yapamadım plan sayfasında 4 üncü satırdaki planiçerikli hücrelerin hepsine hedefte gördüğü J2 hücresini yazsın4 satırı bitirip 5 satıra geçtiğinde j3 hücresini yazmaya başlasın. daha sonra bu plandaki tarihleri sizin yaptıgınız hedeftehi h stununa getir sin istiyorum.

amacım 1 makina doldugunda işlerin bitiş süresini de eklimek ve bu sureyi hedefte sizin H stununa adres yazdırdığınız yere bitiş sürelerini getirtmek
böylece hedef stunundan müşterilerime direk termin verebilicek durumda olacagım şimndiden ilginize teşekkürler.

Not ben plan sayfasındaki plan hücrelerine tarih ve saati getirttim ama ya sabit tutabildim. yani istediğim olmadı
 

Ekli dosyalar

bycakir

Altın Üye
Katılım
1 Aralık 2017
Mesajlar
220
Excel Vers. ve Dili
Microsoft Office 365 ProPlus
Altın Üyelik Bitiş Tarihi
18-01-2025

bycakir

Altın Üye
Katılım
1 Aralık 2017
Mesajlar
220
Excel Vers. ve Dili
Microsoft Office 365 ProPlus
Altın Üyelik Bitiş Tarihi
18-01-2025
Üst