Macro Word pour ouvrir et enregistrer sous

Résolu
Mimiebleu Messages postés 5 Date d'inscription vendredi 21 octobre 2011 Statut Membre Dernière intervention 21 octobre 2011 - 21 oct. 2011 à 09:23
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 21 oct. 2011 à 17:10
Bonjour,
Je suis novice en macro alors j'espère que mes explications seront assez claires.
J'ai fait sous Word 2007(Windows XP)un genre de "bibliothèque" de documents accessibles par des macros (boutons de commande) ce sont des fichiers word, excel ou pdf. J'arrive à faire ouvrir tous mes fichiers en lecture seule par ces boutons mais je voudrais que lorsqu'ils s'ouvrent, la boite de dialogue "enregistrer sous" s'ouvre et dans un dossier bien précis, autre que celui où sont tous mes fichiers. Tous mes documents sont dans un dossier caché mais lorsque je fais enregistrer sous, la boite s'ouvre dans le dossier caché.

voici les macros créées pour chaque fichier (pdf, word et excel):

Private Sub CommandButton4_Click()
Shell "cmd /c start acrord32.exe ""\\192.168.150.1\travaux\• TRAVAUX - Procédures et document types\DOSSIER\2 - CORRESPONDANCE\BORDEREAU ENVOI DOC.pdf"""
End Sub
--------------------------------------
Private Sub CommandButton5_Click()
Documents.Open FileName:="\\192.168.150.1\travaux\• TRAVAUX - Procédures et document types\DOSSIER\2 - CORRESPONDANCE\TELECOPIE.doc", ReadOnly:=True
End Sub
-----------------------------------------
Private Sub CommandButton6_Click()
Set appXl = CreateObject("Excel.Application")
appXl.Visible = True
Set Wb = appXl.Workbooks.Open("\\192.168.150.1\travaux\• TRAVAUX - Procédures et document types\DOSSIER\2 - CORRESPONDANCE\BORDEREAU ENVOI PLAN.xls", ReadOnly:=True)
End Sub

J'ai bien trouvé une ligne de commande pour l'enregistrement sous dans le dossier que je veux mais je ne sais pas comment faire pour l'associer à chaque macro et je ne sais pas si c'est la bonne :

Sub enregistrer()
ChangeFileOpenDirectory "\\192.168.150.1\travaux"
Dialogs(wdDialogFileSaveAs).Show
End Sub


Merci d'avance pour l'aide que vous pourrez m'apporter.

11 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 oct. 2011 à 16:30
tu es peut-être totalement- débutant, mais c'est une raison supplémenteire pour lire ce que t'en dit ton aide VBA, non ?
Bon ===>>
Private Sub CommandButton3_Click()
    Documents.Open FileName:="C:\TRAMES\2 - CORRESPONDANCE\TELECOPIE.doc", ReadOnly:=True
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogSaveAs)
    With fd
     .InitialFileName =  "C:\DIVERS"
     .Show
     .Execute
    End With
End Sub

Pour ton information : n'utilisant que TRES rarement Word, j'ai, pour te répondre, moi-même ouvert l'aide VBA de Word


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 oct. 2011 à 09:56
Salut

Si tu es sous Word, le "Enregistrer sous" ne fonctionnera que pour les objets gérés par Word, pas pour le fichier Excel et encore moins pour le PDF.

Pour Excel, il faut s'adresser au classeur "Wb" (qui n'est pas dimensionné) ou à son application (qui est dimensionné dans une Sub, donc qui disparaitra à la fin de son exécution).
Il te faut déclarer proprement tes objets et mettre ces déclarations dans la partie "Déclarations" de ta page de code Word.
Il faudra ensuite utiliser des commandes Excel pour sauver un fichier Excel.
La commande de changement de répertoire, elle, reste commune, mais les commandes Dialogs doivent être adressées à l'application Excel.

Pour PDF, je pense que tu ne peux faire qu'une copie du fichier.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 oct. 2011 à 09:59
PS : Les constantes comme wdDialogFileSaveAs sont des constantes Word. Pour avoir accès aux constantes de Excel, il faut ajouter une référence à Excel dans ton projet (menu VBA "Projet", "Références")
0
Mimiebleu Messages postés 5 Date d'inscription vendredi 21 octobre 2011 Statut Membre Dernière intervention 21 octobre 2011
21 oct. 2011 à 10:38
Merci de ta réponse mais là ça devient trop compliqué pour moi.
N'ayant suivi aucune formation, je ne connais rien au langage utilisé pour les macros.
Je pense que je vais me contenter de ce que j'ai et laisser tomber le fait "d'enregistrer sous" par macro.
Merci encore et bonne journée
Mimiebleu
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 oct. 2011 à 10:46
Bonjour,

Rien se saurait t'empêcher d'agir "directement" à l'aide :
De l'instruction Name (si tu restes dans le même lecteur)
ou de l'instruction FileCopy (qui te permet de copier y compris vers un autre lecteur). Assortie de l'instruction Kill (si tu veux faire disparaître le fichier copié, après copie)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Mimiebleu Messages postés 5 Date d'inscription vendredi 21 octobre 2011 Statut Membre Dernière intervention 21 octobre 2011
21 oct. 2011 à 13:12
Bonjour,
J'ai essayé Filecopy mais cela enregistre directement le fichier sans ouvrir la boite de dialogue "Enregistrer sous" donc cela ne permet pas aux utilisateurs de choisir le nom du fichier et de changer l'emplacement s'ils le veulent.
J'ai utilisé cette ligne (que j'ai trouvé sur internet) :
FileCopy "C:\MESDOC\PERSO\TELECOPIE.doc", "C:\TELECOPIE.doc"
Pour Name, je n'ai pas trouvé comme l'utiliser.
Désolée, je n'y connais vraiment rien, je me débrouille seulement avec ce que je trouve sur internet et je teste.
De toutes façons, je ne suis pas sûre que ce que je souhaite est vraiment réalisable.
Merci quand même de ton aide.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 oct. 2011 à 13:26
Où est ton problème ?
Rien ne t'empêche d'ouvrir ta boite de dialogue, d'y faire ton choix, puis de te servir du choix fait pour l'utiliser dans FileCopy !
En te rappelant que cette boîte de dialogue ne fait rien d'autre (elle ne sauvegarde rien d'elle-même) que de te permettre de choisir un emplacement et un nom de fichier avec son extension.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 oct. 2011 à 13:57
Allons !
regarde :
Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogSaveAs)
    fd.Show
    MsgBox fd.SelectedItems(1) & vbvcrlf & " mais pas encore enregistré. je n'en connais à cxe niveau que " & _
    "le chemin et le nom, que je peux utiliser à ma guise où et quand je le veux !"

exécute ===>> choisis un répertoire et colles-y un nom de fichier ===>> clique sur enregistrer ===>> lis.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Mimiebleu Messages postés 5 Date d'inscription vendredi 21 octobre 2011 Statut Membre Dernière intervention 21 octobre 2011
21 oct. 2011 à 15:27
Je suis désolée, comme je l'ai dit je suis vraiment inculte en ce qui concerne les macros, j'ai essayé ce que tu m'as donné mais je ne sais pas quoi en faire. C'est vrai que je n'y comprends vraiment rien. Je suis super nulle
Tout ce que j'ai réussi à faire jusqu'à présent ce n'est qu'en recopiant des macros que j'ai trouvé sur internet, donc lorsque ça se complique je suis perdue.

En fait pour résumé, pour l'instant j'ai cette macro (un bouton de commande qui est sur un fichier Word nommé "CORRESPONDANCE.DOC":
Private Sub CommandButton3_Click() 
Documents.Open FileName:="C:\TRAMES\2 - CORRESPONDANCE\TELECOPIE.doc", ReadOnly:=True 
End Sub 

Donc lorsque l'on clique sur le bouton, mon fichier "TELECOPIE.DOC" s'ouvre en lecture seule.
Je voudrais pouvoir rajouter une ou plusieurs lignes pour que dès l'ouverture de ce fichier, la boite de dialogue 'Enregistrer Sous' s'ouvre dans le répertoire suivant : "C:\DIVERS" et que l'utilisateur puisse le nommer comme il le veut et où il veut mais sans être dans le dossier TRAMES. Sachant que le dossier TRAMES est un dossier caché.

Je vous remercie tous pour l'aide que vous avez essayé de m'apporter mais je ne connais vraiment rien au langage VB. C'est compliqué pour moi d'essayer d'expliquer par écrit ce que je souhaiterai et surtout d'essayer d'appliquer ce qu'on me propose sans connaitre les bases.
0
Mimiebleu Messages postés 5 Date d'inscription vendredi 21 octobre 2011 Statut Membre Dernière intervention 21 octobre 2011
21 oct. 2011 à 16:56
Merci beaucoup ucfoutu !
c'est exactement ce que je cherchais.
Je suis vraiment désolée, je dois te paraître vraiment nulle mais je n'aurais jamais trouvé ce que tu m'as donné comme code, même en allant sur l'aide (j'ai bien essayé mais pour moi tout ça c'est du "chinois"). D'ailleurs j'ai appliqué ce que tu m'as donné mais je ne sais même pas comment fonctionne la macro.
En tout cas un grand merci à toi, je suis vraiment contente surtout après le temps que j'ai passé à chercher. Merci.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 oct. 2011 à 17:10
même en allant sur l'aide (j'ai bien essayé mais pour moi tout ça c'est du "chinois"

Heu ...
Voilà pourtant la toute première chose que j'y ai lu :
Dans le cas des boîtes de dialogue Ouvrir et Enregistrer sous, utilisez la méthode Execute juste après la méthode Show pour accomplir l'action prévue initiée par l'utilisateur.

Et ce n'est pas du chinois, mais du très bon français (très clair, même, pour une fois)
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Rejoignez-nous