Message de modification fichier excel

Résolu
avyrex1926
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
- 2 janv. 2007 à 14:19
avyrex1926
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
- 2 janv. 2007 à 23:11
Bonjour à tous,

J'ai un fichier excel, que je dois remplire régulièrement en entrant des données.

J'ai des onglets avec le nom de tous les mois de l'années.

Je voudrait crée un message à l'ouverture du document me disant la derniere journée et l'heure qu'il y a eu des modifications dans le document.

Pas pour une ouverture du document mais bien un rajout dans une celule du document.

Est-ce réalisable?

merci beaucoup de votre aide!!!

15 réponses

mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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

~ <small> [code.aspx?ID=39466 Mortalino] </small>
~

@++

<hr size ="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
3
avyrex1926
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
2 janv. 2007 à 14:48
Une exemple de message du genre:

msg = "Dernière modification éffectué le 1 janvier 2007 à 13:30?"
0
avyrex1926
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
2 janv. 2007 à 15:40
re-bonjour,

Je me suis rendu jusque ici:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Range("F1").Select
ActiveCell.Value = "Dernière mise à jour le " & Format(Date, "dd/mm/yyyy") & " " & Time

End Sub

par contre même si je ne fait aucun changement dans le dossier, la date change.

Je veux que la date change seulement si j'ai écrit quelque chose dans une célule du fichier excel
0
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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 #
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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

~ <small> Mortalino </small> ~

@++

<hr width ="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
avyrex1926
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
2 janv. 2007 à 21:04
Merci [auteurdetail.aspx?ID=647037 mortalino]

Mon dernier problème est que la date change même s'il n'y a pas eu de rajourt d'info dans un des onglets

Y'a t_il une façon que la date change seulement dans ce temps là?

J'ai essaié avec quelque chose comme ça mais sans résultat car il me donne une erreur dans « if fichiermodifier = True»:
<hr size="2" width="100%" />

PrivateSub Workbook_BeforeClose(Cancel AsBoolean)
if fichiermodifier = True
Sheets("ACCUEIL").Select
ActiveSheet.Unprotect
Range("E1").Select
ActiveCell.Value = "Dernière mise à jour " & " " & Format(Date, "dddd le dd mmmm yyyy") & " - " & Time
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
EndIf
EndSub
0
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
2 janv. 2007 à 21:11
Alors remplace If fichiermodifier = True par

If ThisWorkbook.Saved = True Then

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
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....
0
avyrex1926
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
2 janv. 2007 à 21:54
ça me semble vraiment interessant jmfmarques,

Comment puis-je tester çela maintenant car je suis sure que ça marcherait?
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
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.
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
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 .
0
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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"
<!--
0
avyrex1926
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
2 janv. 2007 à 22:58
je modifie le tous et je reviens

merci

en passent quand tu parle de
In french :
Si ce classeur a été sauvegardé alors

dois-je intégrer cela dans mon code?
0
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
2 janv. 2007 à 23:02
lol non, j'ai juste traduit l'instruction pour vous dire ce que ça faisait, et donc pour dire que c'était l'instruction adéquat.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
avyrex1926
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
2 janv. 2007 à 23:11
Merci beaucoup, tous fonctionne
0