• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Gegevens verschillende tabbladen onder bepaalde voorwaarden samenvoegen op 1 tabblad

Status
Niet open voor verdere reacties.

LindaVelde

Gebruiker
Lid geworden
11 jun 2015
Berichten
22
Beste Forumlezers,

Als eerste: Top forum!
Heel handig gebruik gemaakt van advies van anderen.

Ik ben mede hierdoor zelf al (voor mijn doen) best ver gekomen.

Bijgesloten tref je een excelbestand aan wat ik aan het bouwen ben.
Bekijk bijlage opzet CRM.xlsm

In het kort de bedoeling:
Per klant wordt er een tabblad aangemaakt met een cijfer als naam (eerste klant =1, tweede 2 enz enz). Deze tabbladen zijn een kopie van stamblad BLANCO BEDR BLAD.
Nu heb ik middels verschillende formules al voor elkaar gekregen alle belangrijke gegevens te verzamelen op een verzamelblad.

Maar nu wil ik een speciaal tabel (de actielijst Kolom F t/m L) op elk tabblad samenvoegen in 1 tabel op tabblad Actielijst (kolom A t/m G) beide vanaf cel 4.
En dan met de voorwaarde:
- Kolom L (Uitgevoerd) moet NEE zijn.
- Het mogen geen lege cellen betreffen.

Het probleem:
Mijn kennis betreft macro's en VBA zeer beperkt (zeg maar gerust dat ik regelmatig een braamstruik zie branden), maar middels goed afkijken heb ik wel wat gefabriceerd.

De gegevens worden nu overgenomen van de juiste kolommen en de juiste tabbladen maar ik loop tegen het volgende aan:
- Lege cellen worden ook gekopieerd.
- Het tabblad Actielijst wordt niet eerst geleegd. (dus alles komt nogmaals er onder te staan). Althans daar lijkt het op.
- Kolom A (Kenmerk) wordt niet goed overgenomen van de verschillende tabbladen (er staat overal 1$G$ omdat dit ook de formule in die cellen is). Ik zou graag willen zien dat alle cellen als keiharde waarde worden gekopieerd. Is dit mogelijk?
- Ik heb geen flauw benul hoe ik een voorwaarde (alleen gegevens waarvan in kolom L (Uitgevoerd) NEE staat) toevoeg.

Nu kan ik het probleem met de "Lege" cellen wel oplossen door een werkafspraak in te voeren: "Vul in Kolom L (Uitgevoerd) alleen iets in als er ook een actie regel staat en altijd alleen JA/NEE. In combinatie met de voorwaarde (alleen kopiëren als Kolom L (Uitgevoerd) NEE bevat) lijkt mij dit opgelost. Toch?

Dan nog een laatste, wat minder intelligente, vraag: hoe koppel ik straks de kloppende prachtige macro aan een knop? Ik dacht dat ik het wist, maar ik mis blijkbaar een stap.


Wie kan mij verder helpen?
 
Laatst bewerkt:
Ik denk dat je met een draaitabel het gewenste resultaat wel kan bereiken. Helaas is mijn kennis wat betreft draaitabellen niet meer wat het was, dus ik kan zelf het antwoord niet één twee drie verschaffen.
Misschien iemand anders? :)
 
Dank Roeland voor je reactie.
De draaitabel levert helaas geen oplossing omdat het niet om aantallen of andere sommen gaat.
Met draaitabellen kun je geen overzicht van tekst maken, helaas.
 
update

Ik heb nog wat lopen vogelen en heb nu het voor elkaar gekregen dat het een bepaald gebied leegmaakt en vult.
Alleen maakt hij de cellen leeg, waar eerst tekst stond en daarna plaatst het daaronder de gegevens.
Ik krijg dus steeds eerst een stuk leeg vlak (waar eerdere gegevens stonden) en daarna de inhoud van alle tabbladen.

Hier een geactualiseerd bestand
Bekijk bijlage opzet CRM.xlsm

De code voor de macro:
Code:
Sub Actielijst()
With Application
    .ScreenUpdating = False
    Sheets("Actielijst").[A4:G65536].ClearContents

    For Each sh In ThisWorkbook.Sheets
        If Len(sh.Name) <= 3 Then
            lastrow = sh.Range("F" & Rows.Count).End(xlUp).Row
            If lastrow > 3 Then
                sh.Range("F4", "L" & lastrow).Copy Destination:= _
                Sheets("Actielijst").Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
            End If
        End If
    Next sh
    .Goto Sheets("Actielijst").[A4]
    .CutCopyMode = False
    .ScreenUpdating = True
End With
End Sub
 
Ik heb het probleem opgelost door de bovenstaande macro te gebruiken in een nieuwe macro die ik gewoon heb opgenomen.
Eerst de macro uitvoeren, dan een selectie gemaakt van lege cellen, deze verwijderd en filter weer verwijderd en tadaa! nieuwe macro die doet wat ik wil.

De gebruiker moet zelf maar even de filter op "NEE" zetten.

Vond ik best knap gevonden van mijzelf voor iemand die niets weet van VBA.
 
Overigens heb ik nog wel een vraag hoe ik het voor elkaar krijg om bovenstaande alleen als waarde te laten plakken.

Daar ben ik nog niet uit.
 
vervang dit deel

Code:
 sh.Range("F4", "L" & lastrow).Copy Destination:= _
                Sheets("Actielijst").Range("a" & Rows.Count).End(xlUp).Offset(1, 0)

door

Code:
 sh.Range("F4", "L" & lastrow).Copy
               With Sheets("Actielijst").Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
.PasteSpecial Paste:=(xlValues)
End With

mvg

Leo
 
Oh ik was de "End With" vergeten!

Super bedankt Leo, het werkt!

Topic kan afgesloten worden.
 
mooi zo, kan je nog wel de vraag als opgelost zetten ?


mvg
Leo
 
Code:
Sub Actielijst()
  Sheets("Actielijst").usedrange.resize(,7).offset(3).ClearContents

  For Each sh In ThisWorkbook.Sheets
    If Len(sh.Name) <= 3 and sh.columns(6).specialcells(2).count>3 Then Sheets("Actielijst").cells(Rows.Count,1).End(xlUp).Offset(1).resize(sh.columns(6).specialcells(2).count,7)=sh.columns(6).specialcells(2).offset(4).resize(,7).value
  Next
End Sub
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan