Apres quelque temps d'utilisation sans accro j'ai voulu améliorer le projet
Dans un même classeur j'ai voulu insérer le même tableau que dans la feuille 1 dans une autre feuille
mais a l'ouverture la date se modifie dans les deux tableaux mais un seul se remet a zéro
Voici le code :
VB:
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Date de dernière modif enregistrée dans le Nom (déjà créé) "DerModif"
Me.Names("DerModif").RefersTo = Date
End Sub
Private Sub Workbook_Open()
Dim WSh As Worksheet
Set WSh = Feuil1 'Feuil1 : Nom VBA de la feuille contenant les effectifs
'Si la date a changé : remise à blanc de la plage de saisie (plage nommée "PlageEffectifs")
If [DerModif] <> Date Then WSh.[PlageEffectifs].ClearContents
End Sub
Merci @sylvanu de ta participation,
Je reste perplexe devant ce bug, que je ne reproduit pas, quand la date est différente, chez moi ça efface les données... (versions 2007 et 2021 )
Amicalement
Alain
Exact, chez moi pareil sur 2007. ( facile, il suffit de faire Me.Names("DerModif").RefersTo = 0 ) et effectivement le clear a lieu.
Il faudrait que Quicksland teste ma PJ, car le bug pourrait avoir deux origines :
1- La macro Open n'est pas exécutée
2- Il trouve toujours la même date.
Si en testant cette PJ il a un msgbox c'est que la macro est exécutée.
Toujours le même problème , le fichier ne se remet pas a zéro malgré la date qui change et ceci dans les deux feuilles
Pas de msgbox a l'ouverture pour dire que la macro c'est exécutée
Pour l'essai avec une seule feuille tout fonctionne parfaitement
J'ouvre la feuille seule, je rentre des chiffres, j'enregistre et je change la date de mon ordinateur puis j'ouvre mon fichier et la date a changé et les cellules son vide
Testez ce fichier en PJ.
Il y aura un msgbox à l'ouverture du fichier.
S'il y en a pas c'est que vos macros ne sont pas activées.
S'il y a qu'un seul message "On va executer la macro Workbook_Open." et pas de second message c'est qu'une erreur s'est produite dans le IF et qu'on sort sans rien faire.
Il y a plusieurs hypothèses :
1- Les macros ne sont pas activées
2- Une feuille a été supprimée et reconstruite ( elle porte le même nom mais pas le même ID )
3- La référence DerModif a été supprimée
Ma PJ #22 devrait nous orienter.
Testez ce fichier en PJ.
Il y aura un msgbox à l'ouverture du fichier.
S'il y en a pas c'est que vos macros ne sont pas activées.
S'il y a qu'un seul message "On va executer la macro Workbook_Open." et pas de second message c'est qu'une erreur s'est produite dans le IF et qu'on sort sans rien faire.
Alors je suis reparti de zéro
J'ai mis cette macro ci dessous
Code:
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Date de dernière modif enregistrée dans le Nom (déjà créé) "DerModif"
Me.Names("DerModif").RefersTo = Date
End Sub
Private Sub Workbook_Open()
MsgBox "On va executer la macro Workbook_Open."
Dim WSh1 As Worksheet, WSh2 As Worksheet
Set WSh1 = Feuil1 'Feuil1 : Nom VBA de la feuille contenant les effectifs1
Set WSh2 = Feuil2 'Feuil2 : Nom VBA de la feuille contenant les effectifs2
'Si la date a changé : remise à blanc de la plage de saisie (plages nommées "PlageEffectifs1" et "PlageEffectifs2")
If [DerModif] <> Date Then
MsgBox "La date est différente donc clear feuilles."
WSh1.[PlageEffectifs1].ClearContents
WSh2.[PlageEffectifs2].ClearContents
Else
MsgBox "La date est identique donc ne rien faire."
End If
End Sub
J'ai bien toutes les msbox
la date change et les cellules s'efface
j'ai aussi essayer celle ci-dessous
VB:
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Date de dernière modif enregistrée dans le Nom (déjà créé) "DerModif"
Me.Names("DerModif").RefersTo = Date
End Sub
Private Sub Workbook_Open()
Dim WSh1 As Worksheet, WSh2 As Worksheet
Set WSh1 = Feuil1 'Feuil1 : Nom VBA de la feuille contenant les effectifs1
Set WSh2 = Feuil2 'Feuil2 : Nom VBA de la feuille contenant les effectifs2
'Si la date a changé : remise à blanc de la plage de saisie (plages nommées "PlageEffectifs1" et "PlageEffectifs2")
If [DerModif] <> Date Then
WSh1.[PlageEffectifs1].ClearContents
WSh2.[PlageEffectifs2].ClearContents
End If
End Sub
Bonsoir le fil
Je me penchais sur un autre problème donc pas disponible pour regarder celui-ci.
Bravo à tous !
Ce n'est pas la première fois que, en reconstruisant un classeur à l'identique (du moins en apparence) un problème qui paraissait insoluble se dissous comme par miracle.
Amicalement
Alain
Ps @Quicksland : pense à marquer, si c'est le cas, l'un des posts comme solution