Affecter Horaire sauf pour Cellules avec MFC (VBA)

Bonsoir à tous!

Merci de m'aider sur une macro qui me permet d'affecter 08:30 pour heure d'arrivée et 16:30pour heure de départ, sauf pour les cellules qui obéissent à une MFC, sachant que les ligne MFC sont variables et peuvent être durant une semaine pas sauf les week ends.

Je vous joins le classeur.

Cordialelent

Bonsoir,

Si j'ai compris ton propos :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim iHH As Integer, iMM As Integer
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Me.Range("C4:J29")) Is Nothing Then
        If Target.DisplayFormat.Interior.ColorIndex = xlColorIndexNone Then
            If IsNumeric(Target.Value) Then
                iHH = Target \ 100
                iMM = Target Mod 100
                Application.EnableEvents = False
                Target.Value = TimeSerial(iHH, iMM, 0)
                Application.EnableEvents = True
            End If
        End If
    End If
End Sub

Cordialement.

Bonjour MFerand!

Merci pour votre réponse, je vais m'y mettre ce soir et je reviens vers vous, merci encore.

Cordialement

Bonsoir!

Merci pour votre réponse MFerand, mais je pense m'avoir mal expliqué, en fait ce que je voulais c'est au clic d'un bouton, une macro s’exécute pour remplir toutes les cases du tableau par 8:30 pour arrivée et 16:30pour départ, sauf les cases colorées par la MFC (les cellules en bleu) qui doivent restées vides ou à zéro.

Merci à vous!

Bonsoir,

J'avais travaillé dans le sens de ta procédure... Ce que tu veux c'est alors une autre procédure qui s'y substituerait pour remplir les cellules non colorées ?

Si je me souviens bien il y en a qui sont colorées par MFC et d'autres directement (qui contiennent des formules).

Faut-il limiter à la colonne J (limite de la proc. évènementielle) ou aller jusqu'à AK ?

Cordialement.

Bonsoir MFerand!

Merci pour votre réactivité, la macro s'applique sur tout le tableau jusqu’à la colonne AK.

Merci encore

Re,

Sub InitHoraires()
    Dim hA$, hD$, k%, i%
    hA = "08:30": hD = "16:30"
    Application.ScreenUpdating = False
    With Worksheets("Pointage").Range("C4:AK29")
        For k = 1 To .Columns.Count
            For i = 1 To .Rows.Count
                If .Cells(i, k).DisplayFormat.Interior.ColorIndex = xlColorIndexNone Then
                    Select Case k Mod 3
                        Case 1: .Cells(i, k) = hA
                        Case 2: .Cells(i, k) = hD
                    End Select
                End If
            Next i
        Next k
    End With
End Sub

N'oublie de supprimer la procédure évènementielle de Feuil2 avant de lancer celle-ci...

Cordialement.

Bonjour à Tous!

Bonjour MFerrand et merci pour la macro, les valeurs s'affectent correctemment, mais pour les colonne de C à J, les valeurs se transforment uniquement en secondes.

Est-ce le format?

Je joins le classeur pour mieux voir.

Merci à vous.

MFerrand a écrit :

N'oublie de supprimer la procédure évènementielle de Feuil2 avant de lancer celle-ci...

Tu ne m'as pas lu ! Si j'ai recommandé de la supprimer, c'est que la dernière macro modifiait des valeurs dans des cellules qui déclencheraient l'évènementielle, laquelle allait transformer les dernière valeurs insérées, et pas dans le sens voulu... !

Cordialement.

Bonjour Mreffand Bonjour à tous!

Merci encore une fois pour ton aide précieuse, la macro fonctionne parfaitement, mais l’événement qui permettait la saisi au format 08:30 ne fonctionne plus ainsi.

Peut on combiner les deux à la fois.

Merci encore

Les deux choses sont incompatibles... Pour pouvoir les combiner, il faut introduire une variable booléenne publique de niveau module, que la macro de remplissage passe à True avant d'opérer, puis remet à False une fois fini de remplir.

Dans l'évènementielle, on débute alors par une condition : si la variable en question est à True, on sort (Exit Sub) sans rien faire. Si elle est à False, on répond à l'évènement.

Cordialement.

Bonjour MFerrand!

Parole d'expert je m'incline, je vais essayer de le faire sinon je je reviens vers vous.

Par contre y aurait il possibilité d'initialiser les valeurs à affecter dans la macro au format hh:mm.

Merci à vous!

Bonsoir,

Je suis pris par d'autres tâches jusqu'à samedi... et ne peux répondre que sporadiquement et rapidement...

Qu'entends-tu par :

y aurait il possibilité d'initialiser les valeurs à affecter dans la macro au format hh:mm.

Bonjour Tous le monde, MFerrand;

Merci à vous MFerrand, j'ai changé le format de cellules et c'est régler, par contre dans la même Macro ou dois je insérer la formule qui me permet d'avoir la différence entre heure départ et heure arrivée en automatique.

Le calcul se fait juste lorsque les cellules arrivée et départ sont renseignées.

Merci à vous.

Je maintiens que je ne comprends pas ta question !

Reprends la macro telle que je l'ai fournie. Tu noteras que j'ai pris soin de déclarer les variables destinées à affecter les heures d'arrivée et de départ de type String (caractère de déclaration de type : $), que j'ai affecté à ces variables les valeurs texte : "08:30" et "16:30", soit du texte dont le format correspond à un format horaire.

Lors de l'affectation de ces valeurs texte, Excel les identifie comme valeurs horaires et les convertit (et met automatiquement un format de cellule horaire si la cellule est au format Standard).

Il n'y a pas d'initialisation particulière à faire... on laisse faire Excel.

Cordialement.

Bonjour MFerrand!

Merci pour l'aide et l'explication, effectivement j'avais compris votre démarche.

Merci encore, je reviendrais avec une suite de ce projet plus tard.

A bientôt.

Rechercher des sujets similaires à "affecter horaire sauf mfc vba"