• 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 uit tabblad verdelen over meerdere tabbladen

Status
Niet open voor verdere reacties.

kroesjhoar

Gebruiker
Lid geworden
4 okt 2011
Berichten
37
Hallo allemaal,

Ik heb redelijke kennis van excel, maar absoluut geen kennis van Visual Basic.
Nu zit ik met een probleem. Ik wil in excel de gegevens uit het eerste tabblad verdelen over verschillende tabbladen. Daartoe moet aan een criterium in een bepaalde kolom zijn voldaan.
Dus bijvoorbeeld als kolom I de voorraadstatus OK is dan moet deze naar het tabblad OK. is de voorraadstatus BLOK dan moet deze naar tabblad blok en idem voor quarantaine en afkeur.

Ik weet niet of het duidelijk genoeg is.

Het tabblad bevat ongeveer 1000 rijen en 16 kolommen. Alle gegevens wil ik kopieren naar het tabblad als deze aan het criterium heeft voldaan.

Ik hoop dat jullie mij kunnen helpen.

met vriendelijke groeten.



ps. door privacy gevoeligheid kan ik geen voorbeeld posten
 
Laatst bewerkt:
door privacy gevoeligheid kan ik geen voorbeeld posten
Je kunt altijd een fictief voorbeeld maken, dat overeenkomt met de werkelijkheid.
Je begrijpt toch ook wel dat anders degenen die je vraag willen beantwoorden, dat moeten doen?
Je moet zelf ook eens EEN HEEL KLEIN BEETJE moeite doen !!!
 
Code:
Sub test()
Dim iWrd As Integer
Dim sZK As String

    For iWrd = 1 To 4
        sZK = Application.WorksheetFunction.Choose(iWrd, "OK", "BLOK", "QUARANTAINE", "AFKEUR")
        Range("A1:Z2000").AutoFilter 9, sZK
        Range("A1:Z2000").SpecialCells(xlCellTypeVisible).Copy Worksheets(sZK).Range("A1")
    Next
    Range("A1:Z2000").AutoFilter
End Sub

Met vriendelijke groet,


Roncancio
 
Misschien een domme vraag.
Ik heb een voorbeeld gemaakt van hoe het bestand eruit ziet, maar ik krijg hem niet geupload.
Kan iemand mij vertellen hoe ik dit moet doen ( ben namelijk nieuw op dit forum, misschien dat iets in mijn instellingen niet goed staat)
 
Dit zou het moeten zijn....

Bekijk bijlage voorraadstatus.xlsVolgens mij bedoel je dit...

Als je dubbelklikt in Cel a1 op Blad1(deze naam kun je overigens nu gewoon wijzigen en zal de macro niet beïnvloeden) zal de macro uitgevoerd worden.

De macro controleert op Blad1 in kolom I naar de voorraadstatus, vervolgens wordt deze naar gelijknamige tabblad gekopieerd.

Code:
'---------------------------------------------------------------------------------------
'
' Author    : InterFace
' Date      : 4-10-2011
' Purpose   : HELPMIJ.NL
'---------------------------------------------------------------------------------------

Option Explicit

Sub HelpMij_InterFace()

Dim i                       As Integer

Application.ScreenUpdating = False

With Sheets(1)
    For i = 2 To Sheets.Count
        Sheets(i).Range("a2:ak3000").Delete
    Next i
    For i = 2 To .UsedRange.Rows.Count
        If Len(.Range("i" & i)) > 0 Then
            .Rows(i).EntireRow.Copy
            If Sheets(CStr(.Range("i" & i))).UsedRange.Rows.Count > 1 Then
                Sheets(CStr(.Range("i" & i))).Range("a" & Sheets(CStr(.Range("i" & i))) _
                .UsedRange.Rows.Count + 1).PasteSpecial
            Else
                Sheets(CStr(.Range("i" & i))).Range("a2").PasteSpecial
            End If
        End If
    Next i
End With

With Application
    .CutCopyMode = False
    .ScreenUpdating = False
End With

End Sub
 
@interface die van jou werkt niet als ik het oorspronkelijk bestand van mij in het eerste werkblad kopieert. Hij zegt dan dat de range niet voldoende is.

@roncancio Die van jou werkt perfect. Dankjewel.
Als ik vervolgens een rechthoek toevoeg en daaraan de macro toewijs op het eerste tabblad. ( zodat deze als knop fungeert) dan krijg ik bij het lopen van de macro de knop ook op het 2e tabblad te staan.

Wat doe ik nou verkeerd. Ligt dat aan jou macro of heb ik op de verkeerde manier de knop gemaakt?

Bedankt voor jullie hulp
 
Ik zit wederom met een probleem. Ik heb de macro zelf nog verder uitgebreid. Nu zodat elke kolom automatisch de juiste breedte heeft ( maar volgens mij kan de macro hiervoor vele malen korter )
Ook heb ik een voorwaardelijke opmaak en een sortering op kleur toegepast ( ook deze kan volgens mij vele malen korter, maar ik heb geen idee hoe)

Maar het probleem waar ik nu mee zit is. Dat ik een knop heb toegevoegd op het eerste werkblad. Deze werkt naar behoren, maar er wordt vervolgens ook een knop gemaakt op het tweede tabblad. Dit is niet de bedoeling.

Heeft iemand een idee hoe dit op te lossen?

Bestand is hier terug te vinden.
http://www.mijnbestand.nl/Bestand-V87WZMMXQXT3.xlsm
 
Waarschijnlijk zal Rocancio je wel een goede oplossing geven,
maar als je je bestand post als Excel97-2003-bestand, dan wil ik er ook wel eens naar kijken (ik kan geen Excel 2007/2010-bestand openen).
 
je macro loopt in Excel 2002 vast, omdat bv. de sorteeropdracht (met Sort.SortFields) daarin niet werkt. Daarmee zijn Excel 2007/2010 niet compatibel met voorgaande versies. Bovendien is het in Excel 2002 niet mogelijk (althans niet standaard) om te sorteren op kleur. Maar je kunt je macro aanmerkelijk verkorten aldus:
Kolommen op de juiste breedte brengen en sorteren (invoegen in je macro):
Code:
Dim x As Integer
For x = 2 To 6
with Sheets(x)
.Columns("A:O").AutoFit
' Hier je sorteercode
End with
Next x
End Sub
En voeg aan het begin en eind van je macro resp. toe:
Code:
application.screenupdating = false
en
application.screenupdating = true
 
Laatst bewerkt:
Nog een aanvulling op mijn vorig bericht:
als je een knop plaatst van de werkset besturingselementen, dan wordt die bij uitvoeren vabn de macro niet meegekopieerd (althans: in mijn bestand toch niet, dus ik denk in het jouwe ook niet).
 
bij mij kopieert hij hem alleen mee naar het tabblad OK. elke keer als de macro opnieuw wordt gerunt.

wat is het nut van de laatste code die je hebt geschreven, die snap ik niet helemaal?

bedankt voor jou input
 
Bij mij kopieert hij hem alleen mee naar het tabblad OK. elke keer als de macro opnieuw wordt gerund.
Zoals ik al schreef: jij hebt een knop geplaatst van de werkbalk Formulieren. Heb je het nu ook al getest (zoals ik aanbeval) met een knop van de werkset besturingselementen ?
wat is het nut van de laatste code die je hebt geschreven, die snap ik niet helemaal?
1. laat de macro lopen zonder- en mét die code en je ziet het meteen.
2. Als die code in je macro staat, je zet de cursor in die tekst en je drukt op F1, dan heb je METEEN het antwoor,. Ik begrijp echt niet dat je zoiets niet eerst doet voordat je zo'n vraag op het forum stelt
 
Laatst bewerkt:
bij mij kopieert hij hem alleen mee naar het tabblad OK. elke keer als de macro opnieuw wordt gerunt.

wat is het nut van de laatste code die je hebt geschreven, die snap ik niet helemaal?

bedankt voor jou input

Wat Zapatr bedoelt is dat je bovenaan in de code zet ...
Code:
Application.ScreenUpdating = False

... en onderaan in de code zet je...
Code:
 Application.ScreenUpdating = True

Zoals het nu staat zal het niet werken omdat het lijkt alsof je en in de code moet zetten en dat klopt niet.
Het doel van deze coderegels is dat de wijzigingen tijdens de werking van de code niet wordt getoond. Dit voorkomt het flikkeren van het beeld en zorgt ervoor dat de code ook wat sneller werkt.

Met vriendelijke groet,


Roncancio
 
Het doel van deze coderegels is dat de wijzigingen tijdens de werking van de code niet wordt getoond. Dit voorkomt het flikkeren van het beeld en zorgt ervoor dat de code ook wat sneller werkt.
Ik wilde de vragensteller leren op F1 te drukken.
Helaas, tevergeefs... ;)
 
@zapatr Je hebt gelijk wat betreft het F1 drukken. Heb jou raad natuurlijk opgevolgd. Ik heb het getest en de helpdesk van Excel geraadpleegd. En het verschil is overduidelijk. Bedankt hiervoor.

De knop echter wilt mij nog niet lukken. Ik begreep dat jij werkt met Excel 2003?? Ik denk dat het invoegen van knoppen daar iets anders is dan in 2007. Ik heb namelijk alle knoppen ingevoerd. Van een rechthoek met macro verwijzing tot de knoppen die jij refereerde.
Als ik een knop van de formulierbesturingselementen invoeg dan kopieert hij mij de knop mee naar het tabblad OK.
Voeg ik daarentegen een knop van de Active-Xbesturingselemenenten in dan kopieert hij mij de knop niet mee, maar loopt de macro maar tot de helft ( doet hij geen kleursortering meer ) en kan ik de macro maar 1 keer runnen.

De macro is nu ook aanzienlijk gekort, maar krijg de kleursortering niet goed in jou macro gevoegd
Hij geeft mij een compileerfout. F1 geraadpleegd niks kunnen achterhalen. Wat doe ik nu verkeerd?

Code:
' Layout Macro
Dim x As Integer
For x = 1 To 5
With Sheets(x)
Columns("A:O").AutoFit
End With
Columns("M:M").Select
    ActiveWorkbook.Worksheets("").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("").Sort.SortFields.Add Key:=Range("M1:M900")
        , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("").Sort.SortFields.Add(Range("M1:M900"), _
        xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(192, 0 _
        , 0)
    With ActiveWorkbook.Worksheets("").Sort
        .SetRange Range("A1:P900")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
End With

Next x


Application.ScreenUpdating = True
    
End Sub
 
dat met de knop ik opgelost. Nogmaals geprobeerd knop toe te voegen en hij kopieert hem niet meer mee. RAAR!! Misschien heb ik telkens iets fout gedaan.
 
De knop echter wilt mij nog niet lukken. Ik begreep dat jij werkt met Excel 2003?? Ik denk dat het invoegen van knoppen daar iets anders is dan in 2007. Ik heb namelijk alle knoppen ingevoerd. Van een rechthoek met macro verwijzing tot de knoppen die jij refereerde.
Ik denk niet dat het plaatsen van knoppen in Excel 2003 en 2007 in essentie verschilt.
Voeg ik daarentegen een knop van de Active-Xbesturingselemenenten in dan kopieert hij mij de knop niet mee, maar loopt de macro maar tot de helft ( doet hij geen kleursortering meer ) en kan ik de macro maar 1 keer runnen.
Dat ligt niet aan de knop, maar aan je macro. Er staan een heleboel fouten in, maar die kan ik in Excel 2002 er niet uithalen, want de sorteercode van Excel 2007 werkt niet in Excel 2002. En wijzigingen aanbrengen in een macro die ik niet kan testen, dat wil ik niet. Ik kan wel wát zeggen:
Overal waar staat: Worksheets(""), moet worden: Worksheets(x)
Als je With sheets(x) gebruikt, dan moet je (zoals ik hierboven deed, maar je fout hebt overgenomen) steeds verwijzen naar Sheets(x). Dus als je in blad(x) het over columns("A:O") of een range("M1:M900") hebt, dan moet dat worden: .columns("A:O") en .range(M1:M900"). Bij een with hoort altijd een end with. Dit zijn al enkele zaken waarom jouw macro niet in alle bladen werkt en ook de kleursortering niet kan werken. Moest ik over Excel 2007 beschikken, dan zou ik je macro wel werkend krijgen, maar nu moet ik het hier bij laten. Mensen die wél over Excel 2007/2010 beschikken, zullen je ongetwijfeld wel verder helpen. Natuurlijk is het ook hoogst noodzakelijk dat je je de elementaire beginselen van vba eigen maakt (wordt allemaal goed uitgelegd in de helpfile).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan