Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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:
Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre

Discussions similaires

Réponses
7
Affichages
855
Réponses
40
Affichages
2 K
Réponses
2
Affichages
344
  • Question Question
Microsoft 365 Macro VBA - Excel
Réponses
12
Affichages
572
  • Question Question
Microsoft 365 sos planning
Réponses
6
Affichages
837
Réponses
8
Affichages
383
Retour