• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Soru Grup isimlerine göre yeni sekme oluşturma ve yapıştırma

Katılım
25 Temmuz 2011
Mesajlar
83
Excel Vers. ve Dili
2019
Merhabalar hocalarım

Ekte gönderdiğim dosyada yapmak istediğim işlem şu şekilde

Ürün grubu yazan hücredeki ürünlerin her birine ismiyle yeni sekme oluşturup, o gruptaki ürünlerin satırlarını o sekmeye taşımak istiyorum.

2. bir işlemde yeni açılan sekmelerde yazılan siparişleri toplu olarak bir sayfa da görmek mümkün müdür?

Hocalarım her iki işlemi de yapılması vakit alacaksa sadece 1. kısım benim için yeterli olur,eğer ikisi de olursa tadından yenmez :)
 

Ekli dosyalar

Verilerinizi önce ayrı sayfalara bölüp sonra bunlardan birleştirme yapmak çalışma sistemi açısından hiç verimli olmaz. Şu anda ürün gruplarınız 69 tane. Asıl 2 sayfayla birlikte toplam 71 sayfalı bir dosyada çalışmanın hiç de kolay olmayacağını siz de takdir edersiniz diye düşünüyorum.

Ekli dosyada bir şeyler yapmaya çalıştım. ÖZET SİPARİŞ sayfasını açtığınızda SİPARİŞ SAYFASIndaki F sütunu 0'dan farklı olanlar listeleniyor.

GRUPLAR sayfasında da istediğiniz sayfanın bilgilerini görebileceğiniz bir userform çalışması var.

Yapmak istediğiniz işe göre farklı düzenlemeler de yapılabilir ama başta da belirttiğim gibi her ürün grubu için ayrı sayfa oluşturmak excel çalışma mantığı ve kolaylık açısından hiç uygun değildir.
 

Ekli dosyalar

Verilerinizi önce ayrı sayfalara bölüp sonra bunlardan birleştirme yapmak çalışma sistemi açısından hiç verimli olmaz. Şu anda ürün gruplarınız 69 tane. Asıl 2 sayfayla birlikte toplam 71 sayfalı bir dosyada çalışmanın hiç de kolay olmayacağını siz de takdir edersiniz diye düşünüyorum.

Ekli dosyada bir şeyler yapmaya çalıştım. ÖZET SİPARİŞ sayfasını açtığınızda SİPARİŞ SAYFASIndaki F sütunu 0'dan farklı olanlar listeleniyor.

GRUPLAR sayfasında da istediğiniz sayfanın bilgilerini görebileceğiniz bir userform çalışması var.

Yapmak istediğiniz işe göre farklı düzenlemeler de yapılabilir ama başta da belirttiğim gibi her ürün grubu için ayrı sayfa oluşturmak excel çalışma mantığı ve kolaylık açısından hiç uygun değildir.

Merhabalar hocam,sonuna kadar haklısınız,hatta hiçbir şeye gerek yok direk filtreden ilgili sekmeyi seçip sipariş yazılabilir ancak bunu bile beceremeyen müşterilerim mevcut.2. bir sıkıntı da makrolar mobil de çalışmıyor.

Aslında benim amaçladığım,görselli bir listeden müşterileri link ile sekmelere yönlendirmek,o sayfada işi bitince yine sayfaya koyacağım link ile ana sayfaya yönlendirmek.Onun için bu yöntemi seçtim.
 
Verilerinizi önce ayrı sayfalara bölüp sonra bunlardan birleştirme yapmak çalışma sistemi açısından hiç verimli olmaz. Şu anda ürün gruplarınız 69 tane. Asıl 2 sayfayla birlikte toplam 71 sayfalı bir dosyada çalışmanın hiç de kolay olmayacağını siz de takdir edersiniz diye düşünüyorum.

Ekli dosyada bir şeyler yapmaya çalıştım. ÖZET SİPARİŞ sayfasını açtığınızda SİPARİŞ SAYFASIndaki F sütunu 0'dan farklı olanlar listeleniyor.

GRUPLAR sayfasında da istediğiniz sayfanın bilgilerini görebileceğiniz bir userform çalışması var.

Yapmak istediğiniz işe göre farklı düzenlemeler de yapılabilir ama başta da belirttiğim gibi her ürün grubu için ayrı sayfa oluşturmak excel çalışma mantığı ve kolaylık açısından hiç uygun değildir.
Korhan hocamın yönlendirmesiyle bir dağıtma makrosu yaptım ancak,ilk sayfada olan linkler sayfalara dağıtınca kayboluyor.Alttaki formulde linkleri koruyabilmenin bir yolu var mıdır?

Kod:
Option Explicit

Sub DAGIT()
Dim s1 As Worksheet
Dim sY As Worksheet
Dim ALAN As Range
Dim r As Integer
Dim c As Range
Set s1 = Sheets("SİPARİŞ SAYFASI")
Set ALAN = Range("VERİTABANI")


s1.Columns("C:C").Copy _
  Destination:=Range("L1")
s1.Columns("L:L").AdvancedFilter _
  Action:=xlFilterCopy, _
  CopyToRange:=Range("J1"), Unique:=True
r = Cells(Rows.Count, "J").End(xlUp).Row


Range("L1").Value = Range("C1").Value

For Each c In Range("J2:J" & r)
  
  s1.Range("L2").Value = c.Value
  
  If SAYFA(c.Value) Then
    Sheets(c.Value).Cells.Clear
    ALAN.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sheets("SİPARİŞ SAYFASI").Range("L1:L2"), _
        CopyToRange:=Sheets(c.Value).Range("b1"), _
        Unique:=False
  Else
    Set sY = Sheets.Add
    sY.Move After:=Worksheets(Worksheets.Count)
    sY.Name = c.Value
    ALAN.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sheets("SİPARİŞ SAYFASI").Range("L1:L2"), _
        CopyToRange:=sY.Range("b1"), _
        Unique:=False
  End If
Next
s1.Select
s1.Columns("J:L").Delete
End Sub
Function SAYFA(SAYFAADI As String) As Boolean
    On Error Resume Next
    SAYFA = CBool(Len(Worksheets(SAYFAADI).Name) > 0)
End Function


End Sub
 
Bahsettiğiniz türde müşteriler ya da kullanıcılar dosyanız ne şekilde olursa olsun sizin istediğiniz şekilde kullanamayacaktır muhtemelen. Örneğin "5" yazmak isterken "5." ya da " 5" yazabilirler. Ya da F sütununa yazmaları gerekirken G ya da J sütununa da yazabilirler.

Bu durumların önüne geçmek için makro ve userform ile veri girişi yapılmalı ya da amacınıza uygun bir web sitesi hazırlamanız daha uygun olacaktır.
 
Bahsettiğiniz türde müşteriler ya da kullanıcılar dosyanız ne şekilde olursa olsun sizin istediğiniz şekilde kullanamayacaktır muhtemelen. Örneğin "5" yazmak isterken "5." ya da " 5" yazabilirler. Ya da F sütununa yazmaları gerekirken G ya da J sütununa da yazabilirler.

Bu durumların önüne geçmek için makro ve userform ile veri girişi yapılmalı ya da amacınıza uygun bir web sitesi hazırlamanız daha uygun olacaktır.
Hocam teşekkür ediyorum yönlendirmeniz için.

Müşteriler yazı yazmayacaklar,benim farklı bir ana sayfada oluşturacağım linklerin üzerine tıklayacaklar.Yani ana gruplar için linkleri yazacağım onları sekmelere yönlendireceğim.
 
Merhabalar hocalarım

Ekte gönderdiğim dosyada yapmak istediğim işlem şu şekilde

Ürün grubu yazan hücredeki ürünlerin her birine ismiyle yeni sekme oluşturup, o gruptaki ürünlerin satırlarını o sekmeye taşımak istiyorum.

2. bir işlemde yeni açılan sekmelerde yazılan siparişleri toplu olarak bir sayfa da görmek mümkün müdür?

Hocalarım her iki işlemi de yapılması vakit alacaksa sadece 1. kısım benim için yeterli olur,eğer ikisi de olursa tadından yenmez :)

Değerli Arkadaşım Merhaba

Talebiniz için hazırlanmış farklı bir çözüm Ek 'tedir.

( 1. Talebiniz için Farklı Çözüm İnşallah hazır. Fakat 2. Talebinizi anlayamadım. )

Selamlar...
 

Ekli dosyalar

Değerli Arkadaşım Merhaba

Talebiniz için hazırlanmış farklı bir çözüm Ek 'tedir.

( 1. Talebiniz için Farklı Çözüm İnşallah hazır. Fakat 2. Talebinizi anlayamadım. )

Selamlar...
Elleriniz dert görmesin hocam.Mükemmel olmuş.Size nasıl teşekkür etsem az.Ufak bir ricam daha olacak eğer mümkünse.Dosyada sipariş sayfasındaki ürün isimlerinde linkler var.Verileri taşırken o linkleri koruyabilmek mümkün müdür?

Şimdiden değerli vaktinizi ayırdığınız için çok teşekkürler
 
Değerli Arkadaşım

Talepleriniz hazır.

Ek 'teki dosya, Aktif Sayfayı kullanıcının belirleyeceği sütuna göre grup grup diğer sayfalara aktarmaktadır.
Sayfalara aktarma sırasında B Sütunundaki yerel internet bağlantıları korunmaktadırlar.
Aktarma işlemi yaklaşık 2-3 dakika sürebilmektedir.

Aktarma sonrası Ana Sayfada tüm sayfalar listelenmekte, listede tıklanan sayfaya otomatik gidilmektedir.
Diğer sayfalardan Ana Sayfaya otomatik dönüş butonu bulunmaktadır.

Selamlar...
 

Ekli dosyalar

Son düzenleme:
Değerli Arkadaşım

Talepleriniz hazır.

Ek 'teki dosya, Aktif Sayfayı kullanıcının belirleyeceği sütuna göre grup grup diğer sayfalara aktarmaktadır.
Sayfalara aktarma sırasında B Sütunundaki yerel internet bağlantıları korunmaktadırlar.
Aktarma işlemi yaklaşık 2-3 dakika sürebilmektedir.

Aktarma sonrası Ana Sayfada tüm sayfalar listelenmekte, listede tıklanan sayfaya otomatik gidilmektedir.
Diğer sayfalardan Ana Sayfaya otomatik dönüş butonu bulunmaktadır.

Selamlar...
hocam süpersiniz ya,valla çok teşekkür ediyorum.Fazla fazla yapıyorsunuz.Eliniz kolunuz dert görmesin.

Kusura bakmayın hocam daha fazlasını istemeye çekiniyorum ama müsait zamanınız olursa bakarsınız.Bakmasanız bile benim için bu kadarı büyük ilerleme.

En başta 2. talep olarak yazdığım kısımda hocam,şu demek istemiştim.

Yeni oluşturduğumuz sekmelerde SİPARİŞ MİKTARI sutunu 0 değilse(yada boş değilse) bunları ADI,ÜRÜN GRUBU VE SİPARİŞ MİKTARI kısımlarını farklı bir sayfada özetleyebilir miyiz?

Şimdiden çok teşekkür ederim.
 
Tekrar Merhaba

Nasıl bir sonuç istediğinizi örnek sayısal değerlerle bir örneğini paylaşınız. Olursa üzerinde çalışılabilir.

Selamlar...
 
Tekrar Merhaba

Nasıl bir sonuç istediğinizi örnek sayısal değerlerle bir örneğini paylaşınız. Olursa üzerinde çalışılabilir.

Selamlar...
Tekrar merhabalar hocam,

Attığınız dosya ile ilgili bir şey danışmak istiyorum.Uzun zamandır üzerinde çalışıyorum fakat çözüme kavuşturamadım.Ekte eklediğim dosyada fiyat veya stok kısmına virgüllü değer girdiğimde oluşan sayfalara yanlış aktarılıyor.Bununla ilgili yapılabilecek bir şey var mıdır?

237954


Çok teşekkürler yardımlarınız için
 

Ekli dosyalar

Bahsettiğiniz türde müşteriler ya da kullanıcılar dosyanız ne şekilde olursa olsun sizin istediğiniz şekilde kullanamayacaktır muhtemelen. Örneğin "5" yazmak isterken "5." ya da " 5" yazabilirler. Ya da F sütununa yazmaları gerekirken G ya da J sütununa da yazabilirler.

Bu durumların önüne geçmek için makro ve userform ile veri girişi yapılmalı ya da amacınıza uygun bir web sitesi hazırlamanız daha uygun olacaktır.
Hocam tekrar Merhabalar;

Daha önce oluşturmuş olduğunuz userformu başka bir projeme taşımak istedim ama başarılı olamadım.Ekteki dosyadaki resmin yanına oluşturmuş olduğunuz userformu sabit olarak koymak istiyorum ve oradan seçilsin istiyorum.Grup isimleri oradaki alana sığacak şekilde yan yana da gelebilirse süper olur.Mümkünse yardımlarınızı rica ederim.
 

Ekli dosyalar

Merhaba.

Formu dosyanıza taşıdıktan sonra SİPARİŞ SAYFASI sayfasının kod bölümüne aşağıdaki kodları ekleyin:

PHP:
Private Sub Worksheet_Activate()
UserForm1.Show
UserForm1.Left = 470
UserForm1.Top = 200
End Sub

Private Sub Worksheet_Deactivate()
Unload UserForm1
End Sub

Daha sonra formun kod bölümünü açın ve eski kodları silip aşağıdaki kodları ekleyin:

PHP:
Private Sub CommandButton1_Click()
Set s1 = Sheets("SİPARİŞ SAYFASI")
eski = WorksheetFunction.Max(4, s1.Cells(Rows.Count, "A").End(3).Row)
ActiveSheet.Range("$A$4:$M$" & eski).AutoFilter Field:=3
Unload Me
End Sub

Private Sub ListBox1_Change()
Set s1 = Sheets("SİPARİŞ SAYFASI")
eski = WorksheetFunction.Max(4, s1.Cells(Rows.Count, "A").End(3).Row)

ActiveSheet.Range("$A$4:$M$" & eski).AutoFilter Field:=3, Criteria1:= _
    ListBox1.Value
End Sub

Private Sub UserForm_Initialize()

Set s1 = Sheets("SİPARİŞ SAYFASI")
eski = WorksheetFunction.Max(2, s1.Cells(Rows.Count, "A").End(3).Row)

Set con = VBA.CreateObject("adodb.Connection")
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes"""

sorgu = "select distinct GROUP from [SİPARİŞ SAYFASI$A4:C" & eski & "] where [PRODUCT NAME] is not null"
Set rs = con.Execute(sorgu)

ListBox1.Column = rs.getrows
End Sub

Formun belirttiğiniz alana sığması için Height değerini 340 yapın.

Böylece userform benzersiz GROUP isimleriyle belirttiğiniz bölümde görünecektir ama istediğiniz şekilde tüm isimlerin yanyana görünmesi mümkün mü ben bilmiyorum. Belki birden fazla listbox yapılabilir.

Başka sayfadan SİPARİŞ SAYFASIna geçiş yaptığınızda form görünür, listboxtan seçim yaptığınızda aşağıdaki listede filtreleme gerçekleşir.
 
Merhaba.

Formu dosyanıza taşıdıktan sonra SİPARİŞ SAYFASI sayfasının kod bölümüne aşağıdaki kodları ekleyin:

PHP:
Private Sub Worksheet_Activate()
UserForm1.Show
UserForm1.Left = 470
UserForm1.Top = 200
End Sub

Private Sub Worksheet_Deactivate()
Unload UserForm1
End Sub

Daha sonra formun kod bölümünü açın ve eski kodları silip aşağıdaki kodları ekleyin:

PHP:
Private Sub CommandButton1_Click()
Set s1 = Sheets("SİPARİŞ SAYFASI")
eski = WorksheetFunction.Max(4, s1.Cells(Rows.Count, "A").End(3).Row)
ActiveSheet.Range("$A$4:$M$" & eski).AutoFilter Field:=3
Unload Me
End Sub

Private Sub ListBox1_Change()
Set s1 = Sheets("SİPARİŞ SAYFASI")
eski = WorksheetFunction.Max(4, s1.Cells(Rows.Count, "A").End(3).Row)

ActiveSheet.Range("$A$4:$M$" & eski).AutoFilter Field:=3, Criteria1:= _
    ListBox1.Value
End Sub

Private Sub UserForm_Initialize()

Set s1 = Sheets("SİPARİŞ SAYFASI")
eski = WorksheetFunction.Max(2, s1.Cells(Rows.Count, "A").End(3).Row)

Set con = VBA.CreateObject("adodb.Connection")
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes"""

sorgu = "select distinct GROUP from [SİPARİŞ SAYFASI$A4:C" & eski & "] where [PRODUCT NAME] is not null"
Set rs = con.Execute(sorgu)

ListBox1.Column = rs.getrows
End Sub

Formun belirttiğiniz alana sığması için Height değerini 340 yapın.

Böylece userform benzersiz GROUP isimleriyle belirttiğiniz bölümde görünecektir ama istediğiniz şekilde tüm isimlerin yanyana görünmesi mümkün mü ben bilmiyorum. Belki birden fazla listbox yapılabilir.

Başka sayfadan SİPARİŞ SAYFASIna geçiş yaptığınızda form görünür, listboxtan seçim yaptığınızda aşağıdaki listede filtreleme gerçekleşir.
Hocam çok teşekkür ediyorum,super gözüküyor.3-4 gündür uğraşıyorum yapamamıştım.Ellerinize sağlık
 
Merhaba.

Formu dosyanıza taşıdıktan sonra SİPARİŞ SAYFASI sayfasının kod bölümüne aşağıdaki kodları ekleyin:

PHP:
Private Sub Worksheet_Activate()
UserForm1.Show
UserForm1.Left = 470
UserForm1.Top = 200
End Sub

Private Sub Worksheet_Deactivate()
Unload UserForm1
End Sub

Daha sonra formun kod bölümünü açın ve eski kodları silip aşağıdaki kodları ekleyin:

PHP:
Private Sub CommandButton1_Click()
Set s1 = Sheets("SİPARİŞ SAYFASI")
eski = WorksheetFunction.Max(4, s1.Cells(Rows.Count, "A").End(3).Row)
ActiveSheet.Range("$A$4:$M$" & eski).AutoFilter Field:=3
Unload Me
End Sub

Private Sub ListBox1_Change()
Set s1 = Sheets("SİPARİŞ SAYFASI")
eski = WorksheetFunction.Max(4, s1.Cells(Rows.Count, "A").End(3).Row)

ActiveSheet.Range("$A$4:$M$" & eski).AutoFilter Field:=3, Criteria1:= _
    ListBox1.Value
End Sub

Private Sub UserForm_Initialize()

Set s1 = Sheets("SİPARİŞ SAYFASI")
eski = WorksheetFunction.Max(2, s1.Cells(Rows.Count, "A").End(3).Row)

Set con = VBA.CreateObject("adodb.Connection")
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes"""

sorgu = "select distinct GROUP from [SİPARİŞ SAYFASI$A4:C" & eski & "] where [PRODUCT NAME] is not null"
Set rs = con.Execute(sorgu)

ListBox1.Column = rs.getrows
End Sub

Formun belirttiğiniz alana sığması için Height değerini 340 yapın.

Böylece userform benzersiz GROUP isimleriyle belirttiğiniz bölümde görünecektir ama istediğiniz şekilde tüm isimlerin yanyana görünmesi mümkün mü ben bilmiyorum. Belki birden fazla listbox yapılabilir.

Başka sayfadan SİPARİŞ SAYFASIna geçiş yaptığınızda form görünür, listboxtan seçim yaptığınızda aşağıdaki listede filtreleme gerçekleşir.

Tekrar Merhabalar hocam,

Ara ara hata alıyorum userfrom hatası alıyorum.Debug dediğimde UserForm3.Show 0 komutlarına gidiyor.Sanırım dosyanın konumu değiştiğinde oluyor.Altta görüntüsünü atıyorum.Bir fikriniz var mıdır?Ne ile ilgili oldğuna dair?


238274
 
Ben öyle bir kod (UserForm3.Show 0) yazdığımı hatırlamıyorum. Fikrim yok bu nedenle.
 
Ben öyle bir kod (UserForm3.Show 0) yazdığımı hatırlamıyorum. Fikrim yok bu nedenle.

Tekrar Merhabalar hocam,

Haklısınız userform un sonuna 0 gelmiş.O çalıştığım dosyada makronuzu userform 3 olarak kullanıyordum ondan öyleydi ama halen alttaki gibi bir hata alıyorum.

Gözlemlediğim kadarıyla dosyayı bilgisayardaki onedrive klasörü içerisinde çalıştırmaya çalıştığımda hata veriyor.Masaüstüne aldığımda hata düzeliyor.Onedrive ı da paylaşım olarak kullandığımız için olmazsa olmaz gibi bir şey.Bununla ilgili bir çözüm var mıdır caba?

Şimdiden çok teşekkürler hocam

238321
 
Geri
Üst