Formule tranche d'horaire

Bonjour,

Je rencontre un problème sur Excel, Je vais essayer de vous l'expliquer clairement.

J'ai plusieurs ligne d'horaire comme cella :

2:8:00-10:00,2:11:30-14:00,2:17:30-21:30,3:8:00-10:00,3:11:30-14:00,3:17:30-21:30,4:8:00-10:00,4:11:30-14:00,4:17:30-21:30,5:8:00-10:00,5:11:30-14:00,5:17:30-21:30,6:8:00-10:00,6:11:30-14:00,6:17:30-21:30,7:8:00-10:00,7:11:30-14:00,7:17:30-21:30,1:8:00-10:00,1:11:30-14:00,1:17:30-21:30

Le 2: représente le Lundi, le 3: représente le mardi ... Le dimanche est représenté par 7:

J'aurai aimé savoir si il y a une formule ou un moyen rapide de réunir les tranches d'horaires.

Ex : 2: 8:00-10:00,11:30-14:00,17:30-21:30 => Sur une cellule

3: 8:00-10:00,11:30-14:00,17:30-21:30 => Sur une cellule

Merci pour votre aide

Vous trouverez ci joint le fichier complet.

15excel.xlsx (14.78 Ko)

Bonsoir,

si lundi vaut 2 alors dimanche vaut 1 ou bien il vous manque une journée...

@ bientôt

LouReeD

Re bonsoir !

Ci dessous un code VBA :

Sub Extract()
    Dim ligne, tablo, Jour, lig, i
    lig = 2
    For ligne = 2 To 288
        tablo = Split(Feuil1.Cells(ligne, 1), ",")
        With Feuil2
            For i = 0 To UBound(tablo)
                Jour = Left(tablo(i), 1)
                Select Case Jour
                    Case 1
                        .Cells(lig, 1).Value = .Cells(lig, 1).Value & Mid(tablo(i), 3, 99) & ","
                    Case 2
                        .Cells(lig, 2).Value = .Cells(lig, 2).Value & Mid(tablo(i), 3, 99) & ","
                    Case 3
                        .Cells(lig, 3).Value = .Cells(lig, 3).Value & Mid(tablo(i), 3, 99) & ","
                    Case 4
                        .Cells(lig, 4).Value = .Cells(lig, 4).Value & Mid(tablo(i), 3, 99) & ","
                    Case 5
                        .Cells(lig, 5).Value = .Cells(lig, 5).Value & Mid(tablo(i), 3, 99) & ","
                    Case 6
                        .Cells(lig, 6).Value = .Cells(lig, 6).Value & Mid(tablo(i), 3, 99) & ","
                    Case 7
                        .Cells(lig, 7).Value = .Cells(lig, 7).Value & Mid(tablo(i), 3, 99) & ","
                End Select
            Next i
            ' suppression de la dernière virgule
            For i = 1 To 7
                If .Cells(lig, i).Value <> "" Then
                    .Cells(lig, i).Value = Left(.Cells(lig, i).Value, Len(.Cells(lig, i).Value) - 1)
                    .Cells(lig, i).Value = i & ":" & .Cells(lig, i).Value
                End If
            Next i
        End With
        lig = lig + 1
    Next ligne
End Sub

Le principe :

On commence par créer une Feuil2 pour afficher les résultats sans toucher aux données sources.

On prend les données de la feuille 1 ligne par ligne en récupérant les valeurs des cellules en colonne A.

Cette valeur est "splitée" par le caractère "," c'est lui qui sépare les différents horaires.

On boucle sur ce tableau et on regarde sur chaque index la valeur du premier chiffre (de 1 à 7)

Ensuite avec Select on écrit sur la feuille 2 ce que l'on trouve au bon endroit, à savoir :

si ça commence par un 1 alors en colonne 1 etc etc.

Ensuite on supprime la dernière virgule de construction de ces valeurs et on ajoute le numéro adéquate en tête de valeur.

On passe à la ligne 2 etc...

@ bientôt

LouReeD

avec power query et un TCD (mais j'ai l'impression qu'il y a despetites imperfections dans les données d'entrée, qui menent à des choses bizarres au résultat)

Je n'ai pas remplacé le n° de jour par le nom du jour car je n'ai pas compris (si lundi = 2 dimanche ne peut pas etre =7); mais ca n' pas d'importance pour la représentation en TCD

5excel.xlsx (82.95 Ko)

Bonjour Partoo,

Voici ton fichier modifié avec formules dans la feuille Copie.

J'ai fait les premiers exemples pour Lundi, Mardi et la 1ière ligne de Mercredi.

Faire de même pour toutes les autres colonnes en respectant le principe (juste à modifier les valeurs cherchées).

Bons tests, bonne continuation.

18excelmodif.xlsx (26.72 Ko)
Rechercher des sujets similaires à "formule tranche horaire"