VBA - Macro sequences Dates/heures et mise en forme conditionelle

Bonjour,

Dans le fichier ci joint , il y a 5 sequences Date/Heures.

La premiere colonne de chaque sequence indique le jour de la semaine et la deuxieme indique l'heure.

Je souhaiterais savoir comment faire pour lorsqu'on clique sur une colonne d'heure (qui correspond donc a une date/heure) , on puisse mettre en couleur sur les colonnes suivantes la date/heure qui suit directement.

Par exemple si je clique sur la sequence A sur la combinaison Lundi 10h02 , il faudrait mettre en surbrillance sur la prochaine sequence Lundi 10h12 car il s'agit de la premiere horaire suivante disponible et ainsi de suite.

J'ai colore en jaune une sequence pour illustrer cet exemple sur la feuille attachee.

Desole si je n'ai pas ete assez clair.

Cordialement,

12book4.xlsx (26.29 Ko)

Bonjour,

Essayez ceci:

Cdlt

Edit; j'ai oublié de préciser que la macro fonctionne en sélectionnant une cellule de la colonne B ou C

Bonjour,

Soient 5 zones nommées ZoneA à zoneE correspondant chacune à vos colonnes journées.

capture1

En passant votre fichier en .xlsm, ajouter cet événement dans le module de l'onglet WE time :

Option Explicit

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

        If Target.Count > 1 Then Exit Sub

        If Not Intersect(Target, Range("ZoneA, ZoneB, ZoneC,ZoneD,ZoneE")) Is Nothing Then
           With Range(Target, Target.Offset(0, 1))
                .Interior.ColorIndex = xlNone
                .Offset(1, 0).Interior.Color = RGB(255, 255, 0)
           End With
        End If

        Cancel = True

End Sub

Faites un clic droit dans les colonnes de A à E, là où vous avez une cellule en jaune.

Bonjour Arturo83,

Merci pour votre reponse , cela correspond parfaitement a ce que je recherche pour la seconde sequence, il y a juste quelques points que je souhaiterais ajuster:

. Je souhaite appliquer la logique d'une sequence a l'autre a non uniquement par rapport a la sequence A.

Par exemple , l'horaire ligne 14 pour la sequence A = 15H02 , sequence B = 16H12 , sequence C = 15H42 . La logique marche en comparant a la sequence A car c'est le prochain horaire par rapport a la sequene A qui s'affiche, mais chaque sequence dois venir apres l'autre donc sequence C=15H42 ne peux pas se passer avant Sequence B=16h12. Dans ce cas il faudrait afficher le prochain horaire par rapport a la sequence B , donc sequence C=16H42 et sequence D=17H27, etc..

. Les ligne 8 et 9 ne mettent pas en surbrillance.

.Est il possible de produire le meme affichage en cas de selection multiple de ligne sur les colonnes B/C ?

Merci beaucoup,

Bonjour Eric Kergresse,

Merci pour votre reponse , auriez vous la possibilite de partager le fichier avec la solution car je ne parvient pas a la reproduire de mon cote?

Merci beaucoup,

Votre explication pour Arturo va être du même tonneau pour moi, car vous n'avez pas expliqué les règles de gestion dès le départ.

Merci Eric Kergresse, en effet desole je n'ai pas ete assez clair au depart.

Quand j ouvre le fichier , cependant il ne se passe rien quand je clique sur les horaires de la colonne B/C?

Il s'agit d'un clic droit sur la souris...

Cela ne marche pas meme en clic droit ? Dois je lancer la macro?

Sur une des colonnes B, E, H,..., faire le clic droit sur la cellule sur fond jaune.

Ok, pour moi, il suffit d'ajouter la ligne suivante ligne à la sortie de la boucle J:

Heure = HeureSup

le code complet:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim i As Long, j As Long
    Dim DerLig As Long
    Dim Jour As String
    Dim Heure As Date
    Dim l As Object

    On Error GoTo Sortie
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    DerLig = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
    Range(Cells(8, "B"), Cells(DerLig, "O")).Interior.ColorIndex = xlNone
    If Not Intersect(Target, Range("B7:C" & DerLig)) Is Nothing Then
        If Target.Column = 2 Then
            Jour = Target
            Heure = Application.WorksheetFunction.RoundUp(CDbl(Target.Offset(0, 1).Value), 5)
            Target.Offset(0, 1).Interior.ColorIndex = 6
        ElseIf Target.Column = 3 Then
            Jour = Target.Offset(0, -1).Value
            Heure = Application.WorksheetFunction.RoundUp(CDbl(Target), 5)
            Target.Offset(0, -1).Interior.ColorIndex = 6
        End If
            Target.Interior.ColorIndex = 6
        For i = 5 To 14 Step 3
            Set l = ActiveSheet.Columns(i).Find(What:=Jour, LookIn:=xlFormulas)
            If Not l Is Nothing Then
                For j = l.Row To DerLig
                    HeureSup = Cells(j, i + 1) - Int(Cells(j, i + 1))
                    If HeureSup > Heure Then
                        Range(Cells(j, i), Cells(j, i + 1)).Interior.ColorIndex = 6
                        Exit For
                    End If
                Next j
                Heure = HeureSup
            End If
        Next i
    End If
Sortie:
    Application.EnableEvents = True
End Sub

Cdlt

Bonjour Arturo83,

Merci infiniment, serait-il possible de renvoyer le fichier avec le nouveau code?

Cela marchait impeccable avec le premier mais la quand je change le code cela me met un message d'erreur?

Merci d'avance,

Merci beaucoup @Arturo83

Parfait ! Cela marche correctement pour un clic sur une case.

.Est-il juste possible en cas de selection multiple , si je clique par exemple sur plusieur horaires de la colonne B/C de mettre en surbrillance les horaires correspondant pour les autres sequences sur les lignes correspondantes donc sur plusieures lignes?

.Egalement pour les ligne 8 et 9 , la deuxieme sequence ne se met pas en surbrillance ?

Merci encore!

Bonjour,

.Est-il juste possible en cas de selection multiple , si je clique par exemple sur plusieur horaires de la colonne B/C de mettre en surbrillance les horaires correspondant pour les autres sequences sur les lignes correspondantes donc sur plusieures lignes?

Ok, faites une sélection de plusieurs cellules en B/C puis cliquez sur le bouton "Sélection multiple".

Une couleur différente est appliquée pour distinguer plus aisément chaque sélection.

**********************************************************************************************************************************

.Egalement pour les ligne 8 et 9 , la deuxieme sequence ne se met pas en surbrillance ?

Là, le problème vient de vos données, certains horaires contiennent une date bidon (en fait, il ajoute le 1er jour de l'année 1900, qu'il suffit de déduire de l'heure réelle dans la macro pour que ça marche)alors que les cellules qui fonctionnent n'en contiennent pas.

Pour mettre en évidence ce problème , j'ai ajouter 2 boutons, un pour écraser les formules des heures et les remplacer par leurs propres valeurs et, un autre pour recréer les formules et ainsi retrouver le fichier sous sa forme initiale.

voici ce qu'on peut voir après remplacement par les valeurs:

saumon80

Ce problème est corrigé. Vous pouvez supprimer les 2 boutons jaunes si tout fonctionne correctement avec le fichier d'origine.

Cdlt

Bonjour Arturo,

Merci beaucoup ! Le seul probleme est que maintenant la logique ne s'applique plus.

Si je clic sur Lundi a partir de 10h02 , la prochaine sequence renvoie a Lundi 8h12 au lieu de renvoyer a la prochaine sequence?

Egalement est il possible d'appliquer la meme couleur jaune pour toutes les selection de la selection multiple?

Merci encore,

Question:

- je sélectionne "Monday" à 23:02, en B je trouverai 23:12, en C je trouverai 23:42, mais en D la valeur supérieure pour le même jour n'existe pas, doit-on prendre la première valeur du lendemain, c'est "Tuesday" 00:27 et on continue sur "Tuesday" pour E ?

Oui , en effet , se serait Tuesday 0h27 pour la 4eme sequence et Tuesday 0h28 pour la 5eme.

Voilà les modifications demandées:

Cdlt

Merci beaucoup !

Le seul probleme qui subsiste est pour les horaires 8h02 et 9h02 pour la premiere sequence, ils renvoie au lendemain a 8h12 pour la sequence 2 au lieu de renvoyer au meme jour a respectivement 8h12 et 10h12.

Est-il possible d'ajuster cela?

Sinon tout est bon !

Rechercher des sujets similaires à "vba macro sequences dates heures mise forme conditionelle"