Microsoft 365 Calendriers et planning automatiques avec Excel (modification des plages selon le salarié, le mois et l'année)

Taz9124

XLDnaute Nouveau
Bonjour,

C'est la première fois que je fais une demande sur un forum, je vous prie de m'excuser si j'ai omis certaines choses au sujet de la charte ou d'autres choses.

Je vais essayer d'être le plus clair et précis possible, mon tableau Excel est un planning horaire automatique et change quand je choisis le mois, l'année ou le salarié dans la liste déroulante (pas besoin de prendre en compte la liste déroulante "type").

Mon souci et que j'aimerais pouvoir cocher ou mettre en couleur une case pour n'importe quel salarié et que quand je change de mois, année ou de salarié, la case que j'ai mis en couleur ou que j'ai coché redevienne neutre (Ex : je coche 06:30 le jeudi 1er juin 2023 et lorsque que je choisis une autre année, mois ou salarié, j'aimerais que cette coche disparaisse.)

Ci-joint mon fichier Excel, j'espère que mon explication est assez claire et encore une fois, veuillez m'excuser pour mon manque d'expérience sur le forum.

Merci d'avance pour votre aide
 

Pièces jointes

  • Planning exemple.xlsx
    15.3 KB · Affichages: 28

fanfan38

XLDnaute Barbatruc
Bonjour et bienvenu sur Excel downloads
Nouvelle question=nouveau post
faire référence au post concerné si necessaire...
Oui. la première macro se déclenche quand on change une cellule du planning
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
'si modification des données en C2 à C5 affichage du planning
  If Not Intersect(Target, Range("C2:C5")) Is Nothing Then affplanning
 'Sinon enregistrement des données dans le tableau structuré de la feuille données
  If Not Intersect(Target, Range("D10:AH29")) Is Nothing And ctrl = False Then
    Dim n As Long 'derniere ligne + 1
    If [TData].Item(1, 1) <> "" Then n = [TData].Rows.Count + 1 Else n = 1
    [TData].Item(n, 1) = Sheets("Calendrier").Cells(8, Target.Column)'date
    [TData].Item(n, 2) = Sheets("Calendrier").Range("C4").Value
    [TData].Item(n, 3) = Sheets("Calendrier").Range("C" & Target.Row)'heure'
    [TData].Item(n, 4) = Target.Interior.Color
    [TData].Item(n, 5) = Target.Value'evenement
    [TData].Item(n, 6) = Target.Row
    [TData].Item(n, 7) = Target.Column
    [TData].Item(n, 8) = Target.Row + Selection.Rows.Count - 1 'Selection.Cells(1, 1).Row + Selection.Rows.Count - 1
    [TData].Item(n, 9) = Target.Column + Selection.Columns.Count - 1 'Selection.Cells(1, 1).Column + Selection.Columns.Count - 1
  End If
End Sub
La 2ème macro affiche le planning
Code:
Sub affplanning()
  Dim lig As Integer, col As Integer, i As Long, dc As Integer 'déclaration des variables'
  dc = Sheets("Calendrier").Cells(9, Columns.Count).End(xlToLeft).Column'derniere colonne
  ctrl = True'pour ne pas lancer la 1ere macro lors de la mise à jour du planning
  Range("D10:AH29").ClearContents'efface le planning
  Range("D10:AH29").Interior.Pattern = xlNone'supprime les couleurs
  For i = 1 To [TData].Rows.Count 'boucle lecture des données
  'si la date de l'evenement correspond au calendrier
    If [TData].Item(i, 1) >= Sheets("Calendrier").Range("D8") And [TData].Item(i, 1) <= Sheets("Calendrier").Cells(8, dc).Value Then
     If [TData].Item(i, 2) = Sheets("Calendrier").Range("C4").Value Then 'si même nom on recopie les données
      With Sheets("Calendrier").Range(Cells([TData].Item(i, 6), [TData].Item(i, 7)), Cells([TData].Item(i, 8), [TData].Item(i, 9)))
       .Interior.Color = [TData].Item(i, 4)
       .Value = [TData].Item(i, 5)
      End With
     End If
    End If
  Next
  ctrl = False
End Sub
A+ François
 

nassimaaad

XLDnaute Nouveau
Bonjour et bienvenu sur Excel downloads
Nouvelle question=nouveau post
faire référence au post concerné si necessaire...
Oui. la première macro se déclenche quand on change une cellule du planning
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
'si modification des données en C2 à C5 affichage du planning
  If Not Intersect(Target, Range("C2:C5")) Is Nothing Then affplanning
 'Sinon enregistrement des données dans le tableau structuré de la feuille données
  If Not Intersect(Target, Range("D10:AH29")) Is Nothing And ctrl = False Then
    Dim n As Long 'derniere ligne + 1
    If [TData].Item(1, 1) <> "" Then n = [TData].Rows.Count + 1 Else n = 1
    [TData].Item(n, 1) = Sheets("Calendrier").Cells(8, Target.Column)'date
    [TData].Item(n, 2) = Sheets("Calendrier").Range("C4").Value
    [TData].Item(n, 3) = Sheets("Calendrier").Range("C" & Target.Row)'heure'
    [TData].Item(n, 4) = Target.Interior.Color
    [TData].Item(n, 5) = Target.Value'evenement
    [TData].Item(n, 6) = Target.Row
    [TData].Item(n, 7) = Target.Column
    [TData].Item(n, 8) = Target.Row + Selection.Rows.Count - 1 'Selection.Cells(1, 1).Row + Selection.Rows.Count - 1
    [TData].Item(n, 9) = Target.Column + Selection.Columns.Count - 1 'Selection.Cells(1, 1).Column + Selection.Columns.Count - 1
  End If
End Sub
La 2ème macro affiche le planning
Code:
Sub affplanning()
  Dim lig As Integer, col As Integer, i As Long, dc As Integer 'déclaration des variables'
  dc = Sheets("Calendrier").Cells(9, Columns.Count).End(xlToLeft).Column'derniere colonne
  ctrl = True'pour ne pas lancer la 1ere macro lors de la mise à jour du planning
  Range("D10:AH29").ClearContents'efface le planning
  Range("D10:AH29").Interior.Pattern = xlNone'supprime les couleurs
  For i = 1 To [TData].Rows.Count 'boucle lecture des données
  'si la date de l'evenement correspond au calendrier
    If [TData].Item(i, 1) >= Sheets("Calendrier").Range("D8") And [TData].Item(i, 1) <= Sheets("Calendrier").Cells(8, dc).Value Then
     If [TData].Item(i, 2) = Sheets("Calendrier").Range("C4").Value Then 'si même nom on recopie les données
      With Sheets("Calendrier").Range(Cells([TData].Item(i, 6), [TData].Item(i, 7)), Cells([TData].Item(i, 8), [TData].Item(i, 9)))
       .Interior.Color = [TData].Item(i, 4)
       .Value = [TData].Item(i, 5)
      End With
     End If
    End If
  Next
  ctrl = False
End Sub
A+ François
Bonjour FanFan38, je pense avoir besoin de ton aide j'ai fait un post dédié: https://excel-downloads.com/threads...ableaux-semaines-mois.20075940/#post-20582059 qui ressemble a cette demande mais je n'y arrive pas sans faire un autre onglet a compléter, j'aimerais directement modifier et effacer sur le même onglet
Peux-tu m'aider stp ?
 

Discussions similaires

Réponses
14
Affichages
723

Statistiques des forums

Discussions
312 190
Messages
2 086 040
Membres
103 105
dernier inscrit
fofana