Bonjour à tous,

J'ai modifié précédemment le message mais j'ai fait une fausse manip et je m'en excuse, merci de me l'avoir fait remarqué, je rectifie par ce nouveau message.

J'ai en effet un planning semaine sur lequel, je mets en couleur les cellules C2 à I68 qui correspondent aux heures de débuts et fins de poste de travail par jour de salariés. Le lundi, colonne C, le mardi colonne D... jusqu'à la colonne I pour dimanche.
Les horaires sont affichés en colonne B de 5h00 à 21h00 de B2 à B66
Une macro me calcule déjà avec un bouton le nombre d'heures travail sur le créneau colorié, donc de C2 à I66 et qui s'affiche ds les cellules C67, D67, E67, F67, G67, H67 et I 67.

Voici la macro qui calcule le nombre de champs coloriés de C2 à I68 et qui donne le nombre d'heures de travail en C67, D67, E67, F67, G67, H67 et I 67:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Private Sub CommandButton2_Click()
 
For Each o In [C2:C66]
If o.Interior.ColorIndex <> xlNone Then i = (i + 0.010416667)
Next
[C67] = i
    For Each o In [D2:D66]
    If o.Interior.ColorIndex <> xlNone Then j = (j + 0.010416667)
    Next
    [D67] = j
        For Each o In [E2:E66]
        If o.Interior.ColorIndex <> xlNone Then k = (k + 0.010416667)
        Next
        [E67] = k
            For Each o In [F2:F66]
            If o.Interior.ColorIndex <> xlNone Then l = (l + 0.010416667)
            Next
            [F67] = l
                For Each o In [G2:G66]
                If o.Interior.ColorIndex <> xlNone Then m = (m + 0.010416667)
                Next
                [G67] = m
                    For Each o In [H2:H66]
                    If o.Interior.ColorIndex <> xlNone Then n = (n + 0.010416667)
                    Next
                    [H67] = n
                        For Each o In [I2:I66]
                        If o.Interior.ColorIndex <> xlNone Then p = (p + 0.010416667)
                        Next
                        [I67] = p
 
End Sub
Je souhaiterez maintenant récupérer les heures de début et fin de poste afficher en B2 jusqu'à B66 qui correspondent aux créneaux coloriés donc des cellules C2 à I66 pour les afficher ds les cellules C68, D68, E68, F68, G68, H68 et I 68.

La complexité, enfin pour moi est de compiler, ds la présente boucle, une nouvelle formule qui va venir récupérer des données horaires de la colonne B d'après les cellules coloriées de C2 à I66 pour les afficher en C68, D68, E68, F68, G68, H68 et I 68.

Je peux envoyer un fichier si vous estimez que mes explications ne suffisent pas.

Je suis preneur de tous conseils sur la formule à construire ou encore sur les principes à respecter quand on ajoute une nouvelle fonction ds une boucle, je l'adapterai ensuite au planning.
Je cherche depuis plusieurs jours sur le site et sur internet mais pour le coup mon niveau de compétence ne me permet pas d'y arriver sans conseil...

Je vous remercie par avance pour vos précieux retours

DanyRun