Mise en forme toutes les x cellules

Bonjour à tous,

J'ai toujours plus ou moins réussi à me débrouiller seul mais malgré ma ténacité, je flanche...

Voilà mon souci :

J'ai créé un calendrier pour gérer mes congés. Dans ce calendrier j'aimerais pouvoir appliquer une mise en forme un week end sur deux à partir d'un que j'aurai choisi.

Par exemple : le samedi 4/01/2020 et le dimanche 5/01/2020 serait de couleur bleu. J'aimerais qu'à partir de ce week end, un week end sur deux sois de cette couleur.

J'ai essayé tout un tas de choses dont des boucles For Next etc....

Une aide serait raiment la bienvenue

12calendrier-v4-2.xlsm (109.23 Ko)

Bonjour toutes et tous

en essayant avec une mise en forme conditionnelle (mfc)

exemple B22

=OU(JOURSEM(B22)=1;JOURSEM(B22)=7)

1/ choisir sa couleur du texte etc

2/ sélectionner cellule B22 puis,

3/ dans le ruban, choisir l'icône représentant un balai Reproduire la mise en forme

4/ toujours sur la cellule b22 clic gauche enfoncé et aller jusqu'en B52

5/ on sélectionne B52, reproduire la mise en forme on se positionne sur la cellule J22 et rebelote...

ci-joint un aperçu

oupss j'ai mis en vert et non en bleu

crdlt,

André

ztest60vert

Merci beaucoup André,

Pas grave pour la couleur

Cependant, j'aurais aimé que celà se fasse automatiquement en code VBA puis tous les 14 jours (1 week end sur deux).

En fait pour être plus précis, j'aurais aimé qu'à partir du moment où je colore l'intérieur des cellules d'un week end celà se fasse automatiquement tous les 2 week end jusqu'à la fin de l'année.

Je ne sais pas si c'est très clair, j'avoue que ce n'est pas facile à expliquer...

Re,

Tu as bien expliqué mais, j'avoue que je n'ai pas vu pour l'instant ce type de mise en forme tout les 15 jours ()

peut être existe t -il un autre type de formule

Bonjour Mikangel,

En pièce jointe ton fichier modifié. Lance la macro Teinte

Vois le code réalisé. Puis tente de l'adapter à une semaine sur deux.

Sinon reviens me voir...

Salut X Cellus,

Merci beaucoup d'avoir passé du temps sur mon problème.

J'ai regardé ton code mais étant donné mon niveau "un peu limité" en vba je n'arrive pas à bien le comprendre...

J'ai compris qu'il y avait 3 boucles déjà mais je ne pige pas vraiment comment elles fonctionnent ni ce qu'elles balayent...du coup je ne sais pas vraiment quoi modifier sur ce code

Salut mikangel,

Salut André, X Cellus,

voici... à tester, comme toujours!

Le seul cas non prévu : si le premier WE de garde tombe un dimanche 1er janvier! Déso, hein!

Tout ce que tu as à faire est de double-cliquer sur le "SAM" du premier WE de garde souhaité, aussi souvent que l'alternance doit être modifiée puisque le changement ne s'opère qu'à partir de la date exacte sélectionnée.

Le code se trouve dans le module VBA 'ThisWorkbook'.

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
'
Dim dDate As Date, dLast As Date, iOK%
'
If Target.Column Mod 8 = 2 And Target.Interior.Color = RGB(172, 185, 202) And Weekday(CDate(Target), vbMonday) = 6 Then
    Cancel = True
    Application.ScreenUpdating = False
    '
    dDate = CDate(Target)
    For x = IIf(Target.Row < 63, 22, 63) To 63 Step 41
        For y = IIf(iOK = 0, Target.Column, 2) To 43 Step 8
            dLast = DateAdd("d", -1, DateAdd("m", 1, CDate(Cells(x, y))))
            For Z = IIf(iOK = 0, Target.Row, x) To x + Day(dLast) - 1
                Cells(Z, y).Interior.Color = IIf(iOK = 1 And (Z = 22 Or Z = 63) Or _
                    Cells(Z - 1, y).Interior.Color = RGB(175, 234, 255) And Weekday(CDate(Cells(Z - 1, y)), vbMonday) = 6, _
                    RGB(175, 234, 255), RGB(172, 185, 202))
                If Weekday(CDate(Cells(Z, y)), vbMonday) = 6 And CDate(Cells(Z, y)) = dDate Then
                    iOK = IIf(dDate = dLast, 1, 2)
                    Cells(Z, y).Resize(iOK, 1).Interior.Color = RGB(175, 234, 255)
                    dDate = DateAdd("d", 14, dDate)
                End If
            Next
        Next
    Next
    '
    Application.ScreenUpdating = True
End If
'
End Sub

A+

YES curulis57 !

Ca fonctionne, enfin....ouf

par contre ton code...ouhaa

Merci beaucoup à vous tous en tous cas !!!

Bon j'avoue je ne comprends pas bien ton code...mais il fonctionne

A tout hasard, vous ne connaissez pas un bon bouquin pour apprendre le VBA ?

Bonsoir Mikangel, André, Curulis57

Bon, je voulais te faire chercher en VBA la fonction Mod (Modulo). Afin de l'intégrer dans le code réalisé pour toi. En fait cette fonction te permet dans cet exemple en te basant sur le dimanche d'en coloriser 1 semaine sur 2.

Puisque un nombre impair en modulo 2, il reste 1 alors qu'un nombre pair en modulo 2 il reste 0.

Voir la modif apporté sur les lignes commençant par If. Du coup la première condition (if) devient alternative. Ainsi elle colore qu'une semaine sur 2.

Note aussi que je prends la couleur du fonds de la cellule F8. Si tu choisis avant une autre couleur pour cette cellule ton calendrier après le lancement de la macro teinte en tiendra compte.

Bons tests et bonne continuation.

Rechercher des sujets similaires à "mise forme toutes"