Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

suppression ou renommage d'un fichier en macro

8 réponses
Avatar
DarthMac
Hello à tous, cela faisait un bail que je n'étais point venu...

après avoir recherché dans le newsgroup (j'ai tout depuis 07/2007 dans
MesNews...), je suis contraint d'exposer mon problème... mais soyons
bref :

J'ai une macro qui me permet de faire du "versionning" sur mes docs
word. Un clic et je passe du fichier pouet_2009.02.03.doc à pouet_[date
du jour en cours].doc
Je l'utilise depuis déjà longtemps..

Et voilà que je veux la modifier car désormais je formatte plutôt comme
cela : pouet v.2009.09.22.doc

Je fais le nécessaire et tout marche excepté que j'aimerais, lorsque
j'ouvre un fichier au format pouet_DATE.doc que la macro commence par
remplacer ledit fichier par pouet v.DATE.doc avant de le sauvegarder en
pouet v.AUJOURDHUI.doc

Pour l'instant, pour la partie "remplacer" j'avais envisagé le SAVEAS
suivi d'un "delete" quelconque du fichier sous son ancien nom... mais
je n'y arrive point et n'ai pas trouvé de réponse ni ici ni sur
gooogle.

Question donc :
- existe-t-il une commande de suppression d'un fichier ?
- ou alors existe-t-il une commande permettant de changer le nom du
fichier (plus directement).

Merci les experts :-)

PS : sous Word 2k3 encore...

8 réponses

Avatar
Geo
Bonjour
[ Cette réponse est faite sur le forum public Word :
news://msnews.microsoft.com/microsoft.public.fr.word ]



Pour l'instant, pour la partie "remplacer" j'avais envisagé le SAVEAS suivi d'un
"delete" quelconque du fichier sous son ancien nom... mais je n'y arrive point et n'ai
pas trouvé de réponse ni ici ni sur gooogle.

Question donc :
- existe-t-il une commande de suppression d'un fichier ?



Oui, vous aviez une chance sur deux avec Delete, manque de pot c'est
Kill

- ou alors existe-t-il une commande permettant de changer le nom du fichier (plus
directement).



Je ne crois pas.

PS : sous Word 2k3 encore...



Ca doit être tout bon.

--
A+
Avatar
DarthMac
Hello ô remarquable grand Geo !

en effet, c'était d'une évidence toute Gatesienne...

il faut dire que ma recherche dans l'aide de VBA avec :
supprimer fichier supprime effacer delete etc. n'a rien donné... et
pourtant l'instruction Kill est ainsi "développée" dans l'aide :
______________________________
Kill, instruction
Supprime des fichiers d'un disque.

Syntaxe
Kill pathname
------------------------------
on se demande pourquoi la recherche de l'aide est si efficace, non ?

Merci encore Geo et bonne nuitée à toi et paix sur toute ta descendance
!

Mac aka DarthMac, macroteur à la petite semaine ;-)


Geo a répondu très vite vite vite :
Bonjour
[ Cette réponse est faite sur le forum public Word :
news://msnews.microsoft.com/microsoft.public.fr.word ]



Pour l'instant, pour la partie "remplacer" j'avais envisagé le SAVEAS suivi
d'un "delete" quelconque du fichier sous son ancien nom... mais je n'y
arrive point et n'ai pas trouvé de réponse ni ici ni sur gooogle.

Question donc :
- existe-t-il une commande de suppression d'un fichier ?



Oui, vous aviez une chance sur deux avec Delete, manque de pot c'est Kill

- ou alors existe-t-il une commande permettant de changer le nom du fichier
(plus directement).



Je ne crois pas.

PS : sous Word 2k3 encore...



Ca doit être tout bon.


Avatar
Lotre
salut,

Avec l'objet FileSystemObject
tu peux facilement renommer des fichiers sans avoir à les ouvrir ...
et d'ailleurs, si c'est juste ça ... pas besoin de VBA
un script VBS suffit.

HB
Avatar
DarthMac
J'oubliais d'ajouter que grâce à toi ma macro est complète et
fonctionne... alors pour apporter ma ptite pierre à l'édifice, je la
livre ici. Peut être en intéressera-t-elle d'autres.

et oui, je sais, le code n'est ptet pas idéalement propre... mais j'ai
bien signé : macroteur à la petite semaine ! :-P

------------------------------------------------------
Sub SaveThisDay()
' par DarthMac, version du 23/09/2009
' Macro qui sauvegarde le document courant en retirant l'ancienne date
au format aaaa.mm.jj
' pour la remplacer par la date du jour. Si le document est nouveau, la
macro propose de l'enregistrer
' par une boite de dialogue "enregistrer sous" permettant de
sélectionner le répertoire et le nom, puis
' elle ajoute la date entre le nom et .doc

' définissons le format d'aujourd'hui d'abord
Dim This_day
This_day = Format(Now(), "yyyy.mm.dd")

' vérifions ensuite si c'est un nouveau document
If ActiveDocument.Path = "" Then
' si c'est le cas, enregistrons le en proposant la boite de dialogue
saveas
Dim dlgSaveAs As FileDialog
Set dlgSaveAs =
Application.FileDialog(FileDialogType:=msoFileDialogSaveAs)
If dlgSaveAs.Show = -1 Then
Dim vrtSelectedItem
For Each vrtSelectedItem In dlgSaveAs.SelectedItems
' on récupère de la boite de dialogue le nom complet incluant le path
vrtSelectedItem = Replace(vrtSelectedItem, ".doc", "
v." & This_day & ".doc")
' et on enregistre sans oublier de mettre aussi le nom de fichier (sans
.doc)
' en "Titre" des "Propriétés" du doc et mes initiales en "Auteur"
ActiveDocument.BuiltInDocumentProperties("title") =
Replace(vrtSelectedItem, ".doc", "")
ActiveDocument.BuiltInDocumentProperties("author") =
"FMa"
ActiveDocument.SaveAs FileName:=vrtSelectedItem
Next vrtSelectedItem
Else
End If
Else
' sinon, remplaçons l'ancienne date par aujourd'hui et sauvegardons la
nouvelle version
Dim This_doc, Date_pos, This_yearn, New_docR, New_docL,
New_doc, Date_len, OldDoc
' cherchons la date dans le nom du fichier en utilisant l'année
This_year = Format(Now(), "yyyy")
This_doc = ActiveDocument.Name
Date_len = 9
' si le fichier a l'ancien format avec _200x.xx.xx on remplace par
v.200x.xx.xx
If InStr(1, This_doc, "_2", 1) Then
ChangeFileOpenDirectory ActiveDocument.Path
ActiveDocument.SaveAs
FileName:=Replace(ActiveDocument.Name, "_", " v.")
' et on supprime l'ancien avec underscore
OldDoc = This_doc
This_doc = ActiveDocument.Name
End If
' si le nom du fichier contient une date complète (sinon ça plante
' et je n'ai pas encore résolu ça), récupérons la position de la date
For c = This_year To 2000 Step -1
Date_pos = InStr(1, This_doc, c & ".", 1)
If Date_pos <> 0 Then Exit For
Next c
' pas de position => pas de date, alors changeons le nom de XXX.doc en
XXX v.[anciennedate].doc
If Date_pos = 0 Then
Dim LastDate
LastDate =
Left(ActiveDocument.BuiltInDocumentProperties("Last save time"), 10)
LastDate = " v." & Replace(LastDate, "/", ".")
Date_pos = Len(This_doc) - 3
Date_len = -1
' et on enregistre sans oublier de mettre aussi le nom de fichier (sans
.doc)
' en "Titre" des "Propriétés" du doc et mes initiales en "Auteur"
ChangeFileOpenDirectory ActiveDocument.Path
ActiveDocument.SaveAs
FileName:=Replace(ActiveDocument.Name, ".doc", LastDate & ".doc")
' et supprimons l'ancien XXX.doc
OldDoc = This_doc
' et préparons la date du jour pour le format d'enregistrement
This_day = " v." & This_day
End If
' on compose le nouveau nom (ancien nom avec date à jour
New_docL = Left(This_doc, Date_pos - 1)
New_docR = Right(This_doc, Len(This_doc) - Date_pos -
Date_len)
New_doc = New_docL & This_day & New_docR

' et on enregistre sans oublier de mettre aussi le nom de fichier (sans
.doc)
' en "Titre" des "Propriétés" du doc et mes initiales en "Auteur"
ActiveDocument.BuiltInDocumentProperties("title") =
Replace(New_doc, ".doc", "")
ActiveDocument.BuiltInDocumentProperties("author") = "FMa"
ChangeFileOpenDirectory ActiveDocument.Path
ActiveDocument.SaveAs FileName:=New_doc
This_doc = ActiveDocument.Name
' et dans les cas de fichiers sous ancien format on ferme le fichier
nouvellement
' sauvegardé pour pouvoir supprimer l'ancien (sinon il reste
curieusement actif)
If OldDoc Then
ActiveDocument.Close
Kill (OldDoc)
Documents.Open (This_doc)
End If
End If

End Sub
Avatar
JièL
Bonjour

DarthMac a écrit :
Hello à tous, cela faisait un bail que je n'étais point venu...



J'ai une macro qui me permet de faire du "versionning" sur mes docs
word. Un clic et je passe du fichier pouet_2009.02.03.doc à pouet_[date
du jour en cours].doc
Je l'utilise depuis déjà longtemps..



une question d'AMIS (Anti Macro Inutilement Superfétatoire) ;-) : la
fonction "Version" de Word ne vous convient pas ? et pourquoi svp ?

Merci

--
JièL / Jean-Louis GOUBERT
La FAQ Outlook est là : http://faq-outlook.fr/

Boycott des questions venant de CDO
http://faq-outlook.fr/viewpage.php?page_id=2
Avatar
DarthMac
Bonjour JièL

flatté d'être questionné par l'Illustre :-)

il est vrai que je ne connais pas bien cette fonction mais il ne me
semble pas qu'elle puisse me permettre d'un clic de faire ce que je
fais là. En l'occurence, l'important est que la date de version soit
visuelle dans le nom du fichier. Je ne cherche pas spécialement à
savoir ce qui a été modifié par qui et quand. Les documents chez nous
transitent pas mal et lorsqu'un doc me revient, je sais tout de suite à
quelle date je l'avais enregistré et si de mon côté ce même fichier a
subit des évolutions ou pas. Donc au risque de me répetter, en voyant
le fichier dans un répertoire ou dans un mail, à son nom, j'ai l'info
souhaitée.

"Versions" me permettrait-il cela ?

cordialement,

Mac


JièL avait énoncé :
Bonjour

DarthMac a écrit :
Hello à tous, cela faisait un bail que je n'étais point venu...



J'ai une macro qui me permet de faire du "versionning" sur mes docs word.
Un clic et je passe du fichier pouet_2009.02.03.doc à pouet_[date du jour
en cours].doc
Je l'utilise depuis déjà longtemps..



une question d'AMIS (Anti Macro Inutilement Superfétatoire) ;-) : la fonction
"Version" de Word ne vous convient pas ? et pourquoi svp ?

Merci


Avatar
JièL
Hello

DarthMac a écrit :
Bonjour JièL

flatté d'être questionné par l'Illustre :-)



Illustre quoi ? Illustre grande g*** ? ;-))))))))

il est vrai que je ne connais pas bien cette fonction mais il ne me
semble pas qu'elle puisse me permettre d'un clic de faire ce que je fais
là. En l'occurence, l'important est que la date de version soit visuelle
dans le nom du fichier. Je ne cherche pas spécialement à savoir ce qui a
été modifié par qui et quand. Les documents chez nous transitent pas mal
et lorsqu'un doc me revient, je sais tout de suite à quelle date je
l'avais enregistré et si de mon côté ce même fichier a subit des
évolutions ou pas. Donc au risque de me répetter, en voyant le fichier
dans un répertoire ou dans un mail, à son nom, j'ai l'info souhaitée.



"Versions" me permettrait-il cela ?



Pas exactement... En fait le fichier garde son nom d'origine (ce qui
évite d'en avoir plusieurs qui deviennent obsolètes), mais effectivement
toutes les versions sont bien dans un seul et même fichier et Word à une
fonction permettant de les comparer côte à côte, le tout étant d'avoir
le besoin de ce qu'il propose, mais la il faudrait analyser un peu plus
tes besoins et la fonction (menu Fichier, Version

Merci pour ta réponse, ça m'intéresse toujours de voir pourquoi telle ou
telle fonction n'est pas utilisée.

cordialement,



De même ;-)

--
JièL / Jean-Louis GOUBERT
La FAQ Outlook est là : http://faq-outlook.fr/

Boycott des questions venant de CDO
http://faq-outlook.fr/viewpage.php?page_id=2
Avatar
DarthMac
JièL vient de nous annoncer :

Pas exactement... En fait le fichier garde son nom d'origine (ce qui évite
d'en avoir plusieurs qui deviennent obsolètes), mais effectivement toutes les
versions sont bien dans un seul et même fichier et Word à une fonction
permettant de les comparer côte à côte, le tout étant d'avoir le besoin de ce
qu'il propose, mais la il faudrait analyser un peu plus tes besoins et la
fonction (menu Fichier, Version

Merci pour ta réponse, ça m'intéresse toujours de voir pourquoi telle ou
telle fonction n'est pas utilisée.



hello again,

je confirme que mon besoin est plus de voir si le .doc que j'ai est
bien le dernier que de voir les différences textuelles entre version...

Pour ce qui est d'encombrer le dur avec les fichiers obsolètes (sans
liaison :-) je les balance dans un dossier work_in_progress (je
pourrais le faire avec la macro, tiens, maintenant que j'y pense ;) que
je supprime une fois que la version finale est validée/publiée etc.

Ya aussi un facteur : j'aime faire certaines choses par moi-même pour
contrôler. Par exemple, je fais à la main mes sauvergardes mensuelles
de données, je n'ai pas de synchro automatique par logiciel...

mais mais mais, je ne suis pas de ceux qui impriment leur mail,
rassure-toi ;-)

C U
Mac