Bonjour à tous et merci pour vos conseil qui me sont d'une grande aide.
Je fais appel à votre aide pour solutionner un problème qui me bloque depuis plusieurs semaines.
J'ai réalisé un planning annuel et hebdomadaire qui calcule automatiquement les jours de l'année, le numéro de la semaine etc...
Mon problème est le suivant : quand je change de semaine (par exemple je passe de la semaine 33 à la semaine 34) ou quand je change d'année les données inscrites (RDV etc...) ne suivent pas le changement de date. En d'autres termes je suis obligé d'effacer a chaque fois toutes les cellules a chaque changement d'année ou de semaine.
Je souhaiterai savoir comment faire en sorte que les données inscrites dans les cellules soient liées aux semaines/années, et qu'a chaque changement de semaine ou d'année les données disparaissent et se réinitialisent mais reste en mémoire (si je dois retourner sur une ancienne semaine ou année que je puisse revoir tous mes RDV).
En vous remerciant
re
Pour garder l'historique, il faut renseigner une liste, (dans ce classeur feuille data). Il suffit de choisir l'année dans la feuille planning pour que l'ensemble des informations de l'année choisie, soient renvoyées dans le planning.
La feuille planning pour l'affichage, la feuille data pour les événements, à renseigner en permanence, la feuille liste pour la structure du classeur
Le choix de l'année de la feuille planning déclenché la macro qui va afficher les événements de l'année (plus la couleur police et couleur cellule), renseigné en colonne c de la feuille data.
VB:
Sub Mise_à_jour()
Dim F1 As String, F2 As String, i As Long, COL As Integer, couleur As Variant
Dim boecran As Boolean, bobarre As Boolean, boevent As Boolean, bosaut As Boolean
Dim icalcul As Integer
F1 = Sheets("Planning").Name
F2 = Sheets("data").Name
ActiveSheet.Unprotect
'If Not Sheets(F2).Cells(1, 13) = "2" Then
'on conserve d'abord les configuations existantes
boecran = Application.ScreenUpdating
bobarre = Application.DisplayStatusBar
icalcul = Application.Calculation
boevent = Application.EnableEvents
bosaut = ActiveSheet.DisplayPageBreaks
'on force les configurations
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.Calculation = xlManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
ActiveWindow.FreezePanes = False
Application.DisplayAlerts = False
'macro ci dessous
Call fusion_no
Calculate
li = Sheets(F1).Cells(36000, 1).End(xlUp).Row
ligne = Sheets(F2).Cells(36000, 3).End(xlUp).Row
For COL = 2 To 12 Step 2
For i = 8 To 70
For i2 = 2 To ligne
If Sheets(F1).Cells(i, COL) < Sheets(F2).Cells(i2, 2) Then 'test sur l'heure de fin
If Sheets(F1).Cells(i, COL) >= Sheets(F2).Cells(i2, 1) Then 'test sur l'heure de début
Sheets(F1).Cells(i, COL).Offset(0, 1) = Sheets(F2).Cells(i2, 3) 'renvoie la colonne 3
Sheets(F1).Cells(i, COL).Offset(0, 1).Interior.Color = Sheets(F2).Cells(i2, 3).Interior.Color 'récupère la couleur cellule
Sheets(F1).Cells(i, COL).Offset(0, 1).Font.Color = Sheets(F2).Cells(i2, 3).Font.Color 'récupère la couleur police
End If
End If
Next
Next
Next
Call fusion_colonnes
'configuration restaurée
Application.ScreenUpdating = boecran
Application.DisplayStatusBar = bobarre
Application.Calculation = icalcul
Application.EnableEvents = boevent
ActiveSheet.DisplayPageBreaks = bosaut
''''''''''''''''''''''''''''''''''''''''''''''''''
Range("A4").Select
ActiveWindow.FreezePanes = True
Application.DisplayAlerts = True
MsgBox "Mise à jour terminée !"
' Else
' Sheets(F2).Select
' MsgBox "Attention, chevauchement !"
' End If
ActiveSheet.Protect
End Sub
les informations saisies dans la feuille data, colonne
Type
Lieu
Horaires
Nb heures
A payer
A récup
Etat
sont renvoyés grâce à la formule matricielle suivante (en fonction du numéro de semaine choisi)
Merci énormément pour l’énorme travail et la précieuse aide!!!
je regarde attentivement tout ça ce week end et reviens vers toi rapidement pour le chevauchement de date. Encore merci
Pour garder l'historique, il faut renseigner une liste, (dans ce classeur feuille data). Il suffit de choisir l'année dans la feuille planning pour que l'ensemble des informations de l'année choisie, soient renvoyées dans le planning.
La feuille planning pour l'affichage, la feuille data pour les événements, à renseigner en permanence, la feuille liste pour la structure du classeur
Le choix de l'année de la feuille planning déclenché la macro qui va afficher les événements de l'année (plus la couleur police et couleur cellule), renseigné en colonne c de la feuille data.
VB:
Sub Mise_à_jour()
Dim F1 As String, F2 As String, i As Long, COL As Integer, couleur As Variant
Dim boecran As Boolean, bobarre As Boolean, boevent As Boolean, bosaut As Boolean
Dim icalcul As Integer
F1 = Sheets("Planning").Name
F2 = Sheets("data").Name
ActiveSheet.Unprotect
'If Not Sheets(F2).Cells(1, 13) = "2" Then
'on conserve d'abord les configuations existantes
boecran = Application.ScreenUpdating
bobarre = Application.DisplayStatusBar
icalcul = Application.Calculation
boevent = Application.EnableEvents
bosaut = ActiveSheet.DisplayPageBreaks
'on force les configurations
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.Calculation = xlManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
ActiveWindow.FreezePanes = False
Application.DisplayAlerts = False
'macro ci dessous
Call fusion_no
Calculate
li = Sheets(F1).Cells(36000, 1).End(xlUp).Row
ligne = Sheets(F2).Cells(36000, 3).End(xlUp).Row
For COL = 2 To 12 Step 2
For i = 8 To 70
For i2 = 2 To ligne
If Sheets(F1).Cells(i, COL) < Sheets(F2).Cells(i2, 2) Then 'test sur l'heure de fin
If Sheets(F1).Cells(i, COL) >= Sheets(F2).Cells(i2, 1) Then 'test sur l'heure de début
Sheets(F1).Cells(i, COL).Offset(0, 1) = Sheets(F2).Cells(i2, 3) 'renvoie la colonne 3
Sheets(F1).Cells(i, COL).Offset(0, 1).Interior.Color = Sheets(F2).Cells(i2, 3).Interior.Color 'récupère la couleur cellule
Sheets(F1).Cells(i, COL).Offset(0, 1).Font.Color = Sheets(F2).Cells(i2, 3).Font.Color 'récupère la couleur police
End If
End If
Next
Next
Next
Call fusion_colonnes
'configuration restaurée
Application.ScreenUpdating = boecran
Application.DisplayStatusBar = bobarre
Application.Calculation = icalcul
Application.EnableEvents = boevent
ActiveSheet.DisplayPageBreaks = bosaut
''''''''''''''''''''''''''''''''''''''''''''''''''
Range("A4").Select
ActiveWindow.FreezePanes = True
Application.DisplayAlerts = True
MsgBox "Mise à jour terminée !"
' Else
' Sheets(F2).Select
' MsgBox "Attention, chevauchement !"
' End If
ActiveSheet.Protect
End Sub
les informations saisies dans la feuille data, colonne
Type
Lieu
Horaires
Nb heures
A payer
A récup
Etat
sont renvoyés grâce à la formule matricielle suivante (en fonction du numéro de semaine choisi)