Bakım Planını tarihlere göre hazırlamak&güncellemek

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Merhaba

Ekte bakım planı formatı var. Yapmak istediğimiz kısaca şöyle;

Bakım planı ve kayıt olarak iki sayfamız var. Kayıt sayfasında hem arıza, hem de planlı bakımlar işleniyor. Bizim Bakım planına işlememiz gerekenler Planlı bakımlar. Kayıt sayfasında Bakım Türü sütununda "P" ile gösteriyoruz.

Bakım planı sayfasında makina listesi var. Listenin sağ tarafında haftalar mevcut. Yapmaya çalıştığımız şey, bakım sıralaması sütunundaki hafta sıralamasını plana işlesin. Örnek; 1 nolu makina 1-25-49 haftalarda bakım planlanmış. Kayıt sayfasını kontrol etsin, ilgili haftaların olduğu hücreye bakım yapıldıysa "G", yapılmadıysa "P" yazsın. Bunu bütün makinalara yapmak gerekiyor. Yardımcı olabilir misiniz?
 

Ekli dosyalar

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Merhaba

Ekte bakım planı formatı var. Yapmak istediğimiz kısaca şöyle;

Bakım planı ve kayıt olarak iki sayfamız var. Kayıt sayfasında hem arıza, hem de planlı bakımlar işleniyor. Bizim Bakım planına işlememiz gerekenler Planlı bakımlar. Kayıt sayfasında Bakım Türü sütununda "P" ile gösteriyoruz.

Bakım planı sayfasında makina listesi var. Listenin sağ tarafında haftalar mevcut. Yapmaya çalıştığımız şey, bakım sıralaması sütunundaki hafta sıralamasını plana işlesin. Örnek; 1 nolu makina 1-25-49 haftalarda bakım planlanmış. Kayıt sayfasını kontrol etsin, ilgili haftaların olduğu hücreye bakım yapıldıysa "G", yapılmadıysa "P" yazsın. Bunu bütün makinalara yapmak gerekiyor. Yardımcı olabilir misiniz?
Yardımcı olabilecek var mı?
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Yardımcı olabilecek var mı?
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,655
Excel Vers. ve Dili
Microsoft 365 Tr-64
Bakım Plan sayfanızla KAYIT sayfanızı örtüştüremedim.
Bakım Plan sayfasında Makineleri Kayıt sayfasından nasıl eşleştireceğiz.

Dosyanızı 3-4 makine için doğru şekilde doldurabilirseniz bunun üzerinden ilerlenebilir
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Dosyanın orjinalini ekledim. Bunun üzerinden gidebiliriz. "P" yerine "O", "G" yerine "X" kullandım. Yazdığım formülde planlanan haftalarda "O" ile gösterebiliyorum. Ama çoğu zaman planlanan haftada bakım yapıldıysa "X" işaretini koymuyor. Bunu becerebilirsek, yani planlanmış haftalara "O" işareti koyacak. Planlanmış hafta içinde bakım gerçekleştiyse "X" koyacak.
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,655
Excel Vers. ve Dili
Microsoft 365 Tr-64
Bu dosya üzerinden Sayfa Adlarını ve Hücre referanslarını vererek sorunuzu tekrar sorar mısınız?
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Orjinal dosya üzerinden anlatıyorum. Bakım kayıtları ve P.Bakım sayfamız var. Yıl içerisinde yapılan bakımların hepsi (arıza, planlı) bu sayfaya işlenir. P.Bakım sayfasında ise sadece planlı bakımların durumu takip edilir. P.Bakım sayfasında Baş.Hafta sütunu referans alınarak (bakım sıklığına göre) yıl içindeki bakım haftaları belirlenir ve bunlar Bakım Sırası sütunlarına yazılır (formülle hesaplanır.).
Yapmak istediğimiz nedir? Her tezgahın bakım sırası sütunlarındaki haftalara göre planlanan bakım zamanlarını planda "O" ile göstermek (bunu formülle yaptırdım). Yine aynı sayfa üzerinde eğer bu planlanan bakımlar gerçekleşti ise (bunun kontrolünü Bakım kayıtları sayfasına bakarak yapıyoruz) gerçekleşen hafta içinde "X" koymak. Örneğin; 1 nolu tezgahın 11 ve 35. haftalarda planlı bakımı var diyelim. Planda bu haftalarda "O" işaretini görürüz. Planlanmış bu bakımlar eğer aynı haftalarda gerçekleşti ise 11 ve 35. haftalarda bu sefer "O" yerine "X" görmemiz gerekiyor.Farklı haftalarda gerçekleşti ise bu sefer gerçekleşen haftalara "X" işareti konulmalı. Yapamadığım kısımda bu, gerçekleşen bakımlar için "X" işaretini otomatik koydurmayı başaramadım.
Biraz uzun oldu ama umarım atladığım bir yer yoktur. Dediğim gibi, gerçekleşen planlı bakımlar için bakım planına ilgili haftaya "X" koymaya çalışıyorum ama beceremedim. Yardımcı olursanız sevinirim.
 
Katılım
15 Mart 2005
Mesajlar
353
Excel Vers. ve Dili
Microsoft 365 En 64 Bit
Altın Üyelik Bitiş Tarihi
20-03-2024
Merhaba,

Sorunuzdan çıkardığım anlama göre:

K4 hücresine aşağıdaki formülü yazın. tüm tabloya uygulayın.

C++:
=IF(SUMPRODUCT(('Bakım Kayıtları.'!$A$4:$A$1375=$A4)*('Bakım Kayıtları.'!$M$4:$M$1375=K$3))>0;"X";IF(ISERROR(MATCH(K$3;$F4:$J4;0))=FALSE;"O";""))
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Merhaba,

Sorunuzdan çıkardığım anlama göre:

K4 hücresine aşağıdaki formülü yazın. tüm tabloya uygulayın.

C++:
=IF(SUMPRODUCT(('Bakım Kayıtları.'!$A$4:$A$1375=$A4)*('Bakım Kayıtları.'!$M$4:$M$1375=K$3))>0;"X";IF(ISERROR(MATCH(K$3;$F4:$J4;0))=FALSE;"O";""))
Merhaba,

Çok teşekkür ederim formül için, çok güzel çalışıyor. Topla.Çarpım kullanmıştım ama kaçıncı fonksiyonu aklıma gelmemişti. İlaç gibi geldi, gerçekten çok teşekkür ederim.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,655
Excel Vers. ve Dili
Microsoft 365 Tr-64
Çözüm olduğuna göre bir işlem yapmaya gerek yok anlıyorum.
@dost ben de teşekkür ederim.
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Merhaba,

Dosya aynı olduğu için bu konu üzerinden devam edeceğim.

Haftalık Bakım Listesinde aşağıdaki kodu kullanıyordum. Ancak ne olduysa kod artık doğru çalışmıyor. Kodu çalıştırınca göreceksiniz birşeyleri hatalı alıyor. Neden olduğunu anlamadım, yardımcı olabilir misiniz?

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A1:B1]) Is Nothing Then Exit Sub
HAFTALIK_BAKIMLAR
End Sub

Sub HAFTALIK_BAKIMLAR()
Set h = ThisWorkbook.Sheets("Haftalık Bakım Listesi")
Set m = ThisWorkbook.Sheets("MAKİNA LİSTESİ")

If h.[A1] = "" Or h.[B1] = "" Then MsgBox "B1 hücresinden hafta seçimi yapınız..": Exit Sub
haf = h.[A1]: trh1 = DateSerial(h.[B1], 1, 1)
bbas = trh1 - Weekday(trh1, 2) + 1 + (haf) * 7
bson = trh1 + 7 - Weekday(trh1, 2) + (haf) * 7

h.[C1] = Format(bbas, "dd.mm.yyyy") & " - " & Format(bson, "dd.mm.yyyy") & _
" HAFTASINDA YAPILACAK PERİYODİK BAKIM LİSTESİ"
h.[C1].Font.ColorIndex = xlAutomatic: h.[C1].Font.Size = 12
h.[C1].Characters(Start:=1, Length:=23).Font.Color = vbRed
h.[C1].Characters(Start:=1, Length:=23).Font.Size = 18
h.Range("A3:H" & Rows.Count).Clear
Application.ScreenUpdating = False
For s = 5 To m.Cells(Rows.Count, 1).End(3).Row
If Not IsDate(m.Cells(s, 15)) Or m.Cells(s, 1) = "" Then GoTo 20
ilk = m.Cells(s, 15): rtm = m.Cells(s, 14)
For t = 0 To 120
trhh = DateAdd("m", t * rtm, ilk)
If DateAdd("m", t * rtm, ilk) >= bbas And DateAdd("m", t * rtm, ilk) <= bson Then
XD = XD + 1: h.Cells(XD + 2, 1) = XD: h.Cells(XD + 2, 2) = s & " - " & m.Cells(s, 1)
h.Cells(XD + 2, 3) = m.Cells(s, 3) & " - " & m.Cells(s, 4)
h.Cells(XD + 2, 4) = rtm: h.Cells(XD + 2, 5) = t + 1
h.Cells(XD + 2, 6) = DateAdd("m", t * rtm, ilk)
h.Cells(XD + 2, 7) = DateAdd("m", (t + 1) * rtm, ilk)
h.Range("A" & XD + 2 & ":H" & XD + 2).Borders.Weight = xlHairline
End If
10: Next
20: Next
If XD = Empty Then GoTo bitir
h.Range("A3:H" & XD + 2).HorizontalAlignment = xlCenter
h.Range("C3:C" & XD + 2).HorizontalAlignment = xlGeneral
h.Range("A3:H" & XD + 2).VerticalAlignment = xlCenter
h.Rows("3:" & XD + 2).RowHeight = 15: h.[A1].Activate
bitir: Application.ScreenUpdating = True
If XD = Empty Then h.[C3] = Replace(h.[C1], "LİSTESİ", "YOK"): h.[C3].Font.Color = vbRed
End Sub
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,655
Excel Vers. ve Dili
Microsoft 365 Tr-64
A1 hücresine bağladığınız değer dönüştürücüyü silin.
Yerine ActiveX denetimlerinden DeğerDeğiştmeDüğmesi (SpinButton) Ekleyin.

Kod Penceresine aşağıdakileri ilave edin
C++:
Private Sub SpinButton1_SpinDown()
    Range("A1") = WorksheetFunction.Max(1, Range("A1") - 1)
End Sub
Private Sub SpinButton1_SpinUp()
    Range("A1") = WorksheetFunction.Min(53, Range("A1") + 1)
End Sub
Son olarak da Worksheet_Change kodlarınıza ufak ilaveleri yapın.
C++:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [A1:B1]) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    HAFTALIK_BAKIMLAR
    Application.EnableEvents = True
End Sub
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Öncelikle cevabınız için çok teşekkür ederim.
Söylediklerinizi ekli dosyada yapmaya çalıştım. Daha önce yanlışta olsa veri getiriyordu. Örneğin 40.haftada 17 tezgahı getirmesi lazım. Şimdi listeye getirecek veri yok diyor. Birşeyi hatalı mı yapıyorum?
 

Ekli dosyalar

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
yardımcı olabilecek var mı acaba?
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,655
Excel Vers. ve Dili
Microsoft 365 Tr-64
A1 hücresine bağladığınız değer dönüştürücüyü silin.
Yerine ActiveX denetimlerinden DeğerDeğiştmeDüğmesi (SpinButton) Ekleyin.


Önceki mesajımda bu dediğimi yaptınız mı?
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
A1 hücresine bağladığınız değer dönüştürücüyü silin.
Yerine ActiveX denetimlerinden DeğerDeğiştmeDüğmesi (SpinButton) Ekleyin.


Önceki mesajımda bu dediğimi yaptınız mı?
Evet, ekteki dosyada benim eklediğim spinbutton var.
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,655
Excel Vers. ve Dili
Microsoft 365 Tr-64
Sizin kullandığınız form denetimi.
Alt kısımdakilerdeki ise ActiveX denetimi.

Kullanmanızı istediğim ActiveX denetimidir.

#12 nolu mesajımdaki içeriği aynen uygularsanız problem olmayacaktır.

239687
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Merhaba Sayın Ömer Faruk bey,

Öncelikle hatam için özür dilerim. Dediğinizi yaptım, düğmeler çalışıyor ama makroda hala bir gariplik var. 41.haftayı seçiyorum. 20 adet tezgah gelmeli plana göre (16,314,315,365,366,367,368,369,370,371,372,373,413,415,416,419,420,421,422,423) ama kendi kafasına göre 38.haftadan 6 adet tezgah listeye getiriyor. Bunu çözemedim. Bu konuda yardımcı olursanız çok sevineceğim.

Sub HAFTALIK_BAKIMLAR()
Set h = ThisWorkbook.Sheets("Haftalık Bakım Listesi")
Set m = ThisWorkbook.Sheets("MAKİNA LİSTESİ")

If h.[A1] = "" Or h.[B1] = "" Then MsgBox "B1 hücresinden hafta seçimi yapınız..": Exit Sub
haf = h.[A1]: trh1 = DateSerial(h.[B1], 1, 1)' buradan itibaren haftayı seçmeye başlıyor ama makina haftasını seçerken sorun oluyor.
bbas = trh1 - Weekday(trh1, 2) + 1 + (haf - 1) * 7
bson = trh1 + 7 - Weekday(trh1, 2) + (haf - 1) * 7

h.[C1] = Format(bbas, "dd.mm.yyyy") & " - " & Format(bson, "dd.mm.yyyy") & _
" HAFTASINDA YAPILACAK PERİYODİK BAKIM LİSTESİ"
h.[C1].Font.ColorIndex = xlAutomatic: h.[C1].Font.Size = 12
h.[C1].Characters(Start:=1, Length:=23).Font.Color = vbRed
h.[C1].Characters(Start:=1, Length:=23).Font.Size = 18
h.Range("A3:H" & Rows.Count).Clear
Application.ScreenUpdating = False
For s = 5 To m.Cells(Rows.Count, 2).End(3).Row
If Not IsDate(m.Cells(s, 15)) Or m.Cells(s, 2) = "" Then GoTo 20
ilk = m.Cells(s, 15): rtm = m.Cells(s, 14)
For t = 0 To 120
trhh = DateAdd("m", t * rtm, ilk)
If DateAdd("m", t * rtm, ilk) >= bbas And DateAdd("m", t * rtm, ilk) <= bson Then
XD = XD + 1: h.Cells(XD + 2, 1) = XD: h.Cells(XD + 2, 2) = s & " - " & m.Cells(s, 2)
h.Cells(XD + 2, 3) = m.Cells(s, 3) & " - " & m.Cells(s, 4)
h.Cells(XD + 2, 4) = rtm: h.Cells(XD + 2, 5) = t + 1
h.Cells(XD + 2, 6) = DateAdd("m", t * rtm, ilk)
h.Cells(XD + 2, 7) = DateAdd("m", (t + 1) * rtm, ilk)
h.Range("A" & XD + 2 & ":H" & XD + 2).Borders.Weight = xlHairline
End If
10: Next
20: Next
If XD = Empty Then GoTo bitir
h.Range("A3:H" & XD + 2).HorizontalAlignment = xlCenter
h.Range("C3:C" & XD + 2).HorizontalAlignment = xlGeneral
h.Range("A3:H" & XD + 2).VerticalAlignment = xlCenter
h.Rows("3:" & XD + 2).RowHeight = 15: h.[A1].Activate
bitir: Application.ScreenUpdating = True
If XD = Empty Then h.[C3] = Replace(h.[C1], "LİSTESİ", "YOK"): h.[C3].Font.Color = vbRed
End Sub
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,655
Excel Vers. ve Dili
Microsoft 365 Tr-64
Kodlamanızda atladığınız basit bir matematik hatası yapıyorsunuz bence.
Daha detaylı yardım edebilmek için kodlarınızı anlamak için vakit harcamam gerekiyor.
Şu an çok müsait değilim. Siz rahatlıkla bulabilirsiniz. Nihayetinde sizin oluşturduğunuz bir algoritma.
Kodları F8 ile adım adım gidebilirsiniz.
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Kodlamanızda atladığınız basit bir matematik hatası yapıyorsunuz bence.
Daha detaylı yardım edebilmek için kodlarınızı anlamak için vakit harcamam gerekiyor.
Şu an çok müsait değilim. Siz rahatlıkla bulabilirsiniz. Nihayetinde sizin oluşturduğunuz bir algoritma.
Kodları F8 ile adım adım gidebilirsiniz.
Dediğinizi yapamadığım için zaten buradayım :)
Bu algoritmayı yazanda ben değilim, bunu da buradan almıştım. Canınız sağolsun, ilginize teşekkür ederim. Ben aramaya devam edeceğim, ama yardımcı olabilecek birileri varsa sevinirim.
 
Üst