OVH Cloud OVH Cloud

syntaxe SheetChange et BeforeSave

2 réponses
Avatar
gaston
bonjour !=20
j'ai un classeur avec 3 feuilles, et dans chacune, une=20
forme automatique nomm=E9e "Rectangle 1". La macro suivante,=20
mise dans le code de thisWorkbook enregistre la date du=20
jour, dans le Rectangle 1 d'une feuille, d=E8s qu'on la=20
modifie:

Private Sub Workbook_Sheetchange(ByVal Sh As Object, ByVal=20
Target As Range)
ActiveSheet.Shapes("Rectangle=20
1").TextFrame.Characters.Text =3D Format(Now, "dd/mm/yyyy=20
hh:mm:ss")
End Sub

Or je voudrais que la date ne s'inscrive que lorsqu'on=20
enregistre. J'ai donc essay=E9 avec ceci:

Private Sub Workbook_Beforesave(ByVal Sh As Object, ByVal=20
Target As Range)
ActiveSheet.Shapes("Rectangle=20
1").TextFrame.Characters.Text =3D Format(Now, "dd/mm/yyyy=20
hh:mm:ss")
End Sub

mais cela m'indique que "la d=E9claration de la proc=E9dure ne=20
correspond pas =E0 la description de l'=E9v=E8nement ou de la=20
proc=E9dure de m=EAme nom".=20
Ma question est la suivante:
Quelle est la syntaxe =E0 utiliser ?
2=E8me question:
je voudrais la date s'inscrive, pr=E9c=E9d=E9e des mots "date de=20
derni=E8re modification:" et je n'y arrive pas...

2 réponses

Avatar
gaston
bon j'ai trouvé qu'il fallait mettre ceci en déclaration
pour que cela fonctionne:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,
Cancel As Boolean)
mais mon problème est que cela ne marque la date que sur
la feuille qui était active au moment où on enregistre.
Comment faire pour que cela se fasse sur toutes les
feuilles qui ont été modifiées ?
et puis reste ma 2ème question


-----Message d'origine-----
bonjour !
j'ai un classeur avec 3 feuilles, et dans chacune, une
forme automatique nommée "Rectangle 1". La macro
suivante,

mise dans le code de thisWorkbook enregistre la date du
jour, dans le Rectangle 1 d'une feuille, dès qu'on la
modifie:

Private Sub Workbook_Sheetchange(ByVal Sh As Object,
ByVal

Target As Range)
ActiveSheet.Shapes("Rectangle
1").TextFrame.Characters.Text = Format(Now, "dd/mm/yyyy
hh:mm:ss")
End Sub

Or je voudrais que la date ne s'inscrive que lorsqu'on
enregistre. J'ai donc essayé avec ceci:

Private Sub Workbook_Beforesave(ByVal Sh As Object, ByVal
Target As Range)
ActiveSheet.Shapes("Rectangle
1").TextFrame.Characters.Text = Format(Now, "dd/mm/yyyy
hh:mm:ss")
End Sub

mais cela m'indique que "la déclaration de la procédure
ne

correspond pas à la description de l'évènement ou de la
procédure de même nom".
Ma question est la suivante:
Quelle est la syntaxe à utiliser ?
2ème question:
je voudrais la date s'inscrive, précédée des mots "date
de

dernière modification:" et je n'y arrive pas...
.



Avatar
papou
Bonjour
Pour répondre à tes deux questions et intégrer ta condition (ton autre
message)
Private Sub Workbook_Sheetchange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
Sh.Shapes("Rectangle 1").TextFrame.Characters.Text = "Date de dernière
modification : " & Format(Now, "dd/mm/yyyy hh:mm:ss")
If Err Then Msgbox "Pas d'objet Rectangle 1 dans la feuille", vbinformation,
"Erreur"
End Sub

Cordialement
Pascal

"gaston" a écrit dans le message de
news: 4a5e01c42c3b$99734ee0$
bon j'ai trouvé qu'il fallait mettre ceci en déclaration
pour que cela fonctionne:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,
Cancel As Boolean)
mais mon problème est que cela ne marque la date que sur
la feuille qui était active au moment où on enregistre.
Comment faire pour que cela se fasse sur toutes les
feuilles qui ont été modifiées ?
et puis reste ma 2ème question


-----Message d'origine-----
bonjour !
j'ai un classeur avec 3 feuilles, et dans chacune, une
forme automatique nommée "Rectangle 1". La macro
suivante,

mise dans le code de thisWorkbook enregistre la date du
jour, dans le Rectangle 1 d'une feuille, dès qu'on la
modifie:

Private Sub Workbook_Sheetchange(ByVal Sh As Object,
ByVal

Target As Range)
ActiveSheet.Shapes("Rectangle
1").TextFrame.Characters.Text = Format(Now, "dd/mm/yyyy
hh:mm:ss")
End Sub

Or je voudrais que la date ne s'inscrive que lorsqu'on
enregistre. J'ai donc essayé avec ceci:

Private Sub Workbook_Beforesave(ByVal Sh As Object, ByVal
Target As Range)
ActiveSheet.Shapes("Rectangle
1").TextFrame.Characters.Text = Format(Now, "dd/mm/yyyy
hh:mm:ss")
End Sub

mais cela m'indique que "la déclaration de la procédure
ne

correspond pas à la description de l'évènement ou de la
procédure de même nom".
Ma question est la suivante:
Quelle est la syntaxe à utiliser ?
2ème question:
je voudrais la date s'inscrive, précédée des mots "date
de

dernière modification:" et je n'y arrive pas...
.