VERİ DOĞRULAMA + RESİM EKLEME PROFORMA

Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
Merhabalar
Ekteki dosyamda veri doğrulama hk açılmış bu KONU da @Korhan Ayhan Beyin #9 mesajındaki örneği kullandım. Lakin oradakinden farklı olarak şu hataları alıyorum
1- örnekte C stununda çift tıkladığımızda user form açılıyor. Lakin benimkinde direk hücreye giriyor yazmak için. Bunu nasıl sizdeki gibi user form açılacak şekilde yapabilirim ?
2- örnekte listede olamayan bir kombinasyon yazdığımızda hata uyarısı geliyor ve userform açılıyor. Benimkinde ise direk vba hatası veriyor.(Debug or And)

Ayrıca o örnektekinde farklı olarak veri sayfam aynı excelde değil farklı bir konumdaki farklı bir excelde.
Örnek Konum : C:\Users\Desktop\PROFORMA Klasöründeki STOK KODLARI excelinin FİYAT LİSTESİ sayfasında A stunu.
Verileri buradan bu klasör kapalı dahi olsa çekebilmem mümkün müdür ? Eğer mümkün ise bu adresi nasıl eklemem gerekli ?

Birde haricen hiç bir zamana beceremediğim 1 sayfa için 2 formülü birleştirme olayı var tabiiki. Halihazırda bu sayfada olan bir resim getirme formulum var. Bu formülü bunun altına ekleyebilir miyiz ? Excelde Resim Ekleme olarak açtığım sayfaya o formülü de yazdım.

Taslak yıllardır kullandığım 6 sayfadan oluşan 2 farklı dış excel ve 1 faklı Klasörden bilgi ve veri çeken bir excel. Özet olması açısından diğer sayfalarını silipte ekledim.

Şimdiden teşekkürler
 

Ekli dosyalar

Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
Yardımcı olabilecek var mıdır ?
@Korhan Ayhan bu aldığım hataların sebebi nedir sizce ? Nerede hata yapmış olabilirim ?

Şimdiden teşekkürler
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,551
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Sanırım siz "B" sütunundaki "PRODUCT CODE" bilgisini form ile girmek istiyorsunuz.

Benim diğer başlıkta paylaşığım kodları kendi dosyanıza almışsınız.

Çift tıklama kodları "C" sütununa göre ayarlıydı. Sizde "B" sütunu olduğu için kodda değişiklik yapmanız gerekiyordu. Ayrıca örnek dosyada kod LİSTE sayfasından verileri alıyordu. Sizde ise sayfa adı "PRODUCT CODE" buna göre kodda değişiklik yapmanız gerekiyordu. Çalışmaması gayet doğaldır. Uyarlama yapmanız gerekiyor. Sayfa adında boşluk olduğu için RowSource metodunda tek tırnak sembolü kullanmanız gerekir.

Açıklamanızdan anladığım kadarıyla normalde dosyanızda "PRODUCT CODE" isimli sayfanız yok. Bu sayfayı dışarıda başka bir dosyada tutuyorsunuz. Eğer durum böyle ise ADO ile verileri almak gerekir.

ADO ile ilgili olarak Modül2'de bulunan aşağıdaki prosedürü bulup Dosya tanımlamasını kendinize göre ayarlayınız.

C++:
Sub Baglantiyi_Ac()
    Dosya = "C:\Users\Desktop\STOK KODLARI.xlsx"
    Set Baglanti = CreateObject("AdoDb.Connection")
    Set Kayit_Seti = CreateObject("AdoDb.Recordset")
    
    Baglanti.Open "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" & _
    Dosya & ";Extended Properties=""Excel 12.0;Hdr=No"""
End Sub
 

Ekli dosyalar

Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
Merhaba,

Sanırım siz "B" sütunundaki "PRODUCT CODE" bilgisini form ile girmek istiyorsunuz.

Benim diğer başlıkta paylaşığım kodları kendi dosyanıza almışsınız.

Çift tıklama kodları "C" sütununa göre ayarlıydı. Sizde "B" sütunu olduğu için kodda değişiklik yapmanız gerekiyordu. Ayrıca örnek dosyada kod LİSTE sayfasından verileri alıyordu. Sizde ise sayfa adı "PRODUCT CODE" buna göre kodda değişiklik yapmanız gerekiyordu. Çalışmaması gayet doğaldır. Uyarlama yapmanız gerekiyor. Sayfa adında boşluk olduğu için RowSource metodunda tek tırnak sembolü kullanmanız gerekir.

Açıklamanızdan anladığım kadarıyla normalde dosyanızda "PRODUCT CODE" isimli sayfanız yok. Bu sayfayı dışarıda başka bir dosyada tutuyorsunuz. Eğer durum böyle ise ADO ile verileri almak gerekir.

ADO ile ilgili olarak Modül2'de bulunan aşağıdaki prosedürü bulup Dosya tanımlamasını kendinize göre ayarlayınız.

C++:
Sub Baglantiyi_Ac()
    Dosya = "C:\Users\Desktop\STOK KODLARI.xlsx"
    Set Baglanti = CreateObject("AdoDb.Connection")
    Set Kayit_Seti = CreateObject("AdoDb.Recordset")
  
    Baglanti.Open "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" & _
    Dosya & ";Extended Properties=""Excel 12.0;Hdr=No"""
End Sub
Korhan Bey ilginiz için teşekkürler
Dediğiniz gibi yaptım. Hedef excel dosyasının ismini de değiştirdim sorun olmaması açısından. yanlız
user formda ListBox1.Column = Kayit_Seti.GetRows kısmında hata veriyor.
Bunu düzeltemedim maalesef.

Birde bu sayfaya başka bir formül daha eklememiz mümkün müdür ?
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,551
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Siz nereyi değiştirdiniz?

İlk mesajınızda belirttiğiniz gibi dosyanızın adı STOK KODLARI verilerin alınacağı sayfanızın adı da FİYAT LİSTESİ olması gerekiyor.

Dosyanızın adını Modül2'de bulunan kod satırına (Dosya = "C:\Users\Desktop\STOK KODLARI.xlsx") müdahale ederek değiştirebilirsiniz.

Fakat sayfa (FİYAT LİSTESİ) adı birden fazla yerde geçtiği için bunu her yerde değiştirmeniz gerekir.

Bu kurallara uyarsanız çalışmaması için bir sebep göremiyorum.

Diğer sorunuz için başka formülden kastınız nedir? Eğer resim ekleme ise resimlerden birkaç örnek paylaşmalısınız. Ve senaryoyu tarif etmelisiniz.
 
Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
Siz nereyi değiştirdiniz?

İlk mesajınızda belirttiğiniz gibi dosyanızın adı STOK KODLARI verilerin alınacağı sayfanızın adı da FİYAT LİSTESİ olması gerekiyor.

Dosyanızın adını Modül2'de bulunan kod satırına (Dosya = "C:\Users\Desktop\STOK KODLARI.xlsx") müdahale ederek değiştirebilirsiniz.

Fakat sayfa (FİYAT LİSTESİ) adı birden fazla yerde geçtiği için bunu her yerde değiştirmeniz gerekir.

Bu kurallara uyarsanız çalışmaması için bir sebep göremiyorum.

Diğer sorunuz için başka formülden kastınız nedir? Eğer resim ekleme ise resimlerden birkaç örnek paylaşmalısınız. Ve senaryoyu tarif etmelisiniz.
Korhan Bey
Dosya adını FİYATLAR sayfa adını ÜRÜNLER olarak güncelledim. İşlemin olacağı sayfa hala aynı PROFORMA.
Hala aynı yerde Kayit_Seti.Open Sorgu, Baglanti, 1, 1 hata alıyorum. Birde yine modül 2 de Fark_Satir = UserForm1.Height hata gelmeye başladı :(

Vaktinizi çaldığım için kusura bakmayın :(
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,551
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Veri alınacak dosyayı örnek veri içerecek şekilde paylaşır mısınız?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,551
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merakımı mazur görün ama sürekli olarak neden sayfa adını değiştiriyorsunuz?

Bir öndeki mesajınızda sayfa adını ÜRÜNLER yaptım diyorsunuz ama eklediğiniz dosyada FİYATLAR yazıyor.

Son kararınız nedir?

Ayrıca FİYATLAR sayfasındaki ilk satırın boş olmasının özel bir sebebi var mı? Silsek sizin için sorun olur mu?
 
Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
Merakımı mazur görün ama sürekli olarak neden sayfa adını değiştiriyorsunuz?

Bir öndeki mesajınızda sayfa adını ÜRÜNLER yaptım diyorsunuz ama eklediğiniz dosyada FİYATLAR yazıyor.

Son kararınız nedir?

Ayrıca FİYATLAR sayfasındaki ilk satırın boş olmasının özel bir sebebi var mı? Silsek sizin için sorun olur mu?
Yanlış olanı paylaşmışım benim hatam. Doğru olanda yukarıda bahsettiğim gibi ürünler yaptım. Değiştirmemdeki sebepte sizinde dediğiniz gibi çok fazla aynı terimi tekrar ettiği içindi.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,551
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

Ben bir önceki mesajınızda paylaştığınız dosyadaki sayfa adını ÜRÜNLER yapıp denediğimde olumlu sonuç aldım. Umarım sizde de sorunsuz çalışır.
 

Ekli dosyalar

Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
Deneyiniz.

Ben bir önceki mesajınızda paylaştığınız dosyadaki sayfa adını ÜRÜNLER yapıp denediğimde olumlu sonuç aldım. Umarım sizde de sorunsuz çalışır.
Korhan Bey
Çok teşekkürler

Tek sorum kaldı, bu sayfaya ikinci bir formul eklenebilir mi ?

Vaktiniz için yine teşekkür ederim
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,551
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
#5 nolu mesajımın son bölümü tekrar okuyup buna göre dosya ve işlem senaryosu paylaşımı yaparsanız destek olmaya çalışırım.
 
Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
#5 nolu mesajımın son bölümü tekrar okuyup buna göre dosya ve işlem senaryosu paylaşımı yaparsanız destek olmaya çalışırım.
Formüle göre excel ResimYolu olarak belirtilen adreste bulunan belirlenmiş ürün kodundaki resimleri Proforma sayfasındakodun bulunduğu satırdaki B stununa getiriyor. Excel her resme özel isim verdiğinden ( Resim 1, Resim 2, Resim 35 gibi) bu isimleri T stununa getirip buna göre yine bulunduğu kodu silinen resmi siliyor. Ayrıca Resim Boyutlandırmadaki ölçülere göre de boyutlandırıyor. Bu formülü zaten halihazırda bu proforma sayfamda kullanıyorum. Lakin sizin oluşturmuş olduğunuz veri doğrulama ile birlikte aynı makro sayfasında alt alta nasıl yazacağımı bilemedim.

Kod:
Dim ResimYolu, dosyaVarmi As Variant
Dim Resim As Object

ResimYolu = "C:\Users\BEYAZ\Desktop\PROFORMA\RESIMLER\" & Range("B" & pSatir).Value & ".jpg"
dosyaVarmi = Dir(ResimYolu)

If dosyaVarmi = "" Then
    ResimYolu = "\\C:\Users\Emrah\Desktop\PROFORMA\RESIMLER\bos.jpg"
End If
Set Resim = ActiveSheet.Pictures.Insert(ResimYolu)
    ' Resim boyutlama
    
    Range("T" & pSatir).Value = Resim.Name
    With Range("G" & pSatir)
    
    Resim.ShapeRange.LockAspectRatio = msoFalse
    Resim.Left = .Left + 2
    Resim.Top = .Top + 1
    Resim.Height = .Height - 2
    Resim.Width = .Width - 5
        
    End With

Exit Function

Hata:
    MsgBox "Hata Oluştu" & vbNewLine & Err.Description
End Function

Public Function RESIM_SIL(pSatir)
On Error GoTo Hata

    ActiveSheet.Shapes.Range(Array(Range("T" & pSatir).Value)).Select
    Selection.Delete

Hata:
    Range("T" & pSatir).Value = ""
End Function
 
Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
#5 nolu mesajımın son bölümü tekrar okuyup buna göre dosya ve işlem senaryosu paylaşımı yaparsanız destek olmaya çalışırım.
Merhabalar
Yukarıdakı mesajıma göre ekleme ihtimalimiz var mıdır acaba sizin formulün altına ?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,551
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Birkaç resim ve dosyanızın resimle beraber çalışan halini eklerseniz kurguyu daha net anlayabilirim.

Ayrıca #16 nolu mesajınızda paylaştığınız kodda iki ayrı resim yolu kullanılmış. Bu doğru mu?

ResimYolu = "C:\Users\BEYAZ\Desktop\PROFORMA\RESIMLER\" & Range("B" & pSatir).Value & ".jpg"
ResimYolu = "\\C:\Users\Emrah\Desktop\PROFORMA\RESIMLER\bos.jpg"
 
Katılım
2 Eylül 2014
Mesajlar
144
Excel Vers. ve Dili
2016 Türkce 64bit
Altın Üyelik Bitiş Tarihi
30-12-2022
Birkaç resim ve dosyanızın resimle beraber çalışan halini eklerseniz kurguyu daha net anlayabilirim.

Ayrıca #16 nolu mesajınızda paylaştığınız kodda iki ayrı resim yolu kullanılmış. Bu doğru mu?

ResimYolu = "C:\Users\BEYAZ\Desktop\PROFORMA\RESIMLER\" & Range("B" & pSatir).Value & ".jpg"
ResimYolu = "\\C:\Users\Emrah\Desktop\PROFORMA\RESIMLER\bos.jpg"
Ekte çalıştırılmış hali mevcut.

B stunu ürün kodları
T stunu resimlerin benzersiz adları (excel otomatik atıyor bu isimleri) (RESIM_SIL komutu için gerekli)
G stunu resimlerin geldiği stunu

C:\Users\BEYAZ\Desktop\PROFORMA\RESIMLER\" & Range("B" & pSatir).Value & ".jpg --> jpg formatındaki ürünkodları ile aynı isimde olan resimlerin olduğu klasör yolu.

C:\Users\BEYAZ\Desktop\PROFORMA\RESIMLER\bos.jpg --> jpg formatında yine aynı klasörde olan "bos" adındaki resimin yolu ( Eğer girdiğimiz ürün kodu hedef klasörde bir resim ile eşleşmez ise "bos" adındaki resim geliyor.
 

Ekli dosyalar

Üst