XL 2010 planning

edferlic

XLDnaute Nouveau
Bonjour à tous,
j'ai besoin une nouvelle fois de votre aide.
J'ai besoin de faire un planning sur Excel suite à une extraction d'une application.
J'ai plusieurs problématiques,
la première est que pour une plage horaire d'une seule personne j'ai deux lignes (première ligne avant la pause et la seconde après la pause).
La seconde est que sur l'extraction, sur la colonne horaire je n'ai pas que des heures mais aussi des caractères.
J'ai conscience que ce n'est pas forcément claire, c'est pour cela que j'ai mis sur le fichier une partie de l'extraction brute et une partie ce que j'aimerai avoir pour travailler dessus.
Merci pour votre aide et vos retours.
 

Pièces jointes

  • test forum excel.xlsx
    10.2 KB · Affichages: 10

Franc58

XLDnaute Occasionnel
Salut, voici une suggestion:

VB:
Sub Horaires()

    Dim ws As Worksheet
    Dim rng As Range
    Dim i As Long, lastRow As Long, firstRow As Long
    Dim startTime As String, endTime As String, breakTime As String
    Dim employeeName As String
   
    Set ws = ThisWorkbook.Sheets("Feuil1")
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' Dernière ligne en colonne A
    firstRow = lastRow + 3
   
   Application.ScreenUpdating = False

    'Entêtes horaires
    ws.Cells(firstRow, "C").Value = "Horaires Début"
    ws.Cells(firstRow, "D").Value = "Horaires Fin"
    ws.Cells(firstRow, "E").Value = "Pauses"

    ' Commence à la ligne 8 et saute une ligne à chaque fois
    ' pour passer à l'employé suivant
    For i = 8 To lastRow Step 2
        employeeName = ws.Cells(i, "A").Value ' Nom de l'employé
        startTime = Left(ws.Cells(i, "C").Value, 5) ' Heure de début
        breakTime = Mid(ws.Cells(i, "C").Value, 7, 5) ' Heure de pause
        endTime = Mid(ws.Cells(i + 1, "C").Value, 7, 5) ' Heure de fin
       
        ' Écrit les données horaires
        firstRow = firstRow + 1
        ws.Cells(firstRow, "A").Value = employeeName
        ws.Cells(firstRow, "C").Value = startTime
        ws.Cells(firstRow, "D").Value = endTime
        ws.Cells(firstRow, "E").Value = breakTime
    Next i

   Application.ScreenUpdating = True
   
End Sub
 
Dernière édition:

Statistiques des forums

Discussions
315 092
Messages
2 116 118
Membres
112 665
dernier inscrit
JPHD