Ana içeriğe atla

Excel İle Depo Sayim Programi Yapmak

Merhaba,

Bir çok firma kullandıkları sistemde yer alan stok listesiyle, gerçek durumu kontrol etmek için sayım yapar. Sayım firmaların en çok zaman kaybettikleri ve verimliliğin dibe vurduğu bir iştir. Sayım işlem hem çok zaman almakla birlikte çalışan kişilerin dikkatsizlikleri ya da art niyetli olmalarından kaynaklanan bir çok hatalı sonuçlar verir.



Firma sahipleri veya şirket yöneticileri, sorumlu olduğu işi en iyi şekilde kontrol edebilmeleri için insan etkisini en aza indirici tedbirler almak ister. Sayım işleminde insan etkisini en aza indirebilmek biraz Excel bilgisi ile mümkündür. Üstelik bunun için hiç bir bedel ödemeden gerçekleştirebilir.

Burada yapacağımız sayım programı oldukça sade bir programdır. Aynı anda bir çok kişi fiziki sayımı gerçekleştirebilir. Böylelikle bir kişinin 10 saatte yapabileceği bir sayım 10 kişinin 1 saatte yapmasıyla büyük zaman kazanılmış olur. Sayımı yapacak kişilerin herhangi bir bilgisayar bilgisine ihtiyacı yoktur. Sadece barkod okuyucunun okuma tetiğine basması yeterlidir.

Sayım programı iki Excel çalışma kitabında içinde bazı macro ve visual basic programlarından oluşur. Merak etmeyin o kadar zor değil. Bu sayfada tüm code'ları açık bir şekilde vereceğim. Sadece sayım kontrolünü yapacak kişi bir kaç basit konuya dikkat etmesi gerekir.

Sayım kontrol için iki liste gereklidir. Birincisi fiziki sayım listesi, ikincisi kullanılan sistemden alınan liste. Kullanılan sistem her firmada farklı olabilir. IFS, Micro, LOGO bazı programlar örnektir. Önemli olan kullanılan sistem programından stok sayım listesinin alınabilir olmasıdır.

Sayım İşlemi 

Sayım işlem genel olarak 4 aşamada tamamlanır. 
  1. Kullanılan sistemden alınan liste elde edilir. Bu liste bilgisayarlarda kullandığınız programlarda sayıma gerek duyulan ürünlerin kendine has numaralarının kaydedildiği veri deposundan elde edilir. Örneğin Cep telefonları için IMEI numarası, müşteri hizmetleri için form numarası, ürn barkod numarası gibi...Bu listenin boş bir excel dosyasına kaydedilmesi.
  2. Sistemden alınan listenin gerçekte var olduğunu, ilgili ürünlerin uygun seri numaralarının barkod okuyucu ile fiziki olarak excel dosyamızın ilkine kaydedilmesi. 
  3. Oluşturulan iki listenin birlikte yapacağımız Sayım Kontrol Programımızda çalıştırılarak farklılıkların tespit edilmesi. Programımız farklılık listesini iki yönlü oluşturur. Böylelikle insan hataları ya da art niyetlileri tespit eder. 
  4. Programın oluşturduğu farklılık listesinde belirtilen ürünlerin listesi, ilgili kişilere verilerek bulması istenir. Herhangi bir müdahale yapılmaması için fiziki olarak ürünler talep edilir. 

Sayım İşlemi 1. Adım

Kullanılan sistem programından elde edilen liste, ürünlerin kendine has numarasını içermelidir. Örneğin bir teknik serviste cihazların kayıt form numarası, bir bilgisayar mağazada ürünlerin barkod numarası gibi.. Bu liste fizik sayım yapılırken kullanılan barkod okuyucuların okuduğu değerlerle aynı olmalıdır. Eğer aynı değilse sistem programında elde edilecek liste bu mantığa göre belirlenmelidir. 

Sayım İşlemi 2.Adım

İkinci adım fizik olarak sayımı yapılacak ürünleri ilgili değerlerin barkod okuyucu ya da manuel elle yazılabileceği Excel çalışma kitabını oluşturalım. Öncelikle basit bir Excel çalışma kitabı açalım. Otomatik olarak 3 sayfa gelecektir. Bu saya isimlerini aşağıda macro kodlarında görülen isimlerde isimler verelim. MASA1 , MASA2 ... gibi sayım yapacak kişi ismi kadar Masa oluşturalım. Son olarak İlgili kişilerin yapığı sayımları birleştiren TOPLAM sayfasını da oluşturalım. Bu çalışma kitabında toplam 11 Sayfa oluşturduk. Ekran görüntüsü aşağıdaki gibidir.
 Toplam Sayfasında, LİSTELE ve TEMİZLE isminde iki tane buton vardır. Sayıma başlamadan önce daha önceki MASA verilerinin silinmesi ve temizlenmesi için kullanılır. 

TEMİZLE Butonu Macro'su

Sub temizle()
'
' temizle Macro
' Macro recorded 16.01.2007 by Zafer_Olgun
'

'
    Range("A2:B5000").Select
    Selection.ClearContents
    Range("A2").Select
    Sheets("MASA-10").Select
    Range("A2:B5000").Select
    Selection.ClearContents
    Range("A2").Select
    Sheets("MASA-9").Select
    Range("A2:B5000").Select
    Selection.ClearContents
    Range("A2").Select
    Sheets("MASA-8").Select
    Range("A2:B5000").Select
    Selection.ClearContents
    Range("A2").Select
    Sheets("MASA-7").Select
    Range("A2:B5000").Select
    Selection.ClearContents
    Sheets("MASA-6").Select
    Range("A2:B5000").Select
    Selection.ClearContents
    Sheets("MASA-5").Select
    Range("A2:B5000").Select
    Selection.ClearContents
    Sheets("MASA-4").Select
    Range("A2:B5000").Select
    Selection.ClearContents
    Sheets("MASA-3").Select
    Range("A2:B5000").Select
    Selection.ClearContents
    Sheets("MASA-2").Select
    Range("A2:B5000").Select
    Selection.ClearContents
    Sheets("MASA-1").Select
    Range("A2:B5000").Select
    Selection.ClearContents
End Sub

LİSTELE Butonu Macro'su ( Makro nun ismi "AKTAR")

Sub AKTAR()
'
' AKTAR Macro
' Macro recorded 09.01.2007 by Zafer_Olgun
'
Dim m1, m2, m3, m4, m5, m6, m7, m8, m9, m10 As Integer
Dim n1, n2, n3, n4, n5, n6, n7, n8, n9, n10 As Integer
Dim t As Integer

'Sil
    Sheets("Toplam").Select
    Columns("A:B").Select
    Selection.ClearContents
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "Sayım"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Kullanıcı Adı"
    Range("A2").Select

'**********************************
Sheets("MASA-1").Select
m1 = 2
While Sheets("MASA-1").Cells(m1, 1) <> ""
m1 = m1 + 1
Wend
If m1 > 2 Then
ActiveWorkbook.Names.Add "masa1", "=OFFSET('MASA-1'!R1C1," & 1 & ", 0, " & (m1 - 2) & ", 2)"
Range("masa1").Select

Selection.Copy
Sheets("TOPLAM").Select
t = 2
While Sheets("TOPLAM").Cells(t, 1) <> ""
t = t + 1
Wend
Sheets("Toplam").Cells(t, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
'**********************************
Sheets("MASA-2").Select
m2 = 2
While Sheets("MASA-2").Cells(m2, 1) <> ""
m2 = m2 + 1
Wend
If m2 > 2 Then
ActiveWorkbook.Names.Add "masa2", "=OFFSET('MASA-2'!R1C1," & 1 & ", 0, " & (m2 - 2) & ", 2)"
Range("masa2").Select

Selection.Copy
Sheets("TOPLAM").Select
t = 2
While Sheets("TOPLAM").Cells(t, 1) <> ""
t = t + 1
Wend
Sheets("Toplam").Cells(t, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
'***************************
Sheets("MASA-3").Select
m3 = 2
While Sheets("MASA-3").Cells(m3, 1) <> ""
m3 = m3 + 1
Wend
If m3 > 2 Then
ActiveWorkbook.Names.Add "masa3", "=OFFSET('MASA-3'!R1C1," & 1 & ", 0, " & (m3 - 2) & ", 2)"
Range("masa3").Select

Selection.Copy
Sheets("TOPLAM").Select
t = 2
While Sheets("TOPLAM").Cells(t, 1) <> ""
t = t + 1
Wend
Sheets("Toplam").Cells(t, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
'***************************
Sheets("MASA-4").Select
m4 = 2
While Sheets("MASA-4").Cells(m4, 1) <> ""
m4 = m4 + 1
Wend
If m4 > 2 Then
ActiveWorkbook.Names.Add "masa4", "=OFFSET('MASA-4'!R1C1," & 1 & ", 0, " & (m4 - 2) & ", 2)"
Range("masa4").Select

Selection.Copy
Sheets("TOPLAM").Select
t = 2
While Sheets("TOPLAM").Cells(t, 1) <> ""
t = t + 1
Wend
Sheets("Toplam").Cells(t, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
'***************************
Sheets("MASA-5").Select
m5 = 2
While Sheets("MASA-5").Cells(m5, 1) <> ""
m5 = m5 + 1
Wend
If m5 > 2 Then
ActiveWorkbook.Names.Add "masa5", "=OFFSET('MASA-5'!R1C1," & 1 & ", 0, " & (m5 - 2) & ", 2)"
Range("masa5").Select

Selection.Copy
Sheets("TOPLAM").Select
t = 2
While Sheets("TOPLAM").Cells(t, 1) <> ""
t = t + 1
Wend
Sheets("Toplam").Cells(t, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
'***************************
Sheets("MASA-6").Select
m6 = 2
While Sheets("MASA-6").Cells(m6, 1) <> ""
m6 = m6 + 1
Wend
If m6 > 2 Then
ActiveWorkbook.Names.Add "masa6", "=OFFSET('MASA-6'!R1C1," & 1 & ", 0, " & (m6 - 2) & ", 2)"
Range("masa6").Select

Selection.Copy
Sheets("TOPLAM").Select
t = 2
While Sheets("TOPLAM").Cells(t, 1) <> ""
t = t + 1
Wend
Sheets("Toplam").Cells(t, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
'***************************
Sheets("MASA-7").Select
m7 = 2
While Sheets("MASA-7").Cells(m7, 1) <> ""
m7 = m7 + 1
Wend
If m7 > 2 Then
ActiveWorkbook.Names.Add "masa7", "=OFFSET('MASA-7'!R1C1," & 1 & ", 0, " & (m7 - 2) & ", 2)"
Range("masa7").Select

Selection.Copy
Sheets("TOPLAM").Select
t = 2
While Sheets("TOPLAM").Cells(t, 1) <> ""
t = t + 1
Wend
Sheets("Toplam").Cells(t, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
'***************************
Sheets("MASA-8").Select
m8 = 2
While Sheets("MASA-8").Cells(m8, 1) <> ""
m8 = m8 + 1
Wend
If m8 > 2 Then
ActiveWorkbook.Names.Add "masa8", "=OFFSET('MASA-8'!R1C1," & 1 & ", 0, " & (m8 - 2) & ", 2)"
Range("masa8").Select

Selection.Copy
Sheets("TOPLAM").Select
t = 2
While Sheets("TOPLAM").Cells(t, 1) <> ""
t = t + 1
Wend
Sheets("Toplam").Cells(t, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
'***************************
Sheets("MASA-9").Select
m9 = 2
While Sheets("MASA-9").Cells(m9, 1) <> ""
m9 = m9 + 1
Wend
If m9 > 2 Then
ActiveWorkbook.Names.Add "masa9", "=OFFSET('MASA-9'!R1C1," & 1 & ", 0, " & (m9 - 2) & ", 2)"
Range("masa9").Select

Selection.Copy
Sheets("TOPLAM").Select
t = 2
While Sheets("TOPLAM").Cells(t, 1) <> ""
t = t + 1
Wend
Sheets("Toplam").Cells(t, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If

'***************************
Sheets("MASA-10").Select
m10 = 2
While Sheets("MASA-10").Cells(m10, 1) <> ""
m10 = m10 + 1
Wend
If m10 > 2 Then
ActiveWorkbook.Names.Add "masa10", "=OFFSET('MASA-10'!R1C1," & 1 & ", 0, " & (m10 - 2) & ", 2)"
Range("masa10").Select

Selection.Copy
Sheets("TOPLAM").Select
t = 2
While Sheets("TOPLAM").Cells(t, 1) <> ""
t = t + 1
Wend
Sheets("Toplam").Cells(t, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Sheets("TOPLAM").Select
Range("a2").Select


End Sub

Her bir Sayfaya ait Visual Basic Change Code ları 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x, y As Integer
    ActiveCell.Select
    x = ActiveCell.Row
    y = ActiveCell.Column
    Sheets("MASA-1").Cells((x - 1), (y + 1)) = Application.UserName
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x, y As Integer
    ActiveCell.Select
    x = ActiveCell.Row
    y = ActiveCell.Column
    Sheets("MASA-2").Cells((x - 1), (y + 1)) = Application.UserName

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x, y As Integer
    ActiveCell.Select
    x = ActiveCell.Row
    y = ActiveCell.Column
    Sheets("MASA-3").Cells((x - 1), (y + 1)) = Application.UserName

End Sub

Bu şekilde MASA-10 a kadar aynı kodlar visual basic editörde "Microsoft Excel Object" bölümünde ilgili sayfa üzerine tıklandığında sağ taraftaki bölüme yazılır. Ekran görüntüsü aşağıdadır. 

Bu arada aynı anda 10 kişinin sayım yapabilmesi için bu kodlar tamamlandıktan sonra çalışma kitabını paylaşımlı hale getirmek zorundayız. Bu konu hakkında daha fazla bilgi Çalışma Kitabını Paylaşıma Açmak isimli konuda bulabilirsiniz.

Şimdilik anlatacaklarım bu kadar. Bir sonraki konumuzda Sayım Kontrol bölümünde, bu konuda bahsettiğim TOPLAM sayfasında birleştirilmiş sayım listesi ve sistemden alınan listenin kontrolu ve sonuçlarının değerlendirilmesi anlatılacaktır.

Konuyla ilgili sorularınız için yorumlarınız bekliyorum. 

Sevgiyle Kalın.
Zafer















Yorumlar

Bu blogdaki popüler yayınlar

Excel ile Teknik Servis Arıza Kayıt Formu - Visual Basic

Arkadaşlar Merhaba, Bu bölümde Excel'de Visual Basic Editör ortamında Teknik Servis Arıza Kayıt Formunun hazırlanmasını göreceğiz. Hazırladığımız formu bir önceki derste oluşturduğumuz macro ya ekleyeceğiz.  İlk olara Developer Tabında "Visual Basic" Butonuna basarak Editörü açabiliriz. Editör ortamı aşağıdaki ekranda görüldüğü gibidir. 

Excel ile DEPO SAYIM Kontrol Programi Yapmak

Merhaba, Programımızın en önemli kısmına gelmiş bulunmaktayız. Fiziki sayım konumuzda sayım işlemlerini 4 aşamaya ayırmıştık ve ilk iki adımını anlatmıştık. Sayım İşlemi  3.Adım Elimizde iki adet kontrol edilmesi gereken iki liste var. Bunları birbiriyle karşılaştırıp karşılıklı olarak yani iki yönlü olarak iki listede VAR veya YOK şeklinde sonuç üretecek bir program yazacağız. Daha sonra bu programımız vasıtasıyla elde ettiğimiz sonucu liste haline getireceğiz.