• 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.

Melding voorzien indien LKxxx niet in lijst voorkomt

Status
Niet open voor verdere reacties.
Dit zou moeten gelden voor alle drie de tabbladen (immers begint elk tabblad met RM).
Code:
arr2(n, 15) = IIf(Left(arr2(n, 8), 2) = "RM", ThisWorkbook.Sheets("systeem").Cells(2, 1).Value, ThisWorkbook.Sheets("systeem").Cells(1, 1).Value)
 
Beste HSV,

Heb het dan toch voor elkaar gekregen om de gegevens validatie in het sjabloon te steken.

Kan ik je nog aan het werk zetten voor één uitdaging ?

Grts Danny147
 
Ik geef geen garantie. :d
 
Beste HSV,

Via module LPK in het bestandje Planning Danny 3.xlsb kan men al een deel van de code zien.

Via bijlage heb ik dit even op een rijtje gezet wat er moet gebeuren.

Grts Danny147
 

Bijlagen

Bedoel je het zo Danny?

Code:
If Not IsError(i) Then
[COLOR=#ff0000]        arr = Split(ThisWorkbook.ActiveSheet.Name, "_")[/COLOR]
[COLOR=#ff0000]        With Workbooks("output Danny").Sheets("rawdata").Cells(1).CurrentRegion[/COLOR]
[COLOR=#ff0000]            .AutoFilter 1, CDate(Format(ThisWorkbook.ActiveSheet.Cells(1, 3).Value, "dd/mm/yyyy"))[/COLOR]
[COLOR=#ff0000]            .AutoFilter 5, arr(0), 2, arr(1)[/COLOR]
[COLOR=#ff0000]            .AutoFilter 6, Blad10.Cells(i, 4).Value[/COLOR]
[COLOR=#ff0000]            .Offset(1).Copy ThisWorkbook.ActiveSheet.Range("A1000").End(xlUp).Offset(2)[/COLOR]
[COLOR=#ff0000]        End With[/COLOR]
         Else
           MsgBox "De ingevulde loopkraan """ & str & """ is niet terug gevonden."
            .ClearContents
          Exit Sub
 
Beste HSV,

Krijg de rest van de code niet aan elkaar zonder foutmeldingen, gaat mijn petje te boven :D
Kan je de code hier vervolledigen aub

Grts Danny147
 
De rest van de code heb ik niet naar gekeken en heb het onderbroken bij het resultaat wat ik moest verkrijgen.
In de code staat mij te veel 'select', en heb vanavond geen tijd meer omdat te controleren en te verbeteren.
Ik dacht dat de code verder wel goed functioneerde daar het al gereed was.


Vermeld even waar de fout precies plaats vindt.
Code:
Sub hsv() 'VulGegevensLPKIn(control As IRibbonControl)


Application.ScreenUpdating = False
mySheetName = ActiveSheet.Name
    With Range("A1000").End(xlUp).Offset(2, 0)
   .Resize(, 2).ClearContents
        str = InputBox("Loopkraan ingeven", "Loopkraan:")
         If Not str = "" Then
          .Value = str
         Else
           MsgBox "je bent gestopt"
           Exit Sub
         End If


       i = Application.Match(str, Blad10.Columns(3), 0)
        
       If Not IsError(i) Then
[COLOR=#ff0000]        arr = Split(ThisWorkbook.ActiveSheet.Name, "_")[/COLOR]
[COLOR=#ff0000]        With Workbooks("output Danny").Sheets("rawdata").Cells(1).CurrentRegion[/COLOR]
[COLOR=#ff0000]         .AutoFilter 1, CDate(Format(ThisWorkbook.ActiveSheet.Cells(1, 3).Value, "dd/mm/yyyy"))[/COLOR]
[COLOR=#ff0000]         .AutoFilter 5, arr(0), 2, arr(1)[/COLOR]
[COLOR=#ff0000]         .AutoFilter 6, Blad10.Cells(i, 4).Value[/COLOR]
[COLOR=#ff0000]         .Offset(1).Copy ThisWorkbook.ActiveSheet.Range("A1000").End(xlUp).Offset(2)[/COLOR]
[COLOR=#ff0000]        End With[/COLOR]
         Else
         MsgBox "De ingevulde loopkraan """ & str & """ is niet terug gevonden."
          .ClearContents
          Exit Sub
        End If
        .Font.Bold = True
        .Font.Size = 14
        .Font.Underline = True
        .EntireRow.AutoFit
  End With
        
        Sheets("Systeem").Range("IBNStart").Value = Sheets(mySheetName).Range("A1000").End(xlUp).row + 2 '47
        Sheets("Systeem").Range("IBNEinde").Value = Sheets("Systeem").Range("IBNStart") + 13 '60


        iRowStart = Sheets("Systeem").Range("IBNStart")
        iRowEinde = Sheets("Systeem").Range("IBNEinde")


        Sheets("Systeem").Select
        Range("IBN").Select
        Selection.Copy
        Sheets(mySheetName).Select
        Range("A" & iRowStart).Select
        ActiveSheet.Paste


        Rows(iRowStart + 1 & ":" & iRowEinde).Select
        Selection.Rows.Group


        Sheets("Systeem").Range("CHStart").Value = Sheets("Systeem").Range("IBNEinde") + 2 '62


        iRowStart = Sheets("Systeem").Range("CHStart")


        Sheets("Systeem").Select
        Range("ColumnHeader").Select
        Selection.Copy
        Sheets(mySheetName).Select
        Range("A" & iRowStart).Select
        ActiveSheet.Paste
        
        'Hieronder vult men gegevens in via het bestandje "output" locatie is
        'ChDir "\\Sidmar.be\dfs\ORGANISATIE\LAD\GROEP\LPK\Planning\Systeem"
        'Workbooks.Open Filename:="file:\\sidmar.be\dfs\Dienst\GROEP\LAD\LPK\Planning\Systeem\Output.xlsx", ReadOnly:=True
        'Eerst kijkt men naar de datum, dan naar de functieplaats en werkplek dan schrijft men deze weg op de juiste plaats.
        'Wanneer het aantal twee of meer is dient deze regel aantal keer geplaatst te worden volgens aantal.
        'Is de werkplek RE, dan moet er in kolom Groep ? geplaatst worden voor RM ?
        'Deze symbolen staan op tabblad Systeem evenals de blokken hier boven beschreven.


        Sheets("Systeem").Range("CHEinde").Value = Sheets(mySheetName).Range("A1000").End(xlUp).row + 2 '64


        iRowEinde = Sheets("Systeem").Range("CHEinde")


        Rows(iRowStart + 1 & ":" & iRowEinde).Select '63 & 64
        Selection.Rows.Group


        Sheets("Systeem").Range("CHBTRStart").Value = Sheets("Systeem").Range("CHEinde") + 2 '66




        iRowStart = Sheets("Systeem").Range("CHBTRStart")


        Sheets("Systeem").Select
        Range("ColumnHeaderBTR").Select
        Selection.Copy
        Sheets(mySheetName).Select
        Range("A" & iRowStart).Select
        ActiveSheet.Paste
        
        'Hieronder vult men weer gegevens in via volgend bestandje op tabblad 2, locatie is:
        'ChDir "\\Sidmar.be\dfs\Dienst\GROEP\LAD\LPK\Betacel\Projecten"
        'Workbooks.Open Filename:="file:\\Sidmar.be\dfs\Dienst\GROEP\LAD\LPK\Betacel\Projecten\planningEXT.xlsx", ReadOnly:=True
        'Eerst kijkt men naar de datum, dan naar LKXXX en men schrijft de gegevens weg op de juiste plaats.
        'Indien er geen gegevens aanwezig zijn dan melding: "Geen gegevens aanwezig voor Betrouwbaarheidscel" en code verder laten lopen


        Sheets("Systeem").Range("CHBTREinde").Value = Sheets(mySheetName).Range("A1000").End(xlUp).row + 2 '68


        iRowEinde = Sheets("Systeem").Range("CHBTREinde")


        Rows(iRowStart + 1 & ":" & iRowEinde).Select '67 & 68
        Selection.Rows.Group


        Sheets("Systeem").Range("CHEXTStart").Value = Sheets("Systeem").Range("CHBTREinde") + 2 '70


        iRowStart = Sheets("Systeem").Range("CHEXTStart")


        Sheets("Systeem").Select
        Range("ColumnHeaderEXT").Select
        Selection.Copy
        Sheets(mySheetName).Select
        Range("A" & iRowStart).Select
        ActiveSheet.Paste
        
        'Hieronder vult men weer gegevens in via volgend bestandje op tabblad 2, locatie is:
        'ChDir "\\Sidmar.be\dfs\ORGANISATIE\LAD\GROEP\LPK\Planning\Systeem"
        'Workbooks.Open Filename:="file:\\sidmar.be\dfs\Dienst\GROEP\LAD\LPK\Planning\Systeem\Externen.xlsx", ReadOnly:=True
        'Eerst kijkt men naar de datum, dan naar LKXXX en men schrijft de gegevens weg op de juiste plaats.
        'Indien er geen gegevens aanwezig zijn dan melding dat er "geen gegevens aanwezig voor Externen"en code verder laten lopen


        Sheets("Systeem").Range("CHEXTEinde").Value = Sheets(mySheetName).Range("A1000").End(xlUp).row + 2 '70


        iRowEinde = Sheets("Systeem").Range("CHEXTEinde")


        Rows(iRowStart + 1 & ":" & iRowEinde).Select '71 & 72
        Selection.Rows.Group
        
        Range("A" & iRowStart + 4).Select


Application.ScreenUpdating = True
End Sub
 
Beste HSV,

Code:
.AutoFilter 6, Blad10.Cells(i, 4).Value

Deze moet filteren op bevat, dus met * ervoor en * erachter.

En onderstaande code moet er toch ook tussen:

Code:
                sn = .Cells(1).CurrentRegion
                     ReDim arr2(1 To UBound(sn), 1 To UBound(sn, 2))
                       For ii = 2 To UBound(sn)
                        If Not .Rows(ii).Hidden Then
                           n = n + 1
                         For j = 1 To UBound(sn, 2)
                          arr2(n, 1) = sn(ii, 3)
                          arr2(n, 2) = sn(ii, 9)
                          arr2(n, 3) = sn(ii, 10)
                          arr2(n, 8) = sn(ii, 5)
                          arr2(n, 9) = sn(ii, 13)
                          c00 = Application.index(sn, 1, 0)
                          c01 = Replace(Format(twb.Cells(1, 3), "dd-mm-yyyy"), "-", ".")
                          c02 = Application.Match(c01, c00, 0)
                          If Not IsError(c02) Then arr2(n, 10) = sn(ii, c02)
                          arr2(n, 11) = sn(ii, 2)
                          arr2(n, 13) = sn(ii, 8)
                          arr2(n, 15) = IIf(Left(arr2(n, 8), 2) = "RM", ThisWorkbook.Sheets("systeem").Cells(2, 1).Value, ThisWorkbook.Sheets("systeem").Cells(1, 1).Value)
                        Next j
                        End If
                       Next ii
                twb.Range("A" & IIf(x = 0, 28, 38)).Resize(n, 15) = arr2
                n = 0
                Erase arr2
       Next x
    End With
   End With
.Close 0
End With

Grts Danny147
 
Laatst bewerkt:
Ik verneem het wel.
Code:
Sub hsvtwee() 'VulGegevensLPKIn(control As IRibbonControl)
Dim arr, arr2, sn, i, ii As Long, j As Long, x As Long, n As Long, c As Range, c00, c01, c02, twb As Worksheet
Application.ScreenUpdating = False
mySheetName = ActiveSheet.Name
    With Range("A1000").End(xlUp).Offset(2, 0)
   .Resize(, 2).ClearContents
        str = InputBox("Loopkraan ingeven", "Loopkraan:")
         If Not str = "" Then
          .Value = str
         Else
           MsgBox "je bent gestopt"
           Exit Sub
         End If


       i = Application.Match(str, Blad10.Columns(3), 0)
        
       If Not IsError(i) Then
        arr = Split(ThisWorkbook.ActiveSheet.Name, "_")
        
Workbooks.Open ThisWorkbook.path & "\Output Danny.xlsx"
 'With GetObject(ThisWorkbook.path & "\Output Danny.xlsx")
 With ActiveWorkbook
  Set twb = ThisWorkbook.ActiveSheet
  arr = Split(twb.Name, "_")
   With Workbooks("Output Danny.xlsx").Sheets("Rawdata")
    With .Cells(1).CurrentRegion
     If .Parent.AutoFilterMode Then .Parent.AutoFilterMode = False
       .AutoFilter 1, CDate(Format(ThisWorkbook.ActiveSheet.Cells(1, 3).Value, "dd/mm/yyyy"))
         .AutoFilter 5, arr(0), 2, arr(1)
         .AutoFilter 6, Blad10.Cells(i, 4).Value & "*"
                sn = .Cells(1).CurrentRegion
                     ReDim arr2(1 To UBound(sn), 1 To UBound(sn, 2))
                       For ii = 2 To UBound(sn)
                        If Not .Rows(ii).Hidden Then
                           n = n + 1
                         For j = 1 To UBound(sn, 2)
                          arr2(n, 1) = sn(ii, 3)
                          arr2(n, 2) = sn(ii, 9)
                          arr2(n, 3) = sn(ii, 10)
                          arr2(n, 8) = sn(ii, 5)
                          arr2(n, 9) = sn(ii, 13)
                          c00 = Application.Index(sn, 1, 0)
                          c01 = Replace(Format(twb.Cells(1, 3), "dd-mm-yyyy"), "-", ".")
                          c02 = Application.Match(c01, c00, 0)
                          If Not IsError(c02) Then arr2(n, 10) = sn(ii, c02)
                          arr2(n, 11) = sn(ii, 2)
                          arr2(n, 13) = sn(ii, 8)
                          arr2(n, 15) = IIf(Left(arr2(n, 8), 2) = "RM", ThisWorkbook.Sheets("systeem").Cells(2, 1).Value, ThisWorkbook.Sheets("systeem").Cells(1, 1).Value)
                        Next j
                        End If
                       Next ii
                twb.Range("A1000").End(xlUp).Offset(2).Resize(n, 15) = arr2
                n = 0
                Erase arr2
    End With
   End With
.Close 0
End With


         Else
         MsgBox "De ingevulde loopkraan """ & str & """ is niet terug gevonden."
          .ClearContents
          Exit Sub
        End If
        .Font.Bold = True
        .Font.Size = 14
        .Font.Underline = True
        .EntireRow.AutoFit
  End With
        Sheets("Systeem").Range("IBNStart").Value = Sheets(mySheetName).Range("A1000").End(xlUp).row + 2 '47
        Sheets("Systeem").Range("IBNEinde").Value = Sheets("Systeem").Range("IBNStart") + 13 '60


        iRowStart = Sheets("Systeem").Range("IBNStart")
        iRowEinde = Sheets("Systeem").Range("IBNEinde")


        Sheets("Systeem").Range("IBN").Copy Sheets(mySheetName).Range("A" & iRowStart)


        Rows(iRowStart + 1 & ":" & iRowEinde).Rows.Group


        Sheets("Systeem").Range("CHStart").Value = Sheets("Systeem").Range("IBNEinde") + 2 '62


        iRowStart = Sheets("Systeem").Range("CHStart")


        Sheets("Systeem").Range("ColumnHeader").Copy Sheets(mySheetName).Range("A" & iRowStart)
        
        'Hieronder vult men gegevens in via het bestandje "output" locatie is
        'ChDir "\\Sidmar.be\dfs\ORGANISATIE\LAD\GROEP\LPK\Planning\Systeem"
        'Workbooks.Open Filename:="file:\\sidmar.be\dfs\Dienst\GROEP\LAD\LPK\Planning\Systeem\Output.xlsx", ReadOnly:=True
        'Eerst kijkt men naar de datum, dan naar de functieplaats en werkplek dan schrijft men deze weg op de juiste plaats.
        'Wanneer het aantal twee of meer is dient deze regel aantal keer geplaatst te worden volgens aantal.
        'Is de werkplek RE, dan moet er in kolom Groep ? geplaatst worden voor RM ?
        'Deze symbolen staan op tabblad Systeem evenals de blokken hier boven beschreven.


        Sheets("Systeem").Range("CHEinde").Value = Sheets(mySheetName).Range("A1000").End(xlUp).row + 2 '64


        iRowEinde = Sheets("Systeem").Range("CHEinde")


        Rows(iRowStart + 1 & ":" & iRowEinde).Select '63 & 64
        Selection.Rows.Group


        Sheets("Systeem").Range("CHBTRStart").Value = Sheets("Systeem").Range("CHEinde") + 2 '66




        iRowStart = Sheets("Systeem").Range("CHBTRStart")


        Sheets("Systeem").Range("ColumnHeaderBTR").Copy Sheets(mySheetName).Range("A" & iRowStart)
        
        'Hieronder vult men weer gegevens in via volgend bestandje op tabblad 2, locatie is:
        'ChDir "\\Sidmar.be\dfs\Dienst\GROEP\LAD\LPK\Betacel\Projecten"
        'Workbooks.Open Filename:="file:\\Sidmar.be\dfs\Dienst\GROEP\LAD\LPK\Betacel\Projecten\planningEXT.xlsx", ReadOnly:=True
        'Eerst kijkt men naar de datum, dan naar LKXXX en men schrijft de gegevens weg op de juiste plaats.
        'Indien er geen gegevens aanwezig zijn dan melding: "Geen gegevens aanwezig voor Betrouwbaarheidscel" en code verder laten lopen


        Sheets("Systeem").Range("CHBTREinde").Value = Sheets(mySheetName).Range("A1000").End(xlUp).row + 2 '68


        iRowEinde = Sheets("Systeem").Range("CHBTREinde")


        Rows(iRowStart + 1 & ":" & iRowEinde).Rows.Group  '67 & 68


        Sheets("Systeem").Range("CHEXTStart").Value = Sheets("Systeem").Range("CHBTREinde") + 2 '70


        iRowStart = Sheets("Systeem").Range("CHEXTStart")


        Sheets("Systeem").Range("ColumnHeaderEXT").Copy Sheets(mySheetName).Range("A" & iRowStart)
        
        'Hieronder vult men weer gegevens in via volgend bestandje op tabblad 2, locatie is:
        'ChDir "\\Sidmar.be\dfs\ORGANISATIE\LAD\GROEP\LPK\Planning\Systeem"
        'Workbooks.Open Filename:="file:\\sidmar.be\dfs\Dienst\GROEP\LAD\LPK\Planning\Systeem\Externen.xlsx", ReadOnly:=True
        'Eerst kijkt men naar de datum, dan naar LKXXX en men schrijft de gegevens weg op de juiste plaats.
        'Indien er geen gegevens aanwezig zijn dan melding dat er "geen gegevens aanwezig voor Externen"en code verder laten lopen


        Sheets("Systeem").Range("CHEXTEinde").Value = Sheets(mySheetName).Range("A1000").End(xlUp).row + 2 '70


        iRowEinde = Sheets("Systeem").Range("CHEXTEinde")


        Rows(iRowStart + 1 & ":" & iRowEinde).Rows.Group  '71 & 72
        
        Range("A" & iRowStart + 4).Select


Application.ScreenUpdating = True
End Sub
 
Beste HSV,

Met wat aanpassingen werkt dit met volgende code:

Code:
Sub VulGegevensLPKIn(control As IRibbonControl)

Application.ScreenUpdating = False
mySheetName = ActiveSheet.Name
    With Range("A1000").End(xlUp).Offset(2, 0)
   .Resize(, 2).ClearContents
        str = InputBox("Loopkraan ingeven", "Loopkraan:")
         If Not str = "" Then
          .value = str
         Else
           MsgBox "je bent gestopt"
           Exit Sub
         End If

       i = Application.Match(str, Blad10.Columns(3), 0)
       Sheets("Systeem").Range("LK_Row_nummer") = i
        
       If Not IsError(i) Then
          .Offset(, 1) = Blad10.Cells(i, 4).value
         Else
         MsgBox "De ingevulde loopkraan """ & str & """ is niet terug gevonden."
          .ClearContents
          Exit Sub
        End If
        .Font.Bold = True
        .Font.Size = 14
        .Font.Underline = True
        .EntireRow.AutoFit
  End With
        
        Sheets("Systeem").Range("IBNStart").value = Sheets(mySheetName).Range("A1000").End(xlUp).row + 2 '45
        Sheets("Systeem").Range("IBNEinde").value = Sheets("Systeem").Range("IBNStart") + 13 '58

        iRowStart = Sheets("Systeem").Range("IBNStart")
        iRowEinde = Sheets("Systeem").Range("IBNEinde")

        Sheets("Systeem").Select
        Range("IBN").Select
        Selection.Copy
        Sheets(mySheetName).Select
        Range("A" & iRowStart).Select
        ActiveSheet.Paste

        Rows(iRowStart + 1 & ":" & iRowEinde).Select
        Selection.Rows.Group

        Sheets("Systeem").Range("CHStart").value = Sheets("Systeem").Range("IBNEinde") + 2 '60

        iRowStart = Sheets("Systeem").Range("CHStart")

        Sheets("Systeem").Select
        Range("ColumnHeader").Select
        Selection.Copy
        Sheets(mySheetName).Select
        Range("A" & iRowStart).Select
        ActiveSheet.Paste
        
        invoeren_gegevens_LPK
        
        vervolg
        
        End Sub
Sub invoeren_gegevens_LPK()
Dim arr, arr2, sn, i As Long, ii As Long, j As Long, x As Long, n As Long, c As Range, c00, c01, c02, twb As Worksheet
Dim lDatum As Date
Dim str As String
Application.ScreenUpdating = False
str = Sheets("Systeem").Range("LK_Row_nummer")
Workbooks.Open ThisWorkbook.path & "\Output Danny.xlsx"
 'With GetObject(ThisWorkbook.path & "\Output Danny.xlsx")
 With ActiveWorkbook
  Set twb = ThisWorkbook.ActiveSheet
  arr = Split(twb.Name, "_")
   With Workbooks("Output Danny.xlsx").Sheets("Rawdata")
    With .Cells(1).CurrentRegion
     For x = 0 To 1
     If .Parent.AutoFilterMode Then .Parent.AutoFilterMode = False
     
       lDatum = DateValue(DateSerial(Split(twb.[c1], "/")(2), Split(twb.[c1], "/")(1), Split(twb.[c1], "/")(0)))
       .AutoFilter Field:=1, Criteria1:=">=" & lDatum, Operator:=xlAnd, Criteria2:="<" & lDatum + 1
'        .AutoFilter 1, CDate(Format(ThisWorkbook.Sheets(i).Cells(1, 3).value, "dd/mm/yyyy"))'deze code werkt op het werk
'        .AutoFilter 1, CDate(Format(twb.Cells(1, 3).value, "dd/mm/yyyy"))'deze code werkt op het werk
         .AutoFilter 5, arr(0), 2, arr(1)
         .AutoFilter 6, Blad10.Cells(str, 4) & "*"
                sn = .Cells(1).CurrentRegion
                     ReDim arr2(1 To UBound(sn), 1 To UBound(sn, 2))
                       For ii = 2 To UBound(sn)
                        If Not .Rows(ii).Hidden Then
                           n = n + 1
                         For j = 1 To UBound(sn, 2)
                          arr2(n, 1) = sn(ii, 3)
                          arr2(n, 2) = sn(ii, 9)
                          arr2(n, 3) = sn(ii, 10)
                          arr2(n, 8) = sn(ii, 5)
                          arr2(n, 9) = sn(ii, 13)
                          c00 = Application.index(sn, 1, 0)
                          c01 = Replace(Format(twb.Cells(1, 3), "dd-mm-yyyy"), "-", ".")
                          c02 = Application.Match(c01, c00, 0)
                          If Not IsError(c02) Then arr2(n, 10) = sn(ii, c02)
                          arr2(n, 11) = sn(ii, 2)
                          arr2(n, 13) = sn(ii, 8)
                          arr2(n, 15) = IIf(arr2(n, 8) = "RE-1", ThisWorkbook.Sheets("systeem").Cells(1, 1).value, ThisWorkbook.Sheets("systeem").Cells(2, 1).value)
                        Next j
                        End If
                       Next ii
                'twb.Range("A" & iRowStart + 1).Resize(n, 15) = arr2
                twb.Range("A1000").End(xlUp).Offset(1).Resize(n, 15) = arr2
                n = 0
                Erase arr2
       Next x
    End With
   End With
.Close 0
End With
End Sub

        Sub vervolg()

        Sheets("Systeem").Range("CHEinde").value = Sheets(mySheetName).Range("A1000").End(xlUp).row '62

        iRowEinde = Sheets("Systeem").Range("CHEinde") + 2

        Rows(iRowStart + 1 & ":" & iRowEinde).Select '61 & 62
        Selection.Rows.Group

        Sheets("Systeem").Range("CHBTRStart").value = Sheets("Systeem").Range("CHEinde") + 2 '66


        iRowStart = Sheets("Systeem").Range("CHBTRStart")

        Sheets("Systeem").Select
        Range("ColumnHeaderBTR").Select
        Selection.Copy
        Sheets(mySheetName).Select
        Range("A" & iRowStart).Select
        ActiveSheet.Paste
        
        'Hieronder vult men weer gegevens in via volgend bestandje op tabblad 2, locatie is:
        'ChDir "\\Sidmar.be\dfs\Dienst\GROEP\LAD\LPK\Betacel\Projecten"
        'Workbooks.Open Filename:="file:\\Sidmar.be\dfs\Dienst\GROEP\LAD\LPK\Betacel\Projecten\planningEXT.xlsx", ReadOnly:=True
        'Eerst kijkt men naar de datum, dan naar LKXXX en men schrijft de gegevens weg op de juiste plaats.
        'Indien er geen gegevens aanwezig zijn dan melding: "Geen gegevens aanwezig voor Betrouwbaarheidscel" en code verder laten lopen

        Sheets("Systeem").Range("CHBTREinde").value = Sheets(mySheetName).Range("A1000").End(xlUp).row + 2 '68

        iRowEinde = Sheets("Systeem").Range("CHBTREinde")

        Rows(iRowStart + 1 & ":" & iRowEinde).Select '67 & 68
        Selection.Rows.Group

        Sheets("Systeem").Range("CHBGEStart").value = Sheets("Systeem").Range("CHBTREinde") + 2 '70

        iRowStart = Sheets("Systeem").Range("CHBGEStart")

        Sheets("Systeem").Select
        Range("ColumnHeaderBGE").Select
        Selection.Copy
        Sheets(mySheetName).Select
        Range("A" & iRowStart).Select
        ActiveSheet.Paste
        
        'Hieronder vult men weer gegevens in via volgend bestandje op tabblad 2, locatie is:
        'ChDir "\\Sidmar.be\dfs\ORGANISATIE\LAD\GROEP\LPK\Planning\Systeem"
        'Workbooks.Open Filename:="file:\\sidmar.be\dfs\Dienst\GROEP\LAD\LPK\Planning\Systeem\Externen.xlsx", ReadOnly:=True
        'Eerst kijkt men naar de datum, dan naar LKXXX en men schrijft de gegevens weg op de juiste plaats.
        'Indien er geen gegevens aanwezig zijn dan melding dat er "geen gegevens aanwezig voor Externen"en code verder laten lopen

        Sheets("Systeem").Range("CHBGEEinde").value = Sheets(mySheetName).Range("A1000").End(xlUp).row + 2 '70

        iRowEinde = Sheets("Systeem").Range("CHBGEEinde")

        Rows(iRowStart + 1 & ":" & iRowEinde).Select '71 & 72
        Selection.Rows.Group
        
        Range("A" & iRowStart + 4).Select

Application.ScreenUpdating = True
End Sub

Wat ik dan zie is dat de gegevens 2x onder elkaar geschreven worden en graag had ik item onder item willen zien uitvoeren, zie afbeelding onderaan.
Het driehoekje moet groen gekleurd worden en het rondje blauw.
Ook het centreren, omranden en samengevoegde cellen zoals in afbeelding onderaan.

Gewenst vorbeeld.jpg

Grts Danny147
 
Waar staat....
Code:
str = Sheets("Systeem").Range("LK_Row_nummer")
...voor?

Ps. De kleuren kun je in voorwaardelijke opmaak doen.
 
Beste HSV,

Zoals je gezien hebt heb ik de code opgesplitst in 3 delen

Code:
Sub VulGegevensLPKIn(control As IRibbonControl)

Code:
Sub invoeren_gegevens_LPK()

Code:
Sub vervolg()

Bij het laten lopen van de code "invoeren_gegevens_LPK gaf hij foutmelding op volgende regel:

Code:
.AutoFilter 6, Blad10.Cells(i, 4).Value & "*"

Hier vond hij de i niet ik heb dan maar de rijnummer geplaatst in tabblad systeem onder de naam

Code:
str = Sheets("Systeem").Range("LK_Row_nummer")

Op deze manier vond hij deze dan terug.

Zal het bestandje vanavond nog eens doorsturen.

Grts Danny147
 
Je bent goed in het door elkaar halen van codes Danny.
Maar als ik opper dat je select en selection kan verwijderen dan kan ik dat als nog zelf doen.

De code loopt tot de gedefinieerde naam
Code:
.Range("CHBGEStart")
... die er nog niet in staat.
Maar vanwaar al die namen?
Het is voor mij niet meer te onderhouden met al je heen en weer geswitcht.
Code:
Dim str As String
Dim iRowStart As Integer
Dim iRowEinde As Integer
Dim mySheetName As String
Dim i As Variant
Sub h() 'VulGegevensLPKIn(control As IRibbonControl)


Application.ScreenUpdating = False
mySheetName = ActiveSheet.Name
    With Range("A1000").End(xlUp).Offset(2, 0)
   .Resize(, 2).ClearContents
        str = InputBox("Loopkraan ingeven", "Loopkraan:")
         If Not str = "" Then
          .Value = str
         Else
           MsgBox "je bent gestopt"
           Exit Sub
         End If


       i = Application.Match(str, Blad10.Columns(3), 0)
       'Sheets("Systeem").Range("LK_Row_nummer") = i
        
       If Not IsError(i) Then
          .Offset(, 1) = Blad10.Cells(i, 4).Value
         Else
         MsgBox "De ingevulde loopkraan """ & str & """ is niet terug gevonden."
          .ClearContents
          Exit Sub
        End If
        .Font.Bold = True
        .Font.Size = 14
        .Font.Underline = True
        .EntireRow.AutoFit
  End With
        With ThisWorkbook.Sheets("Systeem")
        
        .Range("IBNStart").Value = Sheets(mySheetName).Range("A1000").End(xlUp).row + 2 '45
        .Range("IBNEinde").Value = .Range("IBNStart") + 13 '58


        iRowStart = .Range("IBNStart")
        iRowEinde = .Range("IBNEinde")


        .Range("IBN").Copy Sheets(mySheetName).Range("A" & iRowStart)
        .Rows(iRowStart + 1 & ":" & iRowEinde).Rows.Group
        .Range("CHStart").Value = .Range("IBNEinde") + 2 '60


        iRowStart = .Range("CHStart")


        .Range("ColumnHeader").Copy Sheets(mySheetName).Range("A" & iRowStart)
    End With
        invoeren_gegevens_LPK
        
        vervolg
        
        End Sub
Sub invoeren_gegevens_LPK()
Dim arr, arr2, sn, ii As Long, j As Long, x As Long, n As Long, c As Range, c00, c01, c02, twb As Worksheet
Dim lDatum As Date
Dim str As String
Application.ScreenUpdating = False
'str = Sheets("Systeem").Range("LK_Row_nummer")
Workbooks.Open ThisWorkbook.path & "\Output Danny.xlsx"
 'With GetObject(ThisWorkbook.path & "\Output Danny.xlsx")
 With ActiveWorkbook
  Set twb = ThisWorkbook.ActiveSheet
  arr = Split(twb.Name, "_")
   With Workbooks("Output Danny.xlsx").Sheets("Rawdata")
    With .Cells(1).CurrentRegion
     For x = 0 To 1
     If .Parent.AutoFilterMode Then .Parent.AutoFilterMode = False
'
'       lDatum = DateValue(DateSerial(Split(twb.[c1], "/")(2), Split(twb.[c1], "/")(1), Split(twb.[c1], "/")(0)))
'       .AutoFilter Field:=1, Criteria1:=">=" & lDatum, Operator:=xlAnd, Criteria2:="<" & lDatum + 1
'        .AutoFilter 1, CDate(Format(ThisWorkbook.Sheets(i).Cells(1, 3).Value, "dd/mm/yyyy")) 'deze code werkt op het werk
        .AutoFilter 1, CDate(Format(twb.Cells(1, 3).Value, "dd/mm/yyyy")) 'deze code werkt op het werk
         .AutoFilter 5, arr(0), 2, arr(1)
         .AutoFilter 6, Blad10.Cells(i, 4) & "*"
                sn = .Cells(1).CurrentRegion
                     ReDim arr2(1 To UBound(sn), 1 To UBound(sn, 2))
                       For ii = 2 To UBound(sn)
                        If Not .Rows(ii).Hidden Then
                           n = n + 1
                         For j = 1 To UBound(sn, 2)
                          arr2(n, 1) = sn(ii, 3)
                          arr2(n, 2) = sn(ii, 9)
                          arr2(n, 3) = sn(ii, 10)
                          arr2(n, 8) = sn(ii, 5)
                          arr2(n, 9) = sn(ii, 13)
                          c00 = Application.Index(sn, 1, 0)
                          c01 = Replace(Format(twb.Cells(1, 3), "dd-mm-yyyy"), "-", ".")
                          c02 = Application.Match(c01, c00, 0)
                          If Not IsError(c02) Then arr2(n, 10) = sn(ii, c02)
                          arr2(n, 11) = sn(ii, 2)
                          arr2(n, 13) = sn(ii, 8)
                          arr2(n, 15) = IIf(arr2(n, 8) = "RE-1", ThisWorkbook.Sheets("systeem").Cells(1, 1).Value, ThisWorkbook.Sheets("systeem").Cells(2, 1).Value)
                        Next j
                        End If
                       Next ii
                'twb.Range("A" & iRowStart + 1).Resize(n, 15) = arr2
                twb.Range("A1000").End(xlUp).Offset(1).Resize(n, 15) = arr2
                n = 0
                Erase arr2
       Next x
    End With
   End With
.Close 0
End With
End Sub


Sub vervolg()
    With ThisWorkbook.Sheets("Systeem")
    .Range("CHEinde").Value = Sheets(mySheetName).Range("A1000").End(xlUp).row '62


        iRowEinde = .Range("CHEinde") + 2


        Rows(iRowStart + 1 & ":" & iRowEinde).Rows.Group '61 & 62
       .Range("CHBTRStart").Value = .Range("CHEinde") + 2 '66




        iRowStart = .Range("CHBTRStart")


        .Range("ColumnHeaderBTR").Copy Sheets(mySheetName).Range("A" & iRowStart)
        
        'Hieronder vult men weer gegevens in via volgend bestandje op tabblad 2, locatie is:
        'ChDir "\\Sidmar.be\dfs\Dienst\GROEP\LAD\LPK\Betacel\Projecten"
        'Workbooks.Open Filename:="file:\\Sidmar.be\dfs\Dienst\GROEP\LAD\LPK\Betacel\Projecten\planningEXT.xlsx", ReadOnly:=True
        'Eerst kijkt men naar de datum, dan naar LKXXX en men schrijft de gegevens weg op de juiste plaats.
        'Indien er geen gegevens aanwezig zijn dan melding: "Geen gegevens aanwezig voor Betrouwbaarheidscel" en code verder laten lopen


        .Range("CHBTREinde").Value = Sheets(mySheetName).Range("A1000").End(xlUp).row + 2 '68


        iRowEinde = .Range("CHBTREinde").Value


        .Rows(iRowStart + 1 & ":" & iRowEinde).Rows.Group '67 & 68
   [COLOR=#ff0000] .Range("CHBGEStart")[/COLOR] = .Range("CHBTREinde").Value + 2  '70


        iRowStart = .Range("CHBGEStart")


        .Range("ColumnHeaderBGE").Copy Sheets(mySheetName).Range("A" & iRowStart)
        
        'Hieronder vult men weer gegevens in via volgend bestandje op tabblad 2, locatie is:
        'ChDir "\\Sidmar.be\dfs\ORGANISATIE\LAD\GROEP\LPK\Planning\Systeem"
        'Workbooks.Open Filename:="file:\\sidmar.be\dfs\Dienst\GROEP\LAD\LPK\Planning\Systeem\Externen.xlsx", ReadOnly:=True
        'Eerst kijkt men naar de datum, dan naar LKXXX en men schrijft de gegevens weg op de juiste plaats.
        'Indien er geen gegevens aanwezig zijn dan melding dat er "geen gegevens aanwezig voor Externen"en code verder laten lopen


        .Range("CHBGEEinde").Value = Sheets(mySheetName).Range("A1000").End(xlUp).row + 2 '70


        iRowEinde = .Range("CHBGEEinde")


        Rows(iRowStart + 1 & ":" & iRowEinde).Rows.Group '71 & 72
        
        Range("A" & iRowStart + 4).Select
  End With
Application.ScreenUpdating = True
End Sub
 
Beste HSV,

Ik dacht dat ik gisteren heb geantwoord en zie vandaag dat er niks te zien is ???

Ik heb geprobeerd jou code zonder select in mijn bestandje te importeren.
Na een paar wijzigingen stuit ik op het volgende:
In onderstaand gedeelte verwijs je naar tabblad "Systeem", daar waar hij de groeperingen uitvoert i.p.v. op tabblad 1.

Code:
        With ThisWorkbook.Sheets("Systeem")
        
        .Range("IBNStart").Value = Sheets(mySheetName).Range("A1000").End(xlUp).row + 2
        .Range("IBNEinde").Value = .Range("IBNStart") + 13

        iRowStart = .Range("IBNStart")
        iRowEinde = .Range("IBNEinde")

        .Range("IBN").Copy Sheets(mySheetName).Range("A" & iRowStart)
        .Rows(iRowStart + 1 & ":" & iRowEinde).Rows.Group
        .Range("CHStart").Value = .Range("IBNEinde") + 2

        iRowStart = .Range("CHStart")

        .Range("ColumnHeader").Copy Sheets(mySheetName).Range("A" & iRowStart)
    End With

Hetzelfde voor:

Code:
    With ThisWorkbook.Sheets("Systeem")
    .Range("CHEinde").Value = Sheets(mySheetName).Range("A1000").End(xlUp).row 

        iRowEinde = .Range("CHEinde") + 2

        Rows(iRowStart + 1 & ":" & iRowEinde).Rows.Group 
       .Range("CHBTRStart").Value = .Range("CHEinde") + 2

        iRowStart = .Range("CHBTRStart")

        .Range("ColumnHeaderBTR").Copy Sheets(mySheetName).Range("A" & iRowStart)

Kan je hier nog eens na kijken

Grts Danny147
 
Danny,

Alles met een punt voor range verwijst naar 'with' Thisworkbook.sheets("systeem").
Dus
Code:
[COLOR=#3E3E3E]iRowStart =[/COLOR][SIZE=5][COLOR=#ff0000].[/COLOR][/SIZE][COLOR=#3E3E3E]Range("CHStart")[/COLOR]
met dit stukje code weet je dat 'iRowstart' de waarde krijgt van "de range van thisworkbook blad systeem".
 
Beste HSV,

Zo lukt het bij mij, zie ondertsaande:
Code:
        With ThisWorkbook.Sheets("Systeem")

        .Range("IBNStart").Value = Sheets(mySheetName).Range("A1000").End(xlUp).row + 2
        .Range("IBNEinde").Value = .Range("IBNStart") + 13

        iRowStart = .Range("IBNStart")
        iRowEinde = .Range("IBNEinde")

        .Range("IBN").Copy Sheets(mySheetName).Range("A" & iRowStart)
        
        With ThisWorkbook.Sheets(mySheetName)
        
        .Rows(iRowStart + 1 & ":" & iRowEinde).Rows.Group
        
        With ThisWorkbook.Sheets("Systeem")

        .Range("CHStart").Value = .Range("IBNEinde") + 2
        iRowStart = .Range("CHStart")
        
        .Range("ColumnHeader").Copy Sheets(mySheetName).Range("A" & iRowStart)

         End With
           End With
             End With

Anders blijft hij steed op tabblad Systeem staan.

Grts Danny147
 
Hoi Danny,

Dus nu werkt alles naar wens?
De vraag heb ik nog niet opgelost, kon het niet verder werkend krijgen daar je gedefinieerde namen niet aangemaakt waren.

Plaats het bestand bij je volgende post met de code hoever je bent als het nog niet is opgelost.
En schrijf er bij waar het verkeerd gaat (Blad, cellen, etc.).
 
Beste HSV,

In bijgevoegde link vind je de 2 bestandjes:

http://www.freewebs.com/scheppie/bestanden/Planning%20Danny.xlsx --> Sla dit op en verander dit in xlsm

http://www.freewebs.com/scheppie/bestanden/Output%20Danny.xlsx --> sla dit op het zelfde pad als bovenstaande.

Gelieve deze 2 in combinatie te gebruiken.

In code heb ik ook al een opmaak gemaakt met veel selects in, graag aanpassen :eek:
In het bestandje is te zien wat er opgehaald is van output met daaronder het resultaat hoe het moet zijn.

Om het te testen verwijder de rijen 25 tem 147
Start daarna met knop "Werkplaats orders", daarna "Kraan orders" en typ LK100 en tenslotte "Storingen e.a. werken". (bovenaan bij start)

Grts Danny147
 
Het eerste bestand werkt niet (beschadigd).
Sla het op als .xlsb en probeer het eens rechtstreeks te plaatsen.
 
Beste HSV

Geprobeerd van het bestandje op te slaan op mijn bureaublad en geopend met xlsm en het werkt :D :D :D

Zie bijlage in xlsb

Grts Danny147
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan