J'ai ceci:gamme décalage
Public Function Gegevens_Ophalen(ByVal ParameterRow As Integer, ByVal KolomLetterSOM As String, ByVal sheetname As String, ByVal Rij As Integer) As Single
Dim WB1 As Workbook
Dim WB2 As Workbook
Dim WS As Worksheet
Dim Filter As Object
Set Filter = CreateObject("scripting.dictionary")
Set Eenheden = CreateObject("scripting.dictionary")
Set Processen = CreateObject("scripting.dictionary")
Set Looptijd = CreateObject("scripting.dictionary")
Set WB1 = Workbooks("KOW.xlsm")
Set WB2 = ActiveWorkbook
Set WS = WB2.Sheets("Page1_1")
Debug.Print ("Start: " & Now())
Dim Eenheid As String
Dim Medewerker_Kolom As String
Dim RN As Single: RN = 10
Dim PR As Single: PR = 0
Dim som As Single: som = 0
Do Until ThisWorkbook.Sheets(sheetname).Range("B" & ParameterRow + PR).Value = ""
If (ThisWorkbook.Sheets(sheetname).Range("B" & ParameterRow + PR).Value = "Kolom H (eenheid) =") Then
Eenheden(LCase(ThisWorkbook.Sheets(sheetname).Range("C" & ParameterRow + PR).Value)) = "filteren"
Debug.Print (LCase(ThisWorkbook.Sheets(sheetname).Range("C" & ParameterRow + PR).Value))
ElseIf (ThisWorkbook.Sheets(sheetname).Range("B" & ParameterRow + PR).Value = "Kolom K (naam Medew) =") Then
Filter(LCase(ThisWorkbook.Sheets(sheetname).Range("C" & ParameterRow + PR).Value)) = "filteren"
Debug.Print (LCase(ThisWorkbook.Sheets(sheetname).Range("C" & ParameterRow + PR).Value))
ElseIf (ThisWorkbook.Sheets(sheetname).Range("B" & ParameterRow + PR).Value = "Kolom D (proces) = ") Then
Processen(LCase(ThisWorkbook.Sheets(sheetname).Range("C" & ParameterRow + PR).Value)) = "filteren"
Debug.Print (LCase(ThisWorkbook.Sheets(sheetname).Range("C" & ParameterRow + PR).Value))
ElseIf (ThisWorkbook.Sheets(sheetname).Range("B" & ParameterRow + PR).Value = "Kolom Y (looptijdcat) =") Then
Looptijd(LCase(ThisWorkbook.Sheets(sheetname).Range("C" & ParameterRow + PR).Value)) = "filteren"
Debug.Print (LCase(ThisWorkbook.Sheets(sheetname).Range("C" & ParameterRow + PR).Value))
Else
'
End If
PR = PR + 1
Loop
Eenheid = ThisWorkbook.Sheets(sheetname).Range("C" & ParameterRow).Value
Do Until WS.Range("A" & RN).Value = ""
If sheetname <> "Kleiner10" Or sheetname <> "10-30" Or sheetname <> "Groter30" Or sheetname <> "Doelen" Then
If (Eenheden(LCase(WS.Range("H" & RN).Value)) = "filteren") Then
If (Filter(LCase(WS.Range("K" & RN).Value)) = "filteren" Or Processen(LCase(WS.Range("D" & RN).Value)) = "filteren") Then
' niks doen
Else
som = som + Sheets("Page1_1").Range(KolomLetterSOM & RN).Value
End If
End If
ElseIf sheetname = "Doelen" Then
If (Eenheden(LCase(WS.Range("H" & RN).Value)) = "filteren") And (Processen(LCase(WS.Range("Y" & RN).Value)) = "filteren") Then
som = som + Sheets("Page1_1").Range(KolomLetterSOM & RN).Value
End If
ElseIf (Eenheden(LCase(WS.Range("H" & RN).Value)) = "filteren") And (Looptijd(LCase(WS.Range("Y" & RN).Value)) = "filteren") Then 'Doorlooptijden
If (Filter(LCase(WS.Range("K" & RN).Value)) = "filteren" Or Processen(LCase(WS.Range("D" & RN).Value)) = "filteren") Then
' niks doen
Else
som = som + Sheets("Page1_1").Range(KolomLetterSOM & RN).Value
End If
End If
RN = RN + 1
Loop
Debug.Print ("Eind: " & Now())
Bulk_Voorraad = som
Debug.Print som
' range offset
End Function
Ce que je dois maintenant est que le « plage de décalage que je dois placer les valeurs de retour dans Excel dans le courant moins 1. Semaine n ° Si elle est semaine 16 par exemple mes valeurs doivent être placées dans la bonne semaine. Avec le paramètre Rij je donne la valeur du rowoffset pour la bonne semaine. J'ai beaucoup essayé mais rien qui fonctionne.
Voici comment j'appelle la fonction: Appelez Gegevens_Ophalen (2, "W", "ProductieUren", 1).
J'ai cherché partout sur internet mais je n'ai pas vraiment trouvé quelque chose qui se rapproche. J'ai trouvé ce lien mais je ne pouvais pas vraiment l'intégrer dans mon propre code: .
Avez-vous des idées ou des conseils pour m'aider?
Pourriez-vous expliquer brièvement ce que votre code fait déjà. Vous devriez aussi utiliser 'Set ws = ThisWorkbook.Worksheets (sheetname)' et utiliser 'with ws' pour rendre votre code plus lisible. – UGP
Mon code passe déjà par différentes feuilles pour obtenir la valeur qui doit être replacée dans Excel. Avec debug.print, j'ai vérifié et obtenu les bonnes valeurs. Merci pour le conseil pour rendre le code plus lisible. Je vais le changer en mon vrai code. – EfhK