je souhaiterais archiver les données d'une feuille horaire.
Je m'explique :
- j'ai crée un fichier me permettant de notifier tous mes horaires de travail, C.P, A.T, vacances scolaires …
- dans ce fichier, il y a 4 feuilles.
→ Calendrier (feuille de synthèse, vision globale des infos importantes).
→ Feuille_1 (feuille principal dans laquelle toutes les données sont détaillées).
→ Archives (feuille permettant archiver une certaine plage de données de la feuille Feuille_1 ). Cette feuille devra être masquée.
→ Sources (feuille qui contient des listes de choix présentent dans la feuille Feuille_1 ). Cette feuille restera masquer.
Une toupie dans la feuille Calendrier, me permettant d'incrémenter / décrémenter les années des tableaux des feuilles Calendrier et Feuille_1 .
Problématique :
Je souhaiterais que toutes les données (ex: 2021) de la feuille_1 comprise entre C3 : Q375 soit "stockées" dans la feuille Archives, puis restituer lorsque cette même année est sélectionnée.
Idem pour 2020, 2022 …
Dans le fichier ci-joint, j'ai utilisé ce code dans la feuille_1.
Le problème est que je ne peux plus rien écrire ou effacer.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
With Sheets("Archives")
.Cells(Application.Match([A3], .[A:A], 0), 2).Resize(373, 15) = [C3:Q375].Value 'copie les valeurs
End With
End Sub
Private Sub Worksheet_Calculate()
Application.EnableEvents = False 'désactive les évènements
With Sheets("Archives")
[C3:Q375] = .Cells(Application.Match([A3], .[A:A], 0), 2).Resize(373, 15).Value 'copie les valeurs
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
Je cherche donc des âmes charitables qui pourraient m'aider.
Private Sub Worksheet_Change(ByVal Target As Range)
With Sheets("Archives")
.Cells(Application.Match([A3], .[A:A], 0), 2).Resize(373, 15) = [C3:Q375].Value 'copie les valeurs
End With
End Sub
Private Sub Worksheet_Calculate()
Application.OnTime 1, Me.CodeName & ".MAJ" 'lancement différé pour être exécuté après Worksheet_Change
End Sub
Sub MAJ()
Application.EnableEvents = False 'désactive les évènements
With Sheets("Archives")
[C3:Q375] = .Cells(Application.Match([A3], .[A:A], 0), 2).Resize(373, 15).Value 'copie les valeurs
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
With Sheets("Archives")
.Cells(Application.Match([A3], .[A:A], 0), 2).Resize(373, 15) = [C3:Q375].Value 'copie les valeurs
End With
End Sub
Private Sub Worksheet_Calculate()
Application.OnTime 1, Me.CodeName & ".MAJ" 'lancement différé pour être exécuté après Worksheet_Change
End Sub
Sub MAJ()
Application.EnableEvents = False 'désactive les évènements
With Sheets("Archives")
[C3:Q375] = .Cells(Application.Match([A3], .[A:A], 0), 2).Resize(373, 15).Value 'copie les valeurs
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
De cette manière la macro MAJ s'exécute après Worksheet_Change.