IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Colorier cellule en fonction de date [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 154
    Par défaut Colorier cellule en fonction de date
    Bonjour à tous

    Je suis entrain de refaire un calendrier de travail.
    Sur une feuille j'aimerai rentrer les jours spéciaux (exemple anniversaire) ainsi que les périodes scolaire du genre debut 01/01/2017 au 05/01/2017 et que les jours compris entre cette date se colorie, j'aurai aimer que les jours spéciaux apparaisse d'une couleur et les vacances d'une autre.
    En rajoutant 2 lignes ma macro ne fonctionne plus comment modifier le code macro car je ne comprend rien.

    Voici mes feuilles :
    Voici ma feuille calendrier :
    Nom : 1.png
Affichages : 1091
Taille : 19,2 Ko
    Voici ma feuille ou je met les jours spéciaux:
    Nom : 2.png
Affichages : 944
Taille : 28,1 Ko

    @+Filou

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Difficile de t'aider à corriger ta macro si tu nous montres pas ton code ...
    Mais tu ferais mieux de passer par des mises en formes conditionnelles plutôt qu'une macro !
    Tu peux regarder ici ou pour plus de details sur la MFC des jours particuliers dans ton calendrier.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 154
    Par défaut
    Citation Envoyé par riaolle Voir le message
    Bonjour,
    Difficile de t'aider à corriger ta macro si tu nous montres pas ton code ...
    Mais tu ferais mieux de passer par des mises en formes conditionnelles plutôt qu'une macro !
    Tu peux regarder ici ou pour plus de details sur la MFC des jours particuliers dans ton calendrier.

    Bonjour à tous

    Voici le fichier quasi final.
    Le soucis est que j'ai rajouter 2 Lignes chaque mois et les dates ne se colorie plus et ne fonctionne plus

    A L'AIDE A L'AIDE

    @+ Filou

    Planning vierge final origine.xlsm



    Voici une macro :


    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Sub ColorieLesJoursFériés()
     
        Set fj = Sheets("Jours spéciaux")
        derlnF = fj.Range("A1").End(xlDown).Row     'F pour férié
        derlnA = fj.Range("D1").End(xlDown).Row     'A pour Anniversaire
        derlnV = fj.Range("G1").End(xlDown).Row     'V pour vacanses
     
        Application.ScreenUpdating = False
        Application.Calculation = xlManual
     
        ReDim dte(12, 5, 7)
        For i = 0 To 11
            For j = 0 To 4
                For k = 0 To 6
                    Cells(18 * i + 6, 9 * j + k + 3).Interior.Color = RGB(236, 200, 164)
                    Cells(18 * i + 5, 9 * j + k + 3).Font.Color = RGB(0, 0, 0)
                    Cells(18 * i + 5, 9 * j + k + 3).ClearComments
                    Cells(18 * i + 5, 9 * j + k + 3).Borders(xlEdgeBottom).LineStyle = xlNone
                    Cells(18 * i + 5, 9 * j + k + 3).Borders(xlEdgeTop).LineStyle = xlNone
     
                    If Cells(18 * i + 6, 9 * j + k + 3).Value <> "" Then
                        dte(i, j, k) = Cells(18 * i + 6, 9 * j + k + 3)
                        For t = 3 To derlnF
                            If fj.Range("A" & t) = dte(i, j, k) Then
                                Cells(18 * i + 6, 9 * j + k + 3).Interior.Color = RGB(255, 0, 0)
                            End If
                        Next t
     
                        For t = 3 To derlnA
                            If DateSerial(fj.Range("B1"), Month(fj.Range("D" & t)), Day(fj.Range("D" & t))) = dte(i, j, k) Then
                                Cells(18 * i + 5, 9 * j + k + 3).Font.Color = RGB(255, 0, 0)
                                Cells(18 * i + 5, 9 * j + k + 3).AddComment
                                Cells(18 * i + 5, 9 * j + k + 3).Comment.Text Text:=fj.Range("E" & t) & " a " & fj.Range("B1") - Year(fj.Range("D" & t)) & " ans"
                            End If
                        Next t
     
                        For t = 3 To derlnV
                            If dte(i, j, k) >= fj.Range("G" & t) And dte(i, j, k) <= fj.Range("H" & t) Then
                                Cells(18 * i + 5, 9 * j + k + 3).Borders(xlEdgeBottom).LineStyle = xlDouble
                                Cells(18 * i + 5, 9 * j + k + 3).Borders(xlEdgeTop).LineStyle = xlDouble
                                Cells(18 * i + 5, 9 * j + k + 3).Borders(xlEdgeBottom).Color = RGB(0, 255, 0)
                                Cells(18 * i + 5, 9 * j + k + 3).Borders(xlEdgeTop).Color = RGB(0, 255, 0)
                                Cells(18 * i + 5, 9 * j + k + 3).Select
                            End If
                        Next t
                    End If
                Next k
            Next j
        Next i
        Application.Calculation = xlAutomatic
    End Sub
    et l'autre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Option Explicit
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Target.Count > 1 Then Exit Sub '
        If Target.Address = "$A$1" Then
            Application.EnableEvents = False
            Application.Undo
            MsgBox "Pour changer d'année, vous devez utiliser les flêches de la cellule A2", 16
        End If
        Application.EnableEvents = True
    End Sub

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Evite d'envoyer des fichiers (surtout xlsm), pour des raisons de sécurité et de lisibilité, peu de personnes les ouvrent : https://www.developpez.net/forums/d8...s-discussions/
    Quand on lance un macro, elle s'exécute lorsqu'on la lance, et fini. Supposons que tu demandes à qqun, à un moment donné, de recopier une liste de course sur un autre papier. Si après l'exécution de la tâche, tu rajoutes des éléments sur la liste de course, ces éléments ne vont pas être recopiés par magie sur la deuxième liste, sauf si tu redemandes à la personne de recopier la liste de course. Pour les macros, c'est pareil. Tu l'exécutes, elle fait son boulot et fini.
    Dans ta macro, à un moment donné, tu demandes à la macro de parcourir une liste de jours et de mettre une mise en forme en fonction de cette liste de jours. Après l'exécution de ta macro, si tu ajoutes des jours dans ta liste, c'est comme pour la liste de course, ils ne vont pas s'ajouter automatiquement au calendrier.
    C'est pour cela que je te recommend fortement de faire une mise en forme conditionnelle. Regarde les liens que je t'ai transmis.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 154
    Par défaut
    Bonjour

    Merci encore pour au forum.
    J'ai réussi a faire ce que je voulais avec les mises en forme conditionnelles

    @+ Filou

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2016] Coloration cellule en fonction de date
    Par cyrpio dans le forum Excel
    Réponses: 6
    Dernier message: 16/06/2017, 00h20
  2. [XL-2010] Colorier cellule sous condition de date dépassée et autre vide
    Par diss10 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/04/2017, 11h30
  3. Réponses: 8
    Dernier message: 24/03/2015, 13h51
  4. Effacer des cellules en fonction de la date
    Par jarault dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 16/04/2008, 12h08
  5. colorier cellule sous-formulaire en fonction de sa valeur
    Par aba_tarn dans le forum VBA Access
    Réponses: 7
    Dernier message: 07/03/2008, 13h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo