XL 2016 Cliquer sur un jour du calendrier pour aller dans une autre feuille

ReneDav14000

XLDnaute Occasionnel
Bonsoir à tous,
Dans le fichier joint, il y a une feuille "Calendrier" dans laquelle se trouve un calendrier des douze mois de l'année.
Dans les autres feuilles il y a le détail du mois à plat. Ces feuilles serviront d'agenda de travail.
Je souhaiterai mettre en place un code qui me permettrait lorsque je clique sur un jour du calendrier des 12 mois, d'aller directement à ce jour dans une feuille du classeur.
Par exemple : Je clique sur le 15 mars, alors la feuille Mars s'affiche et on se positionne au 15.
Avez-vous une idée de comment réaliser cela ?
J'ai essayé de chercher mais ce n'est pas facile de trouver les bons mots à mettre dans les moteurs de recherche.
Merci par avance pour vos suggestions.
 

Pièces jointes

  • agenda_macro .xlsm
    85.3 KB · Affichages: 14
Solution
Re

@ReneDav14000
Donc finalement, c'était bien des points ;)

Une formule possible pour masquer les jours "hors mois"
Ici pour janvier
=MOIS(C7)<>MOIS(DATE($F$2;1;1))

NB: Ta formule ne fonctionnait pas car C2 ce n'est pas une date, mais un nombre
(l'année sur 4 chiffres)

PS: J'ai oublié de te dire bravo pour ta persévérance ;)
Je vois que tu as réussi à mettre toutes les formules et la liste de validation.

Il reste le problème de la semaine 52/53 à traiter car selon le mois, on ne sera pas dans le bon agenda.
Exemple: En 2023
Semaine 52 en B7 et en AQ20, sauf que ce n'est pas la même année ;)
Donc problème pour le VBA dans la procédure évènementielle.

Jacky67

XLDnaute Barbatruc
Bonsoir à tous,
Dans le fichier joint, il y a une feuille "Calendrier" dans laquelle se trouve un calendrier des douze mois de l'année.
Dans les autres feuilles il y a le détail du mois à plat. Ces feuilles serviront d'agenda de travail.
Je souhaiterai mettre en place un code qui me permettrait lorsque je clique sur un jour du calendrier des 12 mois, d'aller directement à ce jour dans une feuille du classeur.
Par exemple : Je clique sur le 15 mars, alors la feuille Mars s'affiche et on se positionne au 15.
Avez-vous une idée de comment réaliser cela ?
J'ai essayé de chercher mais ce n'est pas facile de trouver les bons mots à mettre dans les moteurs de recherche.
Merci par avance pour vos suggestions.
Bonjour à tous
Sur double clic, la macro pourrait ressembler à ceci
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    On Error Resume Next
    With Sheets(Format(Target, "mmmm"))
        .Activate
        .Application.Goto .Cells(4, Day(Target) + 1)
    End With
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonjour @Jacky67

Merdre, je suis allé à l'encontre de mon principe KISS! :eek:

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Jour$, col&, Rng As Range
If IsDate(Target) Then
Jour = Day(Target)
With Sheets(MonthName(Month(Target)))
.Activate
Set Rng = .Range("B4:AF4")
col = Application.Match(Application.Index(Rng, 1, Jour), Rng, 0)
.Cells(4, col + 1).Select
End With
End If
End Sub
 

ReneDav14000

XLDnaute Occasionnel
Bonjour @Jacky67

Merdre, je suis allé à l'encontre de mon principe KISS! :eek:

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Jour$, col&, Rng As Range
If IsDate(Target) Then
Jour = Day(Target)
With Sheets(MonthName(Month(Target)))
.Activate
Set Rng = .Range("B4:AF4")
col = Application.Match(Application.Index(Rng, 1, Jour), Rng, 0)
.Cells(4, col + 1).Select
End With
End If
End Sub
Bonjour Staple1600, bonjour le forum,
Désolé de répondre aussi tardivement.
Merci beaucoup pour ce code, ça fonctionne super.
Je vais voir pour mettre la cellule sélectionnée dans les tableaux mois en surbrillance ou une couleur de fond pour plus de clarté. Mais il faudra enlever cette couleur lorsque l'on quitte la feuille.
Encore merci.
 

ReneDav14000

XLDnaute Occasionnel
Voilà c'est fait pour la couleur.
Voir fichier joint.
Mais je rencontre un soucis de taille, ma hiérarchie souhaite que le calendrier suive les feuilles, donc il va me falloir construire une UserForm avec les mêmes caractéristiques que ma feuille.
Elle aimerait quelque chose qui ressemble à ça :
J'ai déjà les bases du fichier mais il y a du boulot. Le fichier joint qui servait en 2013 doit me servir de base avec la possibilité de changer d'année afin que cet Agenda devienne perpétuel (ou presque).
Vivement la retraite....
1667563271755.png
 

ReneDav14000

XLDnaute Occasionnel
Bonsoir à tous,
Voilà où j'en suis actuellement (voir fichier joint).
La feuille "Calendrier" sert de base à toutes les feuilles. La modification de l'année se fera à partir de cette feuille uniquement et se répercutera sur les autres feuilles.
La feuille 1 me sert de feuille d'essai pour mes formules de calcul.
En cellule S22 il y a le numéro de la semaine (la cellule aura la même position dans toutes feuilles).
Dans la cellule K23, j'ai utilisé la Fonction RECHERCHEX d'Excel, cependant je rame lorsque l'on arrive à la semaine 5 (en changeant le N° en S22 c'est pour l'essai) car la semaine 5 est à cheval sur deux mois, janvier et février. Je n'arrive pas à trouver la formule adéquat.
Une fois que les formules et autres fonctionneront correctement, l'utilisateur n'aura accès qu'à la partie agenda, pas calendrier.
Je passe à Excel sans Vba car le jour où je ne serais plus en fonction, il faut que mon remplaçant puisse réparer le tableau en cas d'accident, ce qui me semble plus facile qu'avec Vba.
Pouvez-vous m'aider à trouver la bonne formule s'il vous plait ?
Je vous en remercie par avance
 

Pièces jointes

  • Agenda_Hebdo2.xlsm
    225.9 KB · Affichages: 15

ReneDav14000

XLDnaute Occasionnel
Bonjour à tous,
Je reviens vers vous avec mon projet d'agenda car je rencontre quelques difficultés.
Dans chaque jour de l'année je suis obligé d'entrer à la main les formules de calcul afin que l'on trouve la date du jour de la semaine dans la feuille "Calendrier". C'est long et fastidieux.
Malgré l'avis des donneurs d'ordre, je souhaiterai passer par du code Vba plutôt que des formules Excel. Surtout sur la 5ème semaine qui tombe sur deux mois et il y en a d'autres comme ça.

Dans la feuille "Calendrier" chaque mois est nommé par son mois (Janvier est nommé "Janvier", etc..)
Dans cette même feuille la zone K6:BK11 est nommée "Semestre1", la zone K15:BK15 est nommée "Semestre2".

J'ai mis en place un code dans la feuille "Calendrier" qui est censé, lorsque l'on clique sur un jour du calendrier, nous ouvrir la feuille de la semaine qui correspond à cette journée mais il ne fonctionne pas. Rien ne se passe après le clique.

Pourriez-vous m'apporter un regard extérieur et m'aider à concevoir un code pour la recherche des jours de la semaine. Dans mon fichier je suis passé par RECHERCHEX.

Merci par avance pour votre aide car je galère depuis 2 jours. J'ai essayé de me débrouiller seul, mais je commence à attaquer la falaise à force de ramer.

Je vous joint un fichier simplifié de 6 semaines.
 

Pièces jointes

  • Agenda_Hebdo3.xlsm
    193.7 KB · Affichages: 14

Staple1600

XLDnaute Barbatruc
Re

Si les feuilles sont des mois, alors cela suffit pour les sélectionner
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Worksheets(CStr(Month(Target))).Activate
End Sub

Si ce sont des semaines, sauf erreur, il n'y a pas de mois de 6 semaines, non ?
 

Staple1600

XLDnaute Barbatruc
Re

Pour sélectionner selon la semaine, tu peux voir de ce côté
(et voir qu'il y aura des soucis à venir)
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim N_SEM$
N_SEM = CStr(Application.IsoWeekNum(Target))
Worksheets(N_SEM).Activate
End Sub
Par exemple quid si tu sélectionnes la cellule Q6 de la feuille Calendrier ?
 

ReneDav14000

XLDnaute Occasionnel
Re

Pour sélectionner selon la semaine, tu peux voir de ce côté
(et voir qu'il y aura des soucis à venir)
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim N_SEM$
N_SEM = CStr(Application.IsoWeekNum(Target))
Worksheets(N_SEM).Activate
End Sub
Par exemple quid si tu sélectionnes la cellule Q6 de la feuille Calendrier ?
Ton code fonctionne bien pour la sélection des semaines.
Merci beaucoup et en plus il est beaucoup plus court que le mien.
Je planche sur les formules de calcul, c'est plutôt compliqué.
Par contre si je clique en Q6, il y a un message d'erreur. Mais si j'indique qu'il faut cliquer sur le premier jour de la semaine, soit un lundi, ça devrait peut-être passer.
 

Discussions similaires

Réponses
0
Affichages
356

Statistiques des forums

Discussions
314 719
Messages
2 112 181
Membres
111 452
dernier inscrit
christine64