Bonjour,
Je débute en VBA et j'ai un souci sur un code créé. Je suis passé par l'enregistreur de macro et le code doit être trop lourd car interminable et je pense qu'il ya également un bug.
En fait j'ai un fichier de pointage, dans la colonne C j'ai le numéro d'identification du salarié, en D le nom, en E le prénom, en F la date, en G l'heure, en H les minutes.
J'ai 4 pointage par jour et par salarié (arrivée matin - départ matin - arrivée apm- départ apm)
Je souhaite créer une macro qui reconstitue sur 1 ligne l'heure d'arrivée du matin et de l'apm et l'heure de départ du matin et de l'apm par jour et par agent.
Sachant que le nombre de ligne est indéterminée.
J'ai créé ce code :
Sub MaJ()
' MaJ Macro
Application.ScreenUpdating = False
Sheets("Report données").Select
Range("A3").Select
Selection.AutoFill Destination:=Range("A3:A10000")
Range("A3:A100000").Select
Range("J3").Select
Selection.AutoFill Destination:=Range("J3:J100000")
Sheets("Détail pointage").Select
Range("D5").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(CONCATENATE(R2C4,RC[-3],RC[-2]),'Report données'!R5C1:R100000C10,10,FALSE)"
Range("D6").Select
Sheets("Détail pointage").Select
Range("D5").Select
Selection.AutoFill Destination:=Range("D5 100000")
Range("D5 100000").Select
Range("E5").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(CONCATENATE(R2C5,RC[-4],RC[-3]),'Report données'!R5C1:R100000C10,10,FALSE)"
Range("E6").Select
Sheets("Détail pointage").Select
Range("E5").Select
Selection.AutoFill Destination:=Range("E5:E100000")
Range("E5:E100000").Select
Range("F5").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(CONCATENATE(R2C6,RC[-5],RC[-4]),'Report données'!R5C1:R100000C10,10,FALSE)"
Range("F6").Select
Sheets("Détail pointage").Select
Range("F5").Select
Selection.AutoFill Destination:=Range("F5:F100000")
Range("F5:F100000").Select
Range("G5").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(CONCATENATE(R2C7,RC[-6],RC[-5]),'Report données'!R3C1:R100000C10,10,FALSE)"
Range("G5").Select
Selection.AutoFill Destination:=Range("G5:G100000")
Range("G5:G100000").Select
Range("C4").Select
Selection.AutoFill Destination:=Range("C4:C100000")
Range("C4:C100000").Select
Range("I4").Select
Selection.AutoFill Destination:=Range("I4:I100000")
Range("I4:I100000").Select
Range("J4").Select
Selection.AutoFill Destination:=Range("J4:J100000")
Range("J4:J100000").Select
ActiveSheet.Range("$A$4:$V$100000").AutoFilter Field:=10, Criteria1:="#N/A"
Range("J5").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=-3
ActiveSheet.Range("$A$4:$V$100000").AutoFilter Field:=10
Range("K4").Select
Selection.AutoFill Destination:=Range("K4:K100000")
Range("K4:K100000").Select
MsgBox ("Mise à jour, OK !")
End Sub
Mais celui-ci mouline, soit bug soit trop long à exécuter, qqn peut-il m'aider s'il vous plait.
Je débute en VBA et j'ai un souci sur un code créé. Je suis passé par l'enregistreur de macro et le code doit être trop lourd car interminable et je pense qu'il ya également un bug.
En fait j'ai un fichier de pointage, dans la colonne C j'ai le numéro d'identification du salarié, en D le nom, en E le prénom, en F la date, en G l'heure, en H les minutes.
J'ai 4 pointage par jour et par salarié (arrivée matin - départ matin - arrivée apm- départ apm)
Je souhaite créer une macro qui reconstitue sur 1 ligne l'heure d'arrivée du matin et de l'apm et l'heure de départ du matin et de l'apm par jour et par agent.
Sachant que le nombre de ligne est indéterminée.
J'ai créé ce code :
Sub MaJ()
' MaJ Macro
Application.ScreenUpdating = False
Sheets("Report données").Select
Range("A3").Select
Selection.AutoFill Destination:=Range("A3:A10000")
Range("A3:A100000").Select
Range("J3").Select
Selection.AutoFill Destination:=Range("J3:J100000")
Sheets("Détail pointage").Select
Range("D5").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(CONCATENATE(R2C4,RC[-3],RC[-2]),'Report données'!R5C1:R100000C10,10,FALSE)"
Range("D6").Select
Sheets("Détail pointage").Select
Range("D5").Select
Selection.AutoFill Destination:=Range("D5
Range("D5
Range("E5").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(CONCATENATE(R2C5,RC[-4],RC[-3]),'Report données'!R5C1:R100000C10,10,FALSE)"
Range("E6").Select
Sheets("Détail pointage").Select
Range("E5").Select
Selection.AutoFill Destination:=Range("E5:E100000")
Range("E5:E100000").Select
Range("F5").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(CONCATENATE(R2C6,RC[-5],RC[-4]),'Report données'!R5C1:R100000C10,10,FALSE)"
Range("F6").Select
Sheets("Détail pointage").Select
Range("F5").Select
Selection.AutoFill Destination:=Range("F5:F100000")
Range("F5:F100000").Select
Range("G5").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(CONCATENATE(R2C7,RC[-6],RC[-5]),'Report données'!R3C1:R100000C10,10,FALSE)"
Range("G5").Select
Selection.AutoFill Destination:=Range("G5:G100000")
Range("G5:G100000").Select
Range("C4").Select
Selection.AutoFill Destination:=Range("C4:C100000")
Range("C4:C100000").Select
Range("I4").Select
Selection.AutoFill Destination:=Range("I4:I100000")
Range("I4:I100000").Select
Range("J4").Select
Selection.AutoFill Destination:=Range("J4:J100000")
Range("J4:J100000").Select
ActiveSheet.Range("$A$4:$V$100000").AutoFilter Field:=10, Criteria1:="#N/A"
Range("J5").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=-3
ActiveSheet.Range("$A$4:$V$100000").AutoFilter Field:=10
Range("K4").Select
Selection.AutoFill Destination:=Range("K4:K100000")
Range("K4:K100000").Select
MsgBox ("Mise à jour, OK !")
End Sub
Mais celui-ci mouline, soit bug soit trop long à exécuter, qqn peut-il m'aider s'il vous plait.