Colorer semaines de différentes couleurs

Bonjour à tous,

Voici mon problème :

J'ai créé un programme en VBA permettant de charger les jours du mois choisi par le bouton en haut a gauche de mon programme.

Cela fonctionne bien, la feuille est rechargée en fonction du mois choisi, les jours sont bon, les weeks end sont colorés, seulement j'aimerai ajouter une fonctionnalité :

Je voudrais que les semaines (du lundi au dimanche) soient colorés d'une couleur différente en fonction de la semaine, que les 7 cellules par semaines soit fusionnées, et que le numéro de la semaine (par exemple S15 pour la quinzième semaine de l'année) soit affiché.

Par exemple, pour chaque mois, la première semaine en jaune, la seconde en vers, la troisième en bleu clair, la quatrième en bleu foncé, avec à l'intérieur, le numéro de chaque semaine.

Bien sûr, garder les mêmes couleurs pour chaque mois...

La ligne permettant la colorisation des semaines est situer en dessous de la liste des jours et numéros de jours, soit sur la troisième ligne.

J'ai mis l'exemple de ce que je voudrais que cela donne dans le fichier ci-joint, j'aimerai avoir ce résultat...

Merci d'avance si quelqu'un peut m'aider à faire cela.

Cordialement

floki72450

Bonsoir !

Un premier jet , ça colle ?

Hello,

Une proposition de ma part également

Bonjour à tous

Pour compléter le choix des propositions :

57essai-v1.xlsm (69.20 Ko)

Bye !

Bonjour a tous,

tout d'abord merci pour vos réponses rapides

J'ai retenu la réponse de gmb (il fallais bien en retenir une...)

gmb a écrit :

Bonjour à tous

Pour compléter le choix des propositions :

Bye !

Je m'adresse maintenant à gmb par rapport a son code. Je débute en VBA, j'apprend, et donc plutôt que d'utiliser bêtement ta codification, j'aimerai la comprendre.

Pourrais-tu m'expliquer ce code ligne par ligne (par des commentaires cela suffira) ce que fait le programme afin que je comprenne et puisse m'en servir dans l'avenir si besoin est ? merci d'avance

'N° et couleur des semaine

i = 1

For jour = 1 To nb_jours

n = 0

couleur = Choose(i, RGB(255, 255, 0), RGB(51, 153, 51), RGB(83, 141, 213), RGB(0, 112, 192), RGB(226, 107, 10))

While Cells(3, jour + 2 + n).Value = Cells(3, jour + 3 + n).Value

n = n + 1

Wend

N°S = "S " & Cells(3, jour + 2)

Range(Cells(3, jour + 2), Cells(3, jour + 2 + n)) = ""

Cells(3, jour + 2) = N°S

Range(Cells(3, jour + 2), Cells(3, jour + 2 + n)).Interior.Color = couleur

Range(Cells(3, jour + 2), Cells(3, jour + 2 + n)).HorizontalAlignment = xlCenterAcrossSelection

i = i + 1

jour = jour + n

Next jour

Voilà :

24commentaires.docx (12.96 Ko)

Bye !

merci, je comprend la plupart des choses, sauf ce morceau :

‘On exécute la boucle tant que la condition est remplie, c’est-à-dire que partant de la cellule de la ligne 3, colonne jour + 2 + n, on va se déplacer vers la droit et incrémenter n tant que la valeur de la cellule (n° de la semaine) est le même

While Cells(3, jour + 2 + n).Value = Cells(3, jour + 3 + n).Value

ok, mais ou est l'argument de semaine dans la formule ?

Cells(3, jour + 2 + n).Value = Cells(3, jour + 3 + n).Value veut dire que en avançant vers la droite, les cellules ont la même valeur, mais qu'est ce qui justifie que c'est la même valeur de semaine ?

Merci encore j'essai de comprendre

floki72450 a écrit :

mais qu'est ce qui justifie que c'est la même valeur de semaine ?

Parce que un peu plus haut, dans la macro d’origine, j’ai ajouté une instruction qui, en ligne 3 écrit le numéro de la semaine du jour dont on inscrit la date en ligne 2

         'Boucle JOURS
         For jour = 1 To nb_jours
            date_du_jour = DateSerial(Range("B3"), Range("A3"), jour)
            Cells(1, jour + 2) = date_du_jour
            Cells(2, jour + 2) = date_du_jour
           Cells(3, jour + 2) = DatePart("ww", DateSerial(Year(date_du_jour), Month(date_du_jour), Day(date_du_jour)), 2, 2)

Pour te rendre compte de ce qui se passe, et bien voir l’environnement dans lequel la macro évolue, je t’invite à la faire tourner pas à pas, (touche F8) à partir des points d’arrêt que tu peux mettre sur la ligne de code où tu veux qu’elle s’arrête (touche F9)

OK ?

Bye !

Ok, je n'avais pas remarquer cette ligne ! merci beaucoup, et l'astuce du pas a pas est très utile aussi

A la prochaine tout le monde, merci encore !

Rechercher des sujets similaires à "colorer semaines differentes couleurs"