Enregistrement avec nomenclature précise

Résolu/Fermé
anthonnyy - 22 févr. 2013 à 09:47
 Anthonnyy - 23 févr. 2013 à 18:16
Bonjour,

j'utilise à l'heure actuelle un document word formulaire.
Je souhaite savoir s'il existe une fonction comme dans excel permettant d'enregistrer le document sous un répertoire défini avec une nomenclature précise

voici ce que j'utilise dans excel
Dim Fichier As String 'défini le répertoire et le nom du fichier à enregister
Application.DisplayAlerts = False
Fichier = "C:\Répertoire\" & "Acceptation " & Range("F23") & "_" & Range("J23") & " " & Range("H8")
ThisWorkbook.SaveAs Fichier, xlOpenXMLWorkbook

la nomenclature du fichier sauvegardé se fait en utilisant le contenu de certaines cellules.

Dans le document word je pourrais donc insérer un objet excel mais j'ignore si ce code VBA fonctionnera vu que les cellules excel seront en tant qu'objet dans le doc word.

quelqu'un sait si ça fonctionne ou un code permettant d'obtenir le même résultat ?

merci

A voir également:

5 réponses

m@rina Messages postés 20203 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 11 mai 2024 11 279
23 févr. 2013 à 14:03
Bonjour,

Plutôt que de poser cette question, pourquoi ne testes tu pas ?

Bon, je peux néanmoins te dire que ton code est du pur Excel, et qu'il ne sera pas compris par Word.

Donc, si tu veux faire une macro permettant d'enregistrer tes fichiers avec un nom provenant d'un élément quelconque de ton doc Word, c'est possible. Reste à déterminer quel est cet élément.

m@rina
0
Bonjour,

avec excel ça semble "simple" vu que pour chaque valeur intéressante on a une cellule.
du coup à chaque fois je bascule des documents d'origine word sous leur équivalent excel en perdant parfois de la convivialité (ex : en basculant mon document type sous excel, je fais perdre aux utilisateurs la convivialité lorsqu'ils intègrent des photos. ils vont devoir jouer avec les hauteurs de lignes sous excel alors que sous word ils n'avaient rien à faire, la hauteur s'adaptait).
ne connaissant pas du tout les macros sous word pourrais tu m'expliquer comment ça fonctionne ? (système de balise devant le texte intéressant ?!)

Anthonnyy
0
m@rina Messages postés 20203 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 11 mai 2024 11 279
23 févr. 2013 à 17:29
Oui, c'est plus facile avec Excel.
D'ailleurs, pour tout, Excel est très carré contrairement à Word.

Dans Excel, tu fais référence à une cellule, c'est simple.
Dans Word, on peut faire référence à un mot (ou un groupe de mot) en fonction de sa position dans le texte. Exemple : 1er mot, troisième mot du 2e paragraphe, 3 premiers caractères du 2e mot du 5e paragraphe, etc.
Ce peut être aussi un mot pris dans un tableau (n° colonne, n° ligne).

Tout cela est valable évidemment lorsque le document Word ne change plus.

Mais on peut également utiliser des signets, ainsi que des contrôles de contenu ou champs de formulaire.

J'ai mis quelques exemples ici :
https://faqword.com/index.php/word/faq-word/vba-solutions/630
https://faqword.com/index.php/word/faq-word/vba-solutions/772
https://faqword.com/index.php/word/faq-word/vba-solutions/499

m@rina
0
j'ai essayé ceci

Private Sub Document_Close()
Dim nom As String
ChangeFileOpenDirectory "C:\Users\Thony\Desktop\à bosser\"
nom = ActiveDocument.FormFields(25).Result & " " & ActiveDocument.FormFields(1).Result
ActiveDocument.SaveAs FileName:=nom & ".doc", FileFormat:=wdFormatDocument
End Sub

j'ai fait clic droit sur mes 2 champs de formulaire, le premier porte le nom de signet "Texte25" et le second "Texte1"
alors j'ai un début de résultat mais pas satisfaisant
mon champ 1 intègre par exemple "Référence1" et mon champ 2 "FournisseurA"
j'ai bien un nouveau fichier qui s'enregistre dans le bon répertoire mais le nom de ce fichier est "0 Référence1.doc" au lieu de "Référence1 FournisseurA.doc"
aurais tu une idée du dysfonctionnement ?
0
j'ai trouvé le soucis
en fait word ne gère pas avec le nom du signet présent dans ses propriétés mais la position du signet dans le document
du coup mon signet "Texte25" est mon formfields(1) et ainsi de suite.
du coup en ayant compris ça j'obtiens mon résultat voulu.
merci de m'avoir ouvert les yeux sur les possibilités de word
0

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

Posez votre question
m@rina Messages postés 20203 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 11 mai 2024 11 279
23 févr. 2013 à 18:14
Tout d'abord, puisque tu as relevé le nom des signets, pourquoi ne les utilises-tu pas ? C'est plus sûr que de faire confiance aux index.

Sinon, je peux imaginer que le contenu de ton champ premier champ a été effacé... je ne vois pas d'autres raisons.

En tout état de cause met plutôt ceci :
nom = ActiveDocument.FormFields("texte25").Result & " " & ActiveDocument.FormFields("texte1").Result
 


Tu peux d'ailleurs remplacer les noms automatiques des signets pour avoir des mots qui veulent dire quelque chose.

m@rina
0
merci pour les conseils et de m'avoir permis de réaliser ce que je voulais
0