mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 2 janv. 2007 à 23:00
Ah et je te donnais des conseil pour limiter les instructions, libre à toi de ne pas le faire mais c'est plus rapide si tu traites 1000 cellules (j'abuse mais il faut optimiser un max), donc :
' Ta soluce :
PrivateSub Workbook_BeforeClose(Cancel AsBoolean)
if fichiermodifier = True 'manque Then et fichiermodifier on ne
'sait pas d'ou ça sort, c'est pas déclaré, du moins,
'nous on sait pas si c'est le cas dans une autre procédure
Sheets("ACCUEIL").Select
ActiveSheet.Unprotect
Range("E1").Select 'pourquoi sélectionner la cellule alors que
'tu peux lui donner la valeur directement ?
ActiveCell.Value = "Dernière mise à
jour " & "
" & Format(Date, "dddd le dd mmmm yyyy") & " - " & Time
'Après "mise à jour " t'as un espace, pourquoi en remettre un
'après ? T'en veux 2 ? Si oui, mets 2 espaces après "jour "
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
EndIf
EndSub
'=========================================================================
' Ma soluce :
PrivateSub Workbook_BeforeClose(Cancel AsBoolean)
If ThisWorkBook.Saved = True Then
Sheets("ACCUEIL").Select
ActiveSheet.Unprotect
Range("E1").Text = "Dernière mise à jour
" & _
Format(Date, "dddd
le dd mmmm yyyy") & "
- " & Time
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End Sub
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 2 janv. 2007 à 17:16
Date et Time te renvoie la date et l'heure actuelle.
si tu veux la date de la modif, il faut que tu trouve un moyen de la sauvegarder au moment de la modif. Ensuite c'est cette date sauvegardée que tu devra afficher.
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Vous n’avez pas trouvé la réponse que vous recherchez ?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 2 janv. 2007 à 19:29
Salut,
utilise BeforeSave plutôt que BeforeClose :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Range("F1").Select
ActiveCell.Value = "Dernière mise à jour le " & Format(Date, "dd/mm/yyyy") & " " & Time
' ^^ équivalent :
Range("F1").Value = "Dernière mise à jour le " & Now
End Sub
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 2 janv. 2007 à 21:33
Je n'ai pas excel, mais, si ma vielle mémoire pas trop abîmée est encore bonne, je crois me souvenir d'un défaut majeut des applications Office (toutes) :
Si l'on ouvre un fichier, que l'on ajoute part exemple la lettre "a" ou "n" ou... n'importe où et que l'on efface ce rajout, la taille du fichier enregistré est différente de sa taille originelle bien que, finalement, aucune modification n'ait été apportée (puisque supprimée).
Il ne serait donc pas totalement idiot de se servir de ce défaut- là ! La comparaison des tailles devrait permettre de savoir si le fichier a été "tripoté" puisque dans les 2 cas de figure (modification définitive ou modification ensuite annulée), la taille du fichier s'en trouve modifiée, alors qu'elle ne le serait pas si l'on se contentait d'ouvrir et de fermer le fichier....
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 2 janv. 2007 à 22:18
Sous VB, nous avons la fonction Filelen dont la syntaxe est :
FileLen(pathname)
Sous VBA, je ne sais pas (je ne travaille plus avex VBA depuis de trop nombreuses années), mais un VBAiste passera par là pour te le dire, j'en suis certain.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 2 janv. 2007 à 22:28
Maintenant ...
Si aucun spécialiste VBA ne se manifeste ou que l'équivalent de FileLen n'existe pas sous VBA (ce qui m'étonnerait), on y parviendra avec la fonction GetFileVersionInfoSize de la librairie "Version.dll", ne t'inquiète pas...
Mais laissons d'abord la parole à ceux qui connaissent VBA et nous ne l'utiliserons que si vraiment nécessaire .
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 2 janv. 2007 à 22:45
Beh moi je suis pas chaud pour faire des milliards de test alors que la syntaxe que j'ai donnée précédemment fonctionne très bien. D'autant plus que c'est pas une syntaxe que j'ai inventé, mais bel et bien une instruction VBA.
If ThisWorkBook.Saved = True Then
...
End If
In french :
Si ce classeur a été sauvegardé alors
...
De plus, si tu ne sauvegardes pas, pas d'octets en moins ou en plus...
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--