[OK] Implémentation automatisée d'une date de sauvegarde
Modérateur : Modérateurs
[OK] Implémentation automatisée d'une date de sauvegarde
Bonjour et encore meilleurs voeux à tous. Mes excuses aux gens que j'ai laissé en plan. Ma santé a été défaillante un certain temps (pff les vieux !!) Le fichier qui concernait les horaires était pas mal, mais devenu depuis obsolète en ce qui me concerne. Et la sauvegarde automatisée de .doc fonctionne toujours. L'avantage par rapport aux "informations de sauvegarde" est évident, puisqu'à la fin de la session de travail on a autant de fois son texte que d'incréments.
Pour ma question, le titre dit quasiment tout : y a-t-il moyen d'implémenter automatiquement date et heure de sauvegarde à la suite d'un titre de texte avant le .doc ? Je crois me souvenir qu'au bon vieux temps du Basic et de msdos c'était possible. J'ai cherché dans les sujets du forum, je n'ai rien trouvé. Ai-je mal cherché ? SOS en tout cas.
Forme :
Montitredetexte J M A H M S .doc
Le bénéfice d'une solution de ce genre est évident pour chercher la dernière version de son texte (mettre de l'ordre chez quelqu'un d'aussi brouillon que moi, p.ex.) d'autant que cette datation dans le titre restera constante (la prochaine sauvegarde aura un titre différent puisqu'elle aura été effectuée à un autre moment) alors que la date jointe par Word se modifie automatiquement à chaque ouverture d'un fichier même si on n'a rien fait et qu'on ne sauvegarde pas.
Cordialement à tous
Max
Pour ma question, le titre dit quasiment tout : y a-t-il moyen d'implémenter automatiquement date et heure de sauvegarde à la suite d'un titre de texte avant le .doc ? Je crois me souvenir qu'au bon vieux temps du Basic et de msdos c'était possible. J'ai cherché dans les sujets du forum, je n'ai rien trouvé. Ai-je mal cherché ? SOS en tout cas.
Forme :
Montitredetexte J M A H M S .doc
Le bénéfice d'une solution de ce genre est évident pour chercher la dernière version de son texte (mettre de l'ordre chez quelqu'un d'aussi brouillon que moi, p.ex.) d'autant que cette datation dans le titre restera constante (la prochaine sauvegarde aura un titre différent puisqu'elle aura été effectuée à un autre moment) alors que la date jointe par Word se modifie automatiquement à chaque ouverture d'un fichier même si on n'a rien fait et qu'on ne sauvegarde pas.
Cordialement à tous
Max
Modifié en dernier par Maximat le 10 mars 2007, 21:07:53, modifié 2 fois.
bonjour maximat,
contente de savoir que la macro de numérotation fonctionne toujours !
je te propose donc cette nouvelle macro à mettre dans un module de normal.dot pour qu'elle soit accessible dans tous tes documents et y a plus qu'à faire un ptit bouton dans la barre d'outils pour y accéder quand tu veux enregistrer :
Attention toutefois j'ai utilisé le même séparateur que pour la macro faite précédemment c'est à dire "¤", si les deux macros doivent cohéxister, il serait bon de mettre un autre séparateur
à plus
><>
contente de savoir que la macro de numérotation fonctionne toujours !
je te propose donc cette nouvelle macro à mettre dans un module de normal.dot pour qu'elle soit accessible dans tous tes documents et y a plus qu'à faire un ptit bouton dans la barre d'outils pour y accéder quand tu veux enregistrer :
Code : Tout sélectionner
Sub MonEnregistrement()
'1 récupère le nom du fichier existant
'si pas de .doc : fichier jamais enregister on va vers FES - Ficher enregistrer sous)
'sinon test si il y a déjà une date dans le nom (utilisation d'un séparateur quelconque)
anciennom = ActiveDocument.Name 'récupère le nom actuel du document
positionextension = InStr(anciennom, ".doc") 'indique la position de l'extension .doc
If positionextension = 0 Then GoTo FES 'pas d'extension on va vers FES
'il faut virer le .doc et la date déjà existante
monnom = Left(anciennom, positionextension - 1) 'vire le .doc du nom
positionseparateur = InStr(monnom, "¤") 'indique la position du séparateur choisi ¤
If positionseparateur = 0 Then GoTo Enregistreavecnom 'si pas de séparateur, le nom n'a pas de date on va vers l'enregistrement
'on vire la date déjà existante sur le nom
monnom = Left(monnom, positionseparateur - 1)
MsgBox monnom
Enregistreavecnom: 'procédure d'enregistrement avec la date
'madate correspond à la date et monheure à l'heure actuelle et on vire les / et :
madate = Date
monheure = Time()
dateenregistrement = Left(madate, 2) & "-" & Mid(madate, 4, 2) & "-" & Right(madate, 2) & "à" & Left(monheure, 2) & "h" & Mid(monheure, 4, 2)
'nomcomplet regroupe le nom et la date
nomcomplet = monnom & "¤" & dateenregistrement
MsgBox nomcomplet
'et il ne reste plus qu'à enregistrer sous ce format là
If nomcomplet = monnom Then Exit Sub 'au cas ou l'on double clic sur le bouton enregistrement
ActiveDocument.SaveAs FileName:=nomcomplet 'on enregistre le document
Exit Sub
FES:
'monnom correspond à la boite de dialogue Input box ci-dessous
monnom = InputBox("tape le nom du document", "enregistre avec la date")
GoTo Enregistreavecnom
End Sub
à plus
><>
Pour autant que je puisse décoder ce programme, la solution semble élégante, je sais je me répète, mais c'est peut-être une perception extrasensorielle de la programmatrice .
Comme on dit chez moi: "A certains stades, il faut essayer plutôt qu'étudier !" Je me lance et je t'informerai dès que l'affaire roulera.
Ne t'inquiète pas si je ne te réponds pas avant fin de semaine prochaine, je ne serai pas "branché" systématiquement pendant quelques jours.
Merci à toi en attendant. Au fait, tu as trouvé un job depuis le temps, j'espère ?
Max
Comme on dit chez moi: "A certains stades, il faut essayer plutôt qu'étudier !" Je me lance et je t'informerai dès que l'affaire roulera.
Ne t'inquiète pas si je ne te réponds pas avant fin de semaine prochaine, je ne serai pas "branché" systématiquement pendant quelques jours.
Merci à toi en attendant. Au fait, tu as trouvé un job depuis le temps, j'espère ?
Max
Bon ben voilà
Je suis coincé à la maison pour raison de santé. Alors j'essaye de faire marcher ta suggestion. Je dois encore faire quelque chose de travers. Ma bécane est normale. Mais moi... ?
Si je pouvais abuser de ta patience je te demanderais la procédure de mise en place de cette macro. En échange je te réserve un exemplaire dédicacé de mon prochain bouquin. Normal, tu m'as aidé à rendre mon traitement de texte confortable
Cordialement et anginement,
Max
Si je pouvais abuser de ta patience je te demanderais la procédure de mise en place de cette macro. En échange je te réserve un exemplaire dédicacé de mon prochain bouquin. Normal, tu m'as aidé à rendre mon traitement de texte confortable
Cordialement et anginement,
Max
slt,
pour la 1ère question : je passe ma vie en intérim mais pour l'instant ça me va.
Pour la procédure :
1 - copie de la macro
tu ouvres Word
ALT+F11 pour accéder à VBasic
à gauche dans la partie "Projet" tu as "Normal" et "Project document 1"
sur "Normal" tu as un dossier "Modules"
clic bouton droit sur Modules + Insertion module
Dans la fenêtre de droite tu colles le code du message précédent
un coup de disquette pour enregistrer et tu fermes la fenêtre VBA
2 - mise en place d'un menu pour enregister
Sur le document word,
clic droit sur le menu + Personnaliser
Onglet "Commandes" -
Dans la liste "Catégorie" (à gauche) clic sur Macro
Dans la liste "Commandes"(à droite) reste cliqué sur "Normal.Module1.MonEnregistrement" et glisse le jusqu'à la barre des menus (à droite du ?)
Avant de Fermer tu vérifies qu'en bas de la fenêtre, il y ait bien marqué
Enregistrer dans "normal.dot"
et tu quittes Word et s'il te demande d'enregistrer normal.dot tu dis oui
et voilà
ha ! j'ai vu que j'avais laissé la boite de message qui indique le nom du document, supprime la ligne
à+
pour la 1ère question : je passe ma vie en intérim mais pour l'instant ça me va.
Pour la procédure :
1 - copie de la macro
tu ouvres Word
ALT+F11 pour accéder à VBasic
à gauche dans la partie "Projet" tu as "Normal" et "Project document 1"
sur "Normal" tu as un dossier "Modules"
clic bouton droit sur Modules + Insertion module
Dans la fenêtre de droite tu colles le code du message précédent
un coup de disquette pour enregistrer et tu fermes la fenêtre VBA
2 - mise en place d'un menu pour enregister
Sur le document word,
clic droit sur le menu + Personnaliser
Onglet "Commandes" -
Dans la liste "Catégorie" (à gauche) clic sur Macro
Dans la liste "Commandes"(à droite) reste cliqué sur "Normal.Module1.MonEnregistrement" et glisse le jusqu'à la barre des menus (à droite du ?)
Avant de Fermer tu vérifies qu'en bas de la fenêtre, il y ait bien marqué
Enregistrer dans "normal.dot"
et tu quittes Word et s'il te demande d'enregistrer normal.dot tu dis oui
et voilà
ha ! j'ai vu que j'avais laissé la boite de message qui indique le nom du document, supprime la ligne
Code : Tout sélectionner
MsgBox monnom
Précision
Salut,
Le fichier devrait simplement revenir dans le répertoire d'où je l'ai extrait. S'il s'appelle Iamzebest.doc et vient, par exemple, de C:/Ecritures/Roman/ il doit pouvoir, après le travail, et appui sur la nouvelle touche, devenir C:/Ecritures/Roman/Iamzebest*03-02-07à22h32.doc
Cordialement et encore merci
Max
P.S. : Si je réadapte le programme de "Sauvegarde automatique", quel séparateur dois-je utiliser, tu disais qu'il pourrait y avoir un problème à utiliser le même pour les deux macros ?
Le fichier devrait simplement revenir dans le répertoire d'où je l'ai extrait. S'il s'appelle Iamzebest.doc et vient, par exemple, de C:/Ecritures/Roman/ il doit pouvoir, après le travail, et appui sur la nouvelle touche, devenir C:/Ecritures/Roman/Iamzebest*03-02-07à22h32.doc
Cordialement et encore merci
Max
P.S. : Si je réadapte le programme de "Sauvegarde automatique", quel séparateur dois-je utiliser, tu disais qu'il pourrait y avoir un problème à utiliser le même pour les deux macros ?
salut,
je n'ai pas mis le code entre balise, sinon je ne peux pas modifier les couleur !
donc, il suffit de rajouter les deux lignes en rouge, la 1ère récupère le répertoire d'où provient le fichier, la suivante ajoute au nom du fichier le répertoire en question et la troisième enregistre
Sub MonEnregistrement()
'0 récupère le répertoire actuel du fichier
repertoireactuel = ActiveDocument.Path
'1 récupère le nom du fichier existant
'si pas de .doc : fichier jamais enregister on va vers FES - Ficher enregistrer sous)
'sinon test si il y a déjà une date dans le nom (utilisation d'un séparateur quelconque)
anciennom = ActiveDocument.Name 'récupère le nom actuel du document
positionextension = InStr(anciennom, ".doc") 'indique la position de l'extension .doc
If positionextension = 0 Then GoTo FES 'pas d'extension on va vers FES
'il faut virer le .doc et la date déjà existante
monnom = Left(anciennom, positionextension - 1) 'vire le .doc du nom
positionseparateur = InStr(monnom, "¤") 'indique la position du séparateur choisi ¤
If positionseparateur = 0 Then GoTo Enregistreavecnom 'si pas de séparateur, le nom n'a pas de date on va vers l'enregistrement
'on vire la date déjà existante sur le nom
monnom = Left(monnom, positionseparateur - 1)
Enregistreavecnom: 'procédure d'enregistrement avec la date
'madate correspond à la date et monheure à l'heure actuelle et on vire les / et :
madate = Date
monheure = Time()
dateenregistrement = Left(madate, 2) & "-" & Mid(madate, 4, 2) & "-" & Right(madate, 2) & "à" & Left(monheure, 2) & "h" & Mid(monheure, 4, 2)
'nomcomplet regroupe le nom et la date
nomcomplet = monnom & "¤" & dateenregistrement
'et il ne reste plus qu'à enregistrer sous ce format là
If nomcomplet = monnom Then Exit Sub 'au cas ou l'on double clic sur le bouton enregistrement
nomfinal = repertoireactuel + "\" + nomcomplet 'ajoute le répertoire en cours avec le nom
ActiveDocument.SaveAs FileName:=nomfinal 'on enregistre le document
Exit Sub
FES:
'monnom correspond à la boite de dialogue Input box ci-dessous
monnom = InputBox("tape le nom du document", "enregistre avec la date")
GoTo Enregistreavecnom
End Sub
Quant à la question subsidiaire : quel séparateur choisir ? il faut trouver un caractère qui ne sera pas utilisé de manière certaine dans un titre genure # § £ etc...
Dans la macro tu sélectionnes le texte de ta macro, tu vas dans le menu Edition Remplacer tu tapes ¤ dans la zone recherche, tu tapes le caractères que tu as choisi dans la zone remplacer et tu clic texte sélectionné et remplacer tout
à+
je n'ai pas mis le code entre balise, sinon je ne peux pas modifier les couleur !
donc, il suffit de rajouter les deux lignes en rouge, la 1ère récupère le répertoire d'où provient le fichier, la suivante ajoute au nom du fichier le répertoire en question et la troisième enregistre
Sub MonEnregistrement()
'0 récupère le répertoire actuel du fichier
repertoireactuel = ActiveDocument.Path
'1 récupère le nom du fichier existant
'si pas de .doc : fichier jamais enregister on va vers FES - Ficher enregistrer sous)
'sinon test si il y a déjà une date dans le nom (utilisation d'un séparateur quelconque)
anciennom = ActiveDocument.Name 'récupère le nom actuel du document
positionextension = InStr(anciennom, ".doc") 'indique la position de l'extension .doc
If positionextension = 0 Then GoTo FES 'pas d'extension on va vers FES
'il faut virer le .doc et la date déjà existante
monnom = Left(anciennom, positionextension - 1) 'vire le .doc du nom
positionseparateur = InStr(monnom, "¤") 'indique la position du séparateur choisi ¤
If positionseparateur = 0 Then GoTo Enregistreavecnom 'si pas de séparateur, le nom n'a pas de date on va vers l'enregistrement
'on vire la date déjà existante sur le nom
monnom = Left(monnom, positionseparateur - 1)
Enregistreavecnom: 'procédure d'enregistrement avec la date
'madate correspond à la date et monheure à l'heure actuelle et on vire les / et :
madate = Date
monheure = Time()
dateenregistrement = Left(madate, 2) & "-" & Mid(madate, 4, 2) & "-" & Right(madate, 2) & "à" & Left(monheure, 2) & "h" & Mid(monheure, 4, 2)
'nomcomplet regroupe le nom et la date
nomcomplet = monnom & "¤" & dateenregistrement
'et il ne reste plus qu'à enregistrer sous ce format là
If nomcomplet = monnom Then Exit Sub 'au cas ou l'on double clic sur le bouton enregistrement
nomfinal = repertoireactuel + "\" + nomcomplet 'ajoute le répertoire en cours avec le nom
ActiveDocument.SaveAs FileName:=nomfinal 'on enregistre le document
Exit Sub
FES:
'monnom correspond à la boite de dialogue Input box ci-dessous
monnom = InputBox("tape le nom du document", "enregistre avec la date")
GoTo Enregistreavecnom
End Sub
Quant à la question subsidiaire : quel séparateur choisir ? il faut trouver un caractère qui ne sera pas utilisé de manière certaine dans un titre genure # § £ etc...
Dans la macro tu sélectionnes le texte de ta macro, tu vas dans le menu Edition Remplacer tu tapes ¤ dans la zone recherche, tu tapes le caractères que tu as choisi dans la zone remplacer et tu clic texte sélectionné et remplacer tout
à+
ça marche du feu de dieu
Comme dit le titre ! Pas de problèmes. Tout fonctionne et les textes rentrent dans les répertoires idoines. J'ai transposé sur le portable qui me suit partout : nickel-chrome. J'ai essayé pendant trois jours, avec toutes les maladresses possibles, rien à dire.
Merci, et grandement, à toi
Max
PS : un souci qui n'a plus rien à voir avec cette série de questions. J'ai récemment dû reformater mon desktop. Là, j'en ai profité pour récupérer l'ancienne macro de "sauvegarde automatisée" sur le portable, et vlan ! plus rien à faire. Ce n'est certainement pas ton programme qui m... ça doit être moi qui ne pige pas les procédures d'installation. Mais je ne veux pas abuser de ton temps avec mes maladresses, l'essentiel est que les deux macros soient fonctionnelles sur le portable.
Encore merci
M
Merci, et grandement, à toi
Max
PS : un souci qui n'a plus rien à voir avec cette série de questions. J'ai récemment dû reformater mon desktop. Là, j'en ai profité pour récupérer l'ancienne macro de "sauvegarde automatisée" sur le portable, et vlan ! plus rien à faire. Ce n'est certainement pas ton programme qui m... ça doit être moi qui ne pige pas les procédures d'installation. Mais je ne veux pas abuser de ton temps avec mes maladresses, l'essentiel est que les deux macros soient fonctionnelles sur le portable.
Encore merci
M
bonjour,
merci cemp,
quant à toi maximat,
je te rappelle que sur la macro de numérotation des documents tu as deux parties distinctes
une partie dans : "This document" avec 3 macros
une partie dans : "module" avec 2 macros
je ne sais pas comment tu as fait pour transférer la macro ! mais est-ce que les 5 ont bien été transférés ?
><>
merci cemp,
quant à toi maximat,
je te rappelle que sur la macro de numérotation des documents tu as deux parties distinctes
une partie dans : "This document" avec 3 macros
une partie dans : "module" avec 2 macros
je ne sais pas comment tu as fait pour transférer la macro ! mais est-ce que les 5 ont bien été transférés ?
><>
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités