Equivalence VBA dans Word

  • Initiateur de la discussion Initiateur de la discussion Fab117
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Fab117

XLDnaute Impliqué
Salut,
Je suis en train de préparer une macro, qui à la fermeture d'un fichier Excel m'enregistre une copie dans un répertoire donné.
Voici le code actuel :

Dans ThisWorkbook :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' Quitte la macro si je ne suis pas l'utilisateur
'If Application.UserName <> "Toto" Then Exit Sub
Dossier = "H:\DATA\GF\Tmp\Dev macro enregistrement copie\2\"
Count = Len(ActiveWorkbook.Name)
Nom = Left(ActiveWorkbook.Name, Count - 4)
strDate = Format(Date, "dd-mm-yy") & " - " & Format(Time, "h-mm-ss")
ThisWorkbook.SaveCopyAs Filename:=Dossier & Nom & " - " & strDate & ".xls"
End Sub

La raison de ce message est que je voudrais faire pareil avec des fichiers Word. Mais je ne connais pas certaines correspondances pour Word.
J'ai remplacé "Workbook" par "Document", mais il bloque sur ThisDocument.SaveCopyAs

Quelqu'un aurait-il svp la solution ?

Fab
 
Re : Equivalence VBA dans Word

Salut,

Sans avoir testé, je dirai un truc de ce genre :
Code:
Private Sub Document_Close()
' Quitte la macro si je ne suis pas l'utilisateur
'If Application.UserName <> "Toto" Then Exit Sub
Dossier = "H:\DATA\GF\Tmp\Dev macro enregistrement copie\2\"
Count = Len(ActiveWorkbook.Name)
Nom = Left(ActiveWorkbook.Name, Count - 4)
strDate = Format(Date, "dd-mm-yy") & " - " & Format(Time, "h-mm-ss")
ThisDocument.SaveCopyAs FileName:=Dossier & Nom & " - " & strDate & ".doc"
End Sub

@+
 
Re : Equivalence VBA dans Word

Merci pour vos réponse.

chris à dit:
Bonjour

Utilise l'enregistrement automatique macro de Word : ainsi tu auras la syntaxe qui te manque et tu pourras adapter ton code.

J'ai commencé par ça et c'est ainsi que j'ai vu qu'il fallait remplacer Workbook par Document, mais je n'ai pas trouvé toutes mes réponses.



Porcinet82, le problème vient visiblement de la ligne
ThisDocument.SaveCopyAs FileName:=Dossier & Nom & " - " & strDate & ".doc"
Il n'aime pas le SaveCopyAs


Fab
 
Re : Equivalence VBA dans Word

Merci pour ta proposition, mais le problème est que si j'oublie de sauver le document avant de quitter, il n'enregistrera les modifications que dans la copie. Il ne me proposera pas la boite de dialogue "voulez-vous enregistrer les modifications".
Il faut vraiment que ce soit une copie qu'il sauve dans le répertoire "H:\DATA\GF\Tmp\Dev macro enregistrement copie\2\"


Fab
 
Re : Equivalence VBA dans Word

re,

Essaye avec les modif suivantes :
Code:
Private Sub Document_Close()
' Quitte la macro si je ne suis pas l'utilisateur
'If Application.UserName <> "Toto" Then Exit Sub
ce_doc = ThisDocument.FullName
Dossier = "H:\DATA\GF\Tmp\Dev macro enregistrement copie\2\"
Count = Len(ActiveWorkbook.Name)
Nom = Left(ActiveWorkbook.Name, Count - 4)
strDate = Format(Date, "dd-mm-yy") & " - " & Format(Time, "h-mm-ss")
ThisDocument.SaveAs FileName:=Dossier & Nom & ".doc"
ThisDocument.SaveAs FileName:=ce_doc
End Sub

@+
 
Re : Equivalence VBA dans Word

Resalut,
Encore merci pour cette nouvelle proposition, mais là, c'est le contraire, il sauve le fichier original dans tous les cas et ça, je ne le veux pas. C'est vraiment une copie que je voudrais.

Fab
 
Re : Equivalence VBA dans Word

re,

Bon j'ai du perdre les quelques neurones que j'avais ce week a cause du soleil, et je ne saisie pas tres bien ce que tu veux. Au départ, tu voulais simplement enregistrer une copie, c'est ce que je t'ai mis, ensuite, tu dis "mais le problème est que si j'oublie de sauver le document avant de quitter" alors je te rajoute un code pour la sauvegarde et ca ne va toujours pas!!!

Je crois que quelques info ou ce que tu veux vraiment semble nécessaire parce que mes 5 neurones restant se fatigue assez vite...

@+
 
Re : Equivalence VBA dans Word

OK, pour préserver tes neurones, je recapépette tout depuis le bédut :
- Mon document officiel Word se trouve dans un répertoire commun à beaucoup de monde.
- Par sécurité, lorsque je fais une modification dessus, je veux qu'il fasse une copie dans un répertoire juste accessible à moi.

Avec tes propositions :
i) La "copie de sauvegarde" devenait la copie officielle => si je fais des modifications et que j'oublie de faire Save avant de fermer le document, les modifications n'apparaitront pas sur le document officiel, mais uniquement sur la copie.
ii) Quoique je fasse, à la fermeture du fichier, il sauvegarde toutes les modifications sans me demander mon avis => si je fais une fausse manoeuvre, je perd tout.

Dans Excel, la ligne "ThisWorkbook.SaveCopyAs ..." est idéale, car elle ne fait que dupliquer le fichier.

Voila, est-ce plus clair ?

Fab
 
Re : Equivalence VBA dans Word

Salut,

Bon, pas sur d'avoir récupéré des neurones pendant la nuit, mais en algo brouillon, si j'ai bien compris, ca donnerait un truc de ce genre :
Si Username="Toi" alors
Sauvegarde du fichier dans ton répertoire
Sauvegarde du fichier dans le répertoire commun
Sinon
Sauvegarde du fichier dans le répertoire commun
Fin de si

Dis moi si j'ai saisie la manip a faire. Si c'est le cas, je te modifierai le code.

@+
 
Re : Equivalence VBA dans Word

Ca donnerait :

Si Username="Moi" alors
A la fermeture du fichier :
Sauvegarde du fichier dans mon répertoire et
Si modifications non sauvées : boite de dialogue voulez-vous ...
Si oui, sauvegarde dans le répertoire commun
Autrement pas de sauvegarde
Fin de Si
Autrement
Si modifications non sauvées : boite de dialogue voulez-vous ...
Fin de Si

Voilà

Fab
 
Re : Equivalence VBA dans Word

Merci pour votre aide,
Voici le code complet pour le cas où ça interresserait quelqu'un d'autre.

Fab

Private Sub Document_Close()
Dim Confirmation As Long

' Quitte la macro si je ne suis pas l'utilisateur
If Environ("UserName" ) <> "Toto" Then Exit Sub

nom = ActiveDocument.Name

' Demande s'il faut enregistrer les modifications

Confirmation = MsgBox("Voulez vous enregistrer le fichier " & nom & " ? ", vbYesNo)
If Confirmation = vbYes Then
ThisDocument.Save
' Fait une copie
Dossier = "H:\DATA\GF\Gestion de projets\Circuit d'eau\Copie des documents qualite"
Count = Len(ActiveDocument.Name)
nom = Left(ActiveDocument.Name, Count - 4)
strDate = Format(Date, "dd-mm-yy" ) & " - " & Format(Time, "h-mm-ss" )

ThisDocument.SaveAs FileName:=Dossier & nom & " - " & strDate & ".doc"
End If

End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
0
Affichages
765
C
Réponses
2
Affichages
2 K
C
N
  • Question Question
Réponses
5
Affichages
3 K
Réponses
19
Affichages
3 K
S
Réponses
0
Affichages
783
SaiSai Boundao
S
Retour