• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Soru Maaş dökümanı formu

🕒 Konu sahibi 5 saat önce aktifti

yapıcı

Gold Üye
Katılım
30 Ağu 2023
Mesajlar
84
Aldığı beğeni
8
Excel V
Office 2021 TR
Gold Bitiş
24 Ekim 2026
Konu Sahibi
Windows 10 Google Chrome 144
Merhaba Arkadaşlar
Hepinize Kolay Gelsin
Şöyle bir sorunum var yardımcı olursanız sevinirim
Fazla kodlar dan kurtulmak istiyorum ben bir şeyler yaptım kendime göre ama program çok yavaş çalışıyor
asıl program bu değil yüklenemediği için bazı sayfaları sildim ama gereken sayfalar burada bu kodların daha
hızlı çalışması mümkün mü mümkünse yardımcı olabilir misiniz.
1- Program > Personeller > Personel Maaş Dokümanı > Ocak dediğimde işlem yapmıyor.
Program > Personeller > Personel Maaş Dokümanı > Şubat dediğimde yapıyor fakat hem formlar kapanmıyor hem işlem uzun sürüyor.
Bunu düzelte bilirsek çok sevinirim.

2 - Personel Listesi Formunda çift tıkladığımda güncelleme yapabiliyorum ama buda çok yavaş çalışıyor. Güncelleme yaparken Aktif çalışan
personelleri PERSONELAKTİF sayfasına güncelliyor bu kodlar da hızlandırabilir miyiz. Bu da PERSONELLİSTESİ' nde ki V sütununda ki "G" Giriş "C" Çıkış olarak
G olan personeller PERSONELAKTİF sayfasında güncellenmiş olacak.
Bu yavaş aktarma sorunu Personel Listesi Formunda "cbListe" de çekmek istediğim veriler de de var.
 

Ekli dosyalar

Windows 10 Opera 126
sizin dosyada yavaşlığın ana nedeni neredeyse her yerde:
1.000.000 satıra kadar döngü (For x = 2 To 1000000)
1.000.000 satırlık aralıkları temizleme (Range("A2:U1000000").Value="")
Satır satır hücre yazma + her satırda SUMIFS çalıştırma
Bunlar Excel’i “kilitler”.

Ocak’ta işlem yapmıyor, Şubat’ta yapıyor ama çok yavaş + formlar kapanmıyor
Ocak neden çalışmıyor?
frmAylar içinde btnAy1_Click (Ocak) şöyle:
Önce Unload frmAylar (formu kapatıyor)
Sonra MaaslariYenile çağırıyor

Ama MaaslariYenile içinde TextBox1/2/3 kullanıyorsunuz. Bu textbox’lar frmAylar formunun üzerindeki kontroller. Formu önce Unload edince bu kontroller yok oluyor → kod hata verip yarıda kalıyor (bazı yerlerde On Error Resume Next olduğu için sessizce duruyor gibi görünür).

Şubat’ta ise tam tersi: önce MaaslariYenile, sonra Unload → bu yüzden çalışıyor.
Ocak butonunda Unload satırlarını en sona alın.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Formlar kapanmıyor çünki MaaslariYenile içinde hata olunca (özellikle tarih/boş değer vs.) kod Unload satırlarına gelmeden kesiliyor. Bu yüzden form açık kalabiliyor

MaaslariYenile’yi hızlandırmak (en çok kazandıran 3 değişiklik)
(A) 1.000.000 satır yerine “son satır” kullanın
For x = 2 To 1000000 bu kod yavaşlatmakta aşağıdaki kodu kullanın
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
Aynı şekilde PersonelAktif ve MaaşDökümanForm için de last row kullanın.

1.000.000 satır temizlemeyi bırakın
Sheets("MaaşDökümanForm").Range("A2:J1000000").Value = ""
Sheets("MaaşDökümanForm").Range("O2:T1000000").Value = ""

Yerine sadece kullanılan kadar temizleyin:Aşağıdaki kodu kullanın
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

MaaslariYenile içindeki TextBox kullanımı (gereksiz ve yavaş)
Siz şunu yapıyorsunuz:
Hücreyi TextBox’a formatlayıp alıyorsunuz
CDbl(TextBox) ile tekrar sayıya çeviriyorsunuz
Bu hem yavaş hem riskli (virgül/nokta yüzünden).

Yerine direkt sayı değişkeni kullanın:
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Personel Listesi çift tıklayınca güncelleme çok yavaş + PERSONELAKTİF aktarımı yavaş
Buradaki ana sorun frmPersonelTanimlama.btnKaydet_Click içinde:
PersonelAktif sayfasını A2:U1000000 komple siliyor
Sonra PersonelListesini 1.000.000 satıra kadar tarayıp tekrar dolduruyor
Bu her güncellemede “kamyonla taşımak” gibi.
En iyi çözüm: PERSONELAKTİF’i diziyle tek seferde yeniden yazdırmak

Şu mantık:
PersonelListesi’ni belleğe al (arr = Range(...).Value2)
Sadece aktifleri (siz R sütununda "Giriş" diyorsunuz; kullanıcı isteğinde V sütununda "G" diyorsunuz) filtrele
Sonuç dizisini PersonelAktif’e tek seferde bas

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Sonra btnKaydet_Click içinde her güncellemede bu satırı çağırın:
RefreshPersonelAktif bu çok hızlandırır

btnAy1_Click (Ocak) → Unload satırlarını en sona alın (Ocak sorunu biter)
MaaslariYenile → lastRow + ScreenUpdating/Calculation kapat + TextBox’ları kaldır
btnKaydet_Click → PersonelAktif.Range("A2:U1000000")="" gibi şeyleri bırakın, RefreshPersonelAktif gibi dizi yöntemi kullanın

Umarım bu öneriler size bir fikir vermiştir
 
Windows 10 Opera 126
Hızlı PERSONELAKTİF Güncelleme (V sütunu “G” filtreli)
PersonelListesi’nden A:U’yu PERSONELAKTİF’e aktarır, filtreyi V sütunundan (G/C) yapar.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
Bunu nereye bağlayacaksınız?
frmPersonelTanimlama.btnKaydet_Click içinde şu bloğu tamamen kaldırın:

PersonelAktif.Range("A2:U1000000")=""
For x=2 To 1000000 ...

Onun yerine sadece bunu çağırın:
RefreshPersonelAktif_ByV
 
Konu Sahibi
Windows 10 Google Chrome 144
sizin dosyada yavaşlığın ana nedeni neredeyse her yerde:
1.000.000 satıra kadar döngü (For x = 2 To 1000000)
1.000.000 satırlık aralıkları temizleme (Range("A2:U1000000").Value="")
Satır satır hücre yazma + her satırda SUMIFS çalıştırma
Bunlar Excel’i “kilitler”.

Ocak’ta işlem yapmıyor, Şubat’ta yapıyor ama çok yavaş + formlar kapanmıyor
Ocak neden çalışmıyor?
frmAylar içinde btnAy1_Click (Ocak) şöyle:
Önce Unload frmAylar (formu kapatıyor)
Sonra MaaslariYenile çağırıyor

Ama MaaslariYenile içinde TextBox1/2/3 kullanıyorsunuz. Bu textbox’lar frmAylar formunun üzerindeki kontroller. Formu önce Unload edince bu kontroller yok oluyor → kod hata verip yarıda kalıyor (bazı yerlerde On Error Resume Next olduğu için sessizce duruyor gibi görünür).

Şubat’ta ise tam tersi: önce MaaslariYenile, sonra Unload → bu yüzden çalışıyor.
Ocak butonunda Unload satırlarını en sona alın.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Formlar kapanmıyor çünki MaaslariYenile içinde hata olunca (özellikle tarih/boş değer vs.) kod Unload satırlarına gelmeden kesiliyor. Bu yüzden form açık kalabiliyor

MaaslariYenile’yi hızlandırmak (en çok kazandıran 3 değişiklik)
(A) 1.000.000 satır yerine “son satır” kullanın
For x = 2 To 1000000 bu kod yavaşlatmakta aşağıdaki kodu kullanın
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
Aynı şekilde PersonelAktif ve MaaşDökümanForm için de last row kullanın.

1.000.000 satır temizlemeyi bırakın
Sheets("MaaşDökümanForm").Range("A2:J1000000").Value = ""
Sheets("MaaşDökümanForm").Range("O2:T1000000").Value = ""

Yerine sadece kullanılan kadar temizleyin:Aşağıdaki kodu kullanın
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

MaaslariYenile içindeki TextBox kullanımı (gereksiz ve yavaş)
Siz şunu yapıyorsunuz:
Hücreyi TextBox’a formatlayıp alıyorsunuz
CDbl(TextBox) ile tekrar sayıya çeviriyorsunuz
Bu hem yavaş hem riskli (virgül/nokta yüzünden).

Yerine direkt sayı değişkeni kullanın:
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Personel Listesi çift tıklayınca güncelleme çok yavaş + PERSONELAKTİF aktarımı yavaş
Buradaki ana sorun frmPersonelTanimlama.btnKaydet_Click içinde:
PersonelAktif sayfasını A2:U1000000 komple siliyor
Sonra PersonelListesini 1.000.000 satıra kadar tarayıp tekrar dolduruyor
Bu her güncellemede “kamyonla taşımak” gibi.
En iyi çözüm: PERSONELAKTİF’i diziyle tek seferde yeniden yazdırmak

Şu mantık:
PersonelListesi’ni belleğe al (arr = Range(...).Value2)
Sadece aktifleri (siz R sütununda "Giriş" diyorsunuz; kullanıcı isteğinde V sütununda "G" diyorsunuz) filtrele
Sonuç dizisini PersonelAktif’e tek seferde bas

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Sonra btnKaydet_Click içinde her güncellemede bu satırı çağırın:
RefreshPersonelAktif bu çok hızlandırır

btnAy1_Click (Ocak) → Unload satırlarını en sona alın (Ocak sorunu biter)
MaaslariYenile → lastRow + ScreenUpdating/Calculation kapat + TextBox’ları kaldır
btnKaydet_Click → PersonelAktif.Range("A2:U1000000")="" gibi şeyleri bırakın, RefreshPersonelAktif gibi dizi yöntemi kullanın

Umarım bu öneriler size bir fikir vermişt
Merhaba
Öncelikle vermiş olduğunuz fikirler ve örnekler için teşekkür ederim.

Maaşları yenile kısmını yaptım sanırım ama diğerlerini yapamadım galiba
diziler konusunda bilgim olmadığından yapamadım.
Dosyada yapmaya çalıştıklarım var kontrol edebilirseniz sevinirim.
 

Ekli dosyalar

Windows 10 Opera 126
Bu proğrama ait çözüm istedikleriniz nedir detaylandırınki çözüm bulunabilsin.
Proğram detayı çok. Sırasıyla tarif edinki görebilelim hızlandıralım demekle olmaz
 
Konu Sahibi
Windows 10 Google Chrome 144
Bu proğrama ait çözüm istedikleriniz nedir detaylandırınki çözüm bulunabilsin.
Proğram detayı çok. Sırasıyla tarif edinki görebilelim hızlandıralım demekle olmaz
Anladığınızı düşündüğüm için hızlandırmak istedim
aslında her şeyi açıklamışsınız ben uygulayamadım.

Anlatmak istediğim şu
Personel Listesi Formunda çift tıkladığımda güncelleme yapabiliyorum ama mevcut kodlarla çok yavaş çalışıyor. Güncelleme yaparken Aktif çalışan personelleri PERSONELAKTİF sayfasına güncelliyor yani satır satır yazıyor buda beklemeye zaman kaybına yol açıyor.
Güncelle dediğimde PERSONELLİSTESİ' nde ki V sütununda ki "G" Giriş olan personeller PERSONELAKTİF sayfasında güncellenmiş olarak kayıt ediliyor KAMYON la taşımak gibi bu yavaş aktarma sorunu hızlı yapmayı istiyorum.
Aynı sorun Personel Listesi Formunda "cbListe" de çekmek istediğim veriler de de yaşıyorum 3 - 5 dakika bekliyorum her işlem için.
Mesela MaaslariYenile kısmı harika oldu onun gibi hızlı veri getirmesini istiyorum.
 
Windows 10 Opera 126
Bakarmısınız güncelleme yaptım denedikten sonra

Hangisi sizi en çok bekletiyor?
TumPersoneller mi
BorcluPersoneller mi
AlacaklıPersoneller mi
CikanPersoneller mi
 

Ekli dosyalar

Konu Sahibi
Windows 10 Google Chrome 144
Bakarmısınız güncelleme yaptım denedikten sonra

Hangisi sizi en çok bekletiyor?
TumPersoneller mi
BorcluPersoneller mi
AlacaklıPersoneller mi
CikanPersoneller mi
Elinize sağlık beklemeden işlem yapıyor.
Demek istediğim buydu işte çok teşekkür ederim.

Bekletenler Bunlar
BorcluPersoneller
AlacaklıPersoneller
CikanPersoneller

Bunların haricinde bir sorun daha var
oda güncelleme yaparken ücret kısımları şaşırıyor virgülleri siliyor mesela 33881,75 iken güncelleme sonucu 3388175 oluyor.
 
Konu Sahibi
Windows 10 Google Chrome 144
Elinize sağlık beklemeden işlem yapıyor.
Demek istediğim buydu işte çok teşekkür ederim.

Bekletenler Bunlar
BorcluPersoneller
AlacaklıPersoneller
CikanPersoneller

Bunların haricinde bir sorun daha var
oda güncelleme yaparken ücret kısımları şaşırıyor virgülleri siliyor mesela 33881,75 iken güncelleme sonucu 3388175 oluyor.
Arzuhalci
Şöyle bişey yapabilirmisin mesela
PersonelAktif > BorcluPersoneller > AlacaklıPersoneller > IstenCikanPersoneller

bu sayfalar hep aynı sütunları kullanıyor veri alırken tek bir sayfadan gösterme imkanı var mı eğer varsa excel den BorcluPersoneller > AlacaklıPersoneller > IstenCikanPersoneller sayfalarını silebilirim.
 
Windows 10 Opera 126
oda güncelleme yaparken ücret kısımları şaşırıyor virgülleri siliyor mesela 33881,75 iken güncelleme sonucu 3388175 oluyor.

bunun düzelmesi lazım denermisiniz
 

Ekli dosyalar

Windows 10 Opera 126
İlk önce 11 nolu mesajı dene virgüller işlemi doğrumu sonra aşağıdaki dosyayı dene test et

Şöyle bişey yapabilirmisin mesela
PersonelAktif > BorcluPersoneller > AlacaklıPersoneller > IstenCikanPersoneller

bu sayfalar hep aynı sütunları kullanıyor veri alırken tek bir sayfadan gösterme imkanı var mı eğer varsa excel den BorcluPersoneller > AlacaklıPersoneller > IstenCikanPersoneller sayfalarını silebilirim.

Bunu uygulamaya çalıştım.Deneyiniz
 

Ekli dosyalar

Konu Sahibi
Windows 10 Google Chrome 144
İlk önce 11 nolu mesajı dene virgüller işlemi doğrumu sonra aşağıdaki dosyayı dene test et

Şöyle bişey yapabilirmisin mesela
PersonelAktif > BorcluPersoneller > AlacaklıPersoneller > IstenCikanPersoneller

bu sayfalar hep aynı sütunları kullanıyor veri alırken tek bir sayfadan gösterme imkanı var mı eğer varsa excel den BorcluPersoneller > AlacaklıPersoneller > IstenCikanPersoneller sayfalarını silebilirim.

Bunu uygulamaya çalıştım.Deneyiniz
11 nolu mesaj kayıt yanlış
güncellemek için veriler doğru geliyor fakat veriyi çekerken 28075.5 nokta ile çekiyor virgülle çekse sorun olmayacak sanırım
bu Maaş da da aynı Brüt Ücrette de aynı.

12 nolu mesaj da resimde ki hatayı veriyor
 

Ekli dosyalar

  • Adsız.jpg
    Adsız.jpg
    296.9 KB · Gösterim: 2
Geri
Üst