Hi allemaal,
Ik loop vast bij mijn project, al ben ik trots op het feit hoe ver ik gekomen ben.. maar dat terzijde
Ik heb op een blad ("alle data") data staan van allerlei zendingen van verschillende klanten.
Deze zendingen wil ik graag op de andere tabbladen krijgen bij de desbetreffende klant.
Hiervoor heb ik gebruik gemaakt van een autofilter; Selecteer zendingen en kopieer deze naar desbetreffende. Daarna, verwijder de data op blad "alle data".
Dit gaat goed. Tot dat er geen zendingen zijn van de desbetreffende klant op het blad "alle data".
Wanneer de klant niet voorkomt in de zendingen, dan kopieert ie wel de header naar desbetreffende klant en verwijdert ie de header op blad "alle data" en daarna loopt ie vast op .ShowAllData
Ik heb al gegoogled, hier op gezocht en er is veel over geschreven.. maar helaas is het mij nog niet gelukt om het op te lossen.
Wat ik verwacht:
Als er geen data is voor de desbetreffende klant, niks doen en door gaan naar de volgende (dus ook niet de header kopieren en verwijderen).
Op of aanmerkingen op de rest van mijn code mag, ik ben lerende en leer graag.
Ik loop vast bij mijn project, al ben ik trots op het feit hoe ver ik gekomen ben.. maar dat terzijde
Ik heb op een blad ("alle data") data staan van allerlei zendingen van verschillende klanten.
Deze zendingen wil ik graag op de andere tabbladen krijgen bij de desbetreffende klant.
Hiervoor heb ik gebruik gemaakt van een autofilter; Selecteer zendingen en kopieer deze naar desbetreffende. Daarna, verwijder de data op blad "alle data".
Dit gaat goed. Tot dat er geen zendingen zijn van de desbetreffende klant op het blad "alle data".
Wanneer de klant niet voorkomt in de zendingen, dan kopieert ie wel de header naar desbetreffende klant en verwijdert ie de header op blad "alle data" en daarna loopt ie vast op .ShowAllData
Ik heb al gegoogled, hier op gezocht en er is veel over geschreven.. maar helaas is het mij nog niet gelukt om het op te lossen.
Wat ik verwacht:
Als er geen data is voor de desbetreffende klant, niks doen en door gaan naar de volgende (dus ook niet de header kopieren en verwijderen).
Code:
Sub filterKlant()
'
'
Dim wsData As Worksheet, wsKlant As Worksheet, ws As Worksheet
Dim SourceRng As Range, DestCell As Range
Dim LR As Integer
Dim klant As String
Set wsData = Workbooks("Facturatie.xlsm").Worksheets("Alle data")
For Each ws In Worksheets
MsgBox (ws.Name)
klant = ws.Name
If ws.Name = "Facturatie" Or ws.Name = "Alle data" Then
Else
Set wsKlant = Workbooks("Facturatie.xlsm").Worksheets(klant)
wsData.Range("A1:R1").AutoFilter Field:=13, Criteria1:= _
"*" & klant & "*"
LR = wsData.Range("A" & Rows.Count).End(xlUp).Row
Set SourceRng = wsData.Range("A2:R" & LR).SpecialCells(xlCellTypeVisible)
Set DestCell = wsKlant.Range("A" & Rows.Count).End(xlUp).Offset(1)
SourceRng.Copy DestCell
SourceRng.Offset(0, 0).SpecialCells _
(xlCellTypeVisible).EntireRow.Delete
wsData.ShowAllData 'ERROR!
End If
Next
'TODO: als geen zendingen, loop niet vast
'TODO: geef melding hoeveel regels
End Sub
Op of aanmerkingen op de rest van mijn code mag, ik ben lerende en leer graag.