• DİKKAT

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

Farkli sayfadan çalistirilamayan makro

Katılım
23 Mayıs 2014
Mesajlar
69
Excel Vers. ve Dili
2021-Fransizca
Iyi gunler
Asagidaki makro kodlarim "Base" isimli sayfada direk calistirilinca çalismasina ragmen diger bir sayfa olan "Formuller" sayfasinda bulunan butona atatigimda o sayfadan çalistiramiyorum. Kuçuk bir sorun var ama ben halledemiyorum. Yardimci olursaniz sevinirim.

Kod:
Sub Effectué()
    Dim lastcell As Range
    With Worksheets("Base")
        Set lastcell = .UsedRange.SpecialCells(xlCellTypeLastCell)
        With .Range([A1], lastcell)
            .AutoFilter Field:=24, Criteria1:="Effectué"
            With .Range([A3], lastcell).SpecialCells(xlCellTypeVisible)
                .Copy
                Worksheets("Effectué").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
                .EntireRow.Delete
            End With
            .AutoFilter
        End With
    End With
End Sub
 
With Worksheets("Base") tırnak içerisinde yazan sayfa ismini değiştirmeniz gerekir.
 
With Worksheets("Base") tırnak içerisinde yazan sayfa ismini değiştirmeniz gerekir.
Adem bey oncelikle tesekkurler. Islem yapilacak sayfa "Base" sayfasi. Kullandigim buton formuller sayfasinda o yuzden oyle birakmistim. Sizin dediginiz gibi yapip yinede denemek amacli "formuller" diye degistirdim malesef calismadi
 
Criteria1:="Effectué" ve Worksheets("Effectué") bu kısımları da kontrol ediniz.
Eğer yine olmaz ise dosyanızı paylaşır mısınız?
 
Criteria1:="Effectué" ve Worksheets("Effectué") bu kısımları da kontrol ediniz.
Eğer yine olmaz ise dosyanızı paylaşır mısınız?
Evet onlari kontrol ettim Effectue yazili her satiri alip efectue sayfasina kes yapistir yapiyor. o komutlarda bir sorun yok. Zaten base sayfasinin içerisinde islem yaptigimda her sey yolunda. Benim asil sorunum bu base sayfasinda yapmis oldugum islemi formuller sayfasinda bir buton ile yapmak istedigimde olusuyor. Yani makroya bu islmei base sayfasi uzerinde gerceklestir demem gerekiyor.
Ben Sheets("Base").Select ile denedim fakat olmadi.
Tesekkurler
 
Örnek Excel dosyası paylaşır mısınız?
 
Maalesef paylasamiyorum. Ag baglantisi izin vermiyor.
 
Köşeli parantez içinde yazan hücre adreslerini çift tırnak içine alarak deneyiniz.

[A1] => "A1"
 
Önce Base sayfasını seçtirip, işlem sonunda Formuller sayfasını aktif edebilirsiniz.
Kod:
Sub Effectué()
Dim lastcell As Range
Application.ScreenUpdating = False
Worksheets("Base").Select
    With Worksheets("Base")
        Set lastcell = .UsedRange.SpecialCells(xlCellTypeLastCell)
        With .Range([A1], lastcell)
            .AutoFilter Field:=24, Criteria1:="Effectué"
            With .Range([A3], lastcell).SpecialCells(xlCellTypeVisible)
                .Copy
                Worksheets("Effectué").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
                .EntireRow.Delete
            End With
            .AutoFilter
        End With
    End With
Worksheets("Formuller").Select
Application.ScreenUpdating = True
End Sub
 
Korhan ve Adem bey ikinizede çok tesekkur ediyorum. Her iki çözümüde denedim ikiside sorunsuz çalisiyor. Emekleriniz ve ilginiz için tekrar tesekkurler.
 
Tabi makro çalisinca farkli bir problem ortaya çikti. Ben sayfada 24. kolonda "Effectué" degerini aratip eger varsa satiri kes kopyala yaptiriyorum. Fakat bu kolonda bir "Effectué" degeri yoksa makro asagidaki su satirda hata veriyor. Bu donguye eger Effectué degeri yoksa iptal et diyebilirmiyiz?
Hata olan satiri asagida gonderiyorum.
With .Range([A2], lastcell).SpecialCells(xlCellTypeVisible)
 
Aşağıdaki gibi olabilir... Düzeltmeleri kendinize göre yaparsınız.

Rich (BB code):
    With Worksheets("Base")
        If WorkSheetFunction.CountIf(.Range("X:X"), "Effectué") > 0 Then
        Set lastcell = .UsedRange.SpecialCells(xlCellTypeLastCell)
        With .Range([A1], lastcell)
            .AutoFilter Field:=24, Criteria1:="Effectué"
            With .Range([A3], lastcell).SpecialCells(xlCellTypeVisible)
                .Copy
                Worksheets("Effectué").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
                .EntireRow.Delete
            End With
            .AutoFilter
        End With
        End If
    End With
 
Aşağıdaki gibi olabilir... Düzeltmeleri kendinize göre yaparsınız.

Rich (BB code):
    With Worksheets("Base")
        If WorkSheetFunction.CountIf(.Range("X:X"), "Effectué") > 0 Then
        Set lastcell = .UsedRange.SpecialCells(xlCellTypeLastCell)
        With .Range([A1], lastcell)
            .AutoFilter Field:=24, Criteria1:="Effectué"
            With .Range([A3], lastcell).SpecialCells(xlCellTypeVisible)
                .Copy
                Worksheets("Effectué").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
                .EntireRow.Delete
            End With
            .AutoFilter
        End With
        End If
    End With
Cok tesekkur ederim sorunsuz bir sekilde çalisiyor.
 
Geri
Üst