XL 2021 Formation d'un tableau automatique (Calendrier)

clausen

XLDnaute Occasionnel
J'aimerais en fonction de la zone AI3 en typant l'année en cours. Que le système me remplisse les zones
en jaune pour samedi et bleu pour dimanche de tous les mois.

Est-ce qu'il y aurait un génie que pourrait m'aider ?

Merci d'avance
 
Solution
bonsoir à toutes & à tous, bonsoir @clausen , @piga25
Voici une proposition sans aucune formule (même cachée), uniquement gérée par 3 formats conditionnels (sur la totalité du planning).

Code d'accès à la cellule du jour :
VB:
Sub Vers_Aujourdhui()
     If Year(Date) = [Année] Then
         ligne = (Month(Date) * 4) + [début].Row - 2
         colonne = Day(Date) + [début].Column - 1
         Application.Goto sh_Planning.Cells(ligne, colonne)
     Else
         Application.Goto [Année]
     End If
End Sub
Ce code est exécuté à l'ouverture du classeur, en cas de modification de l'année, à l'activation de la feuille planning, en cas de clic sur le bouton Aujourd'hui.

Code à l'ouverture du...

piga25

XLDnaute Barbatruc
Bonjour,
Pour faire suite à votre demande:
Les lignes avec les dates sont masquées.
En cliquant sur le bouton date du jour, cela active la cellule du jour sur la même ligne ou il y a la mise en forme conditionnelle pour les samedi et dimanche.

VB:
Sub SelectionnerCelluleSousDateDuJour()
    Dim ws As Worksheet
    Dim dateTrouvee As Boolean
    Dim cell As Range
    Dim i As Long

    ' Définir la feuille de calcul
    Set ws = ThisWorkbook.Sheets("Feuil1")
    dateTrouvee = False

    ' Boucle à travers les lignes 5, 10, 15, etc.
    For i = 5 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row Step 5
        For Each cell In ws.Rows(i).Cells
            If cell.Value = Date Then
                ' Sélectionner la cellule juste en dessous de la date du jour trouvée
                ws.Cells(cell.Row + 1, cell.Column).Select
                dateTrouvee = True
                Exit For
            End If
        Next cell
        If dateTrouvee Then Exit For
    Next i

    ' Si la date du jour n'est pas trouvée
    If Not dateTrouvee Then
        MsgBox "La date du jour n'a pas été trouvée dans le tableau."
    End If
End Sub
 

Pièces jointes

  • Olivier vide.xlsm
    34.6 KB · Affichages: 7

clausen

XLDnaute Occasionnel
Bonjour,
Pour faire suite à votre demande:
Les lignes avec les dates sont masquées.
En cliquant sur le bouton date du jour, cela active la cellule du jour sur la même ligne ou il y a la mise en forme conditionnelle pour les samedi et dimanche.

VB:
Sub SelectionnerCelluleSousDateDuJour()
    Dim ws As Worksheet
    Dim dateTrouvee As Boolean
    Dim cell As Range
    Dim i As Long

    ' Définir la feuille de calcul
    Set ws = ThisWorkbook.Sheets("Feuil1")
    dateTrouvee = False

    ' Boucle à travers les lignes 5, 10, 15, etc.
    For i = 5 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row Step 5
        For Each cell In ws.Rows(i).Cells
            If cell.Value = Date Then
                ' Sélectionner la cellule juste en dessous de la date du jour trouvée
                ws.Cells(cell.Row + 1, cell.Column).Select
                dateTrouvee = True
                Exit For
            End If
        Next cell
        If dateTrouvee Then Exit For
    Next i

    ' Si la date du jour n'est pas trouvée
    If Not dateTrouvee Then
        MsgBox "La date du jour n'a pas été trouvée dans le tableau."
    End If
End Sub
Il y a un probléme des cellules se mettent en couleur n'importe ou quand je les remplis.
J'aimerai que chaque fois que j'ouvre le fichier il se mette automatiquement sur la date du jour sans devoir aller sur une zone "Date du jour"
 

Pièces jointes

  • xxx.xlsm
    27.3 KB · Affichages: 1

AtTheOne

XLDnaute Accro
Supporter XLD
bonsoir à toutes & à tous, bonsoir @clausen , @piga25
Voici une proposition sans aucune formule (même cachée), uniquement gérée par 3 formats conditionnels (sur la totalité du planning).

Code d'accès à la cellule du jour :
VB:
Sub Vers_Aujourdhui()
     If Year(Date) = [Année] Then
         ligne = (Month(Date) * 4) + [début].Row - 2
         colonne = Day(Date) + [début].Column - 1
         Application.Goto sh_Planning.Cells(ligne, colonne)
     Else
         Application.Goto [Année]
     End If
End Sub
Ce code est exécuté à l'ouverture du classeur, en cas de modification de l'année, à l'activation de la feuille planning, en cas de clic sur le bouton Aujourd'hui.

Code à l'ouverture du classeur
VB:
Private Sub Workbook_Open()
     Vers_Aujourdhui
End Sub

Code de la feuille planning
VB:
Private Sub Worksheet_Activate()
     Vers_Ajourdhui
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = [Année].Address Then
          Vers_Aujourdhui
     End If
End Sub

EDIT : Nota il y a 3 noms définis
"Début" la cellule qui contient le mot JANVIER,
"Année" la cellule qui contient l'année soit AI3)
"Mois" une formule qui déduit le mois en cours en fonction de la ligne courante


Voir pièce jointe
A bientôt
 

Pièces jointes

  • Olivier vide (AI3) AtTheOne.xlsm
    22 KB · Affichages: 9
Dernière édition:

clausen

XLDnaute Occasionnel
bonsoir à toutes & à tous, bonsoir @clausen , @piga25
Voici une proposition sans aucune formule (même cachée), uniquement gérée par 3 formats conditionnels (sur la totalité du planning).

Code d'accès à la cellule du jour :
VB:
Sub Vers_Aujourdhui()
     If Year(Date) = [Année] Then
         ligne = (Month(Date) * 4) + [début].Row - 2
         colonne = Day(Date) + [début].Column - 1
         Application.Goto sh_Planning.Cells(ligne, colonne)
     Else
         Application.Goto [Année]
     End If
End Sub
Ce code est exécuté à l'ouverture du classeur, en cas de modification de l'année, à l'activation de la feuille planning, en cas de clic sur le bouton Aujourd'hui.

Code à l'ouverture du classeur
VB:
Private Sub Workbook_Open()
     Vers_Aujourdhui
End Sub

Code de la feuille planning
VB:
Private Sub Worksheet_Activate()
     Vers_Ajourdhui
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = [Année].Address Then
          Vers_Aujourdhui
     End If
End Sub

EDIT : Nota il y a 3 noms définis
"Début" la cellule qui contient le mot JANVIER,
"Année" la cellule qui contient l'année soit AI3)
"Mois" une formule qui déduit le mois en cours en fonction de la ligne courante


Voir pièce jointe
A bientôt
Merci mille fois . Pour le moment tout fonctionne comme je voulais. Je n'arrive pas à supprimer la case "Aujourd'hui" En AL/3
 

Discussions similaires

Réponses
6
Affichages
445

Statistiques des forums

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