VBA ouvrir un fichier word, le nommer et chemin

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
Jack35
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 28 novembre 2017
Version d'Excel : Excel2013FR

Message par Jack35 » 28 novembre 2017, 16:18

Bonjour à tous,
Première pour moi d'être sur un forum et donc première question. Grand débutant en excel et VBA j'ai lu avec attention de nombreuses réponses sur les forums et vu des démonstrations de procédures sur youtube pour en arriver à ma question : j'ai un ensemble de feuilles de calculs répétitifs pour chaque client,. J'ai donc désigné une feuille de récapitulation par client.
Je souhaiterai que les résultats regroupés sur une plage de cellules de cette feuille soient transposés dans un fichier word modèle qui ne comporte que l'entête de l'expéditeur que j'ai pensé mettre en entête de page avec la date automatique.
je ne souhaite pas faire de publipostage puisque le résultat est différent pour chaque client...
J'ai créé un répertoire base de données des noms et adresse dans mon classeur excel et tout est dans le même classeur.

je souhaiterais....
1 que le nom du fichier word soit déterminé à partir de la feuille excel dont je recopie la plage de cellule : il faudrait que ce soit le nom de la feuille appelée L1+le nom du client. ca dans 2 cellules sans doute???
2 que ce fichier word se range de lui-même dans le dossier créé initialement qui est au nom du client, le chemin devrait donc être r appelé par une liste déroulante dans une cellule sur ma feuille excel qui contient les plages à recopier

j'ai écrit dessous ce que ca fait pour l'instant : ca me créer un fichier word, ca copie les plages dans le fichier mais je ne sais pas comment lui dire que c'est tel modèle que je souhaite appeler donc ca va dans un fichier basique puis ca s'enregistre dans mes documents et avec un deuxième bouton ca s'écrase dans mes documents et ca repart dans le bon dossier suivant le chemin que j'ai indiqué dans l'ex ci dessous sauf que ce chemin doit être une variable en liste déroulante en cellules à partir de GRANDCHAMPS\ jACOB (étant ici le nom du dossier et la fin du nom du fichier qui est donc L1Jacob comme j'ai essayé de l expliquer

et je ne sais pas comment gérer l'adresse du destinataire du fichier word j'avais pensé faire apparaître le nom avec l'adresse dans l'ensemble des plages à recopier
il n'y a pas mieux?

et est ce qu'on peut prévoir plusieurs plages à recopier sur le même document si oui comment fait on pour qu'il comprenne où i doit les mettre?

j'ai trouvé des sujets pour renommer des fichiers xls mais je suis perdu avec un tas de manipulations que je n'ai pas réussi à mettre en application dans le cas que je viens de citer pas vu d'exemple sur ce sujet....

Merci pour votre aide, si c'est mal formulé merci de me l'indiquer aussi etc...

Private Sub CbnexcelcopieL1word_Click()
Dim Word

Set Word = CreateObject("Word.Application")
Word.Documents.Add
Word.Visible = True ' le fichier ne s'affiche pas, True il apparait
Range("B17:F28").Copy
Word.Selection.PasteExcelTable False, False, False
Application.CutCopyMode = False


Set Word = Nothing
End Sub

Private Sub renommeretrangerfichier()
Dim GestionFichier As New Scripting.FileSystemObject
GestionFichier.MoveFile "C:\Users\Fab\Documents\liq.docx", "C:\Users\Fab\Desktop\Je Pilote\Archives Je pilote\Grandchamp\JACOB\l1Jacob.docx"
'suppirme le fichier créé qui s'est rangé lors de sa fermeture dans les documents avant d'être rebapisé et de repartir dans le dossier voulu
On Error Resume Next ' on Error Resume Next, puis , True en fin de l'exécution et On Error GoTo 0_
'permet d'éviter le message d'erreur de window car je veux vraiment l'effacer'
GestionFichier.DeleteFile "C:\Users\Fab\Documents\liq.docx", True
On Error GoTo 0
Set GestionFichier = Nothing
End Sub
Avatar du membre
Kit
Membre fidèle
Membre fidèle
Messages : 150
Appréciations reçues : 2
Inscrit le : 13 janvier 2017
Version d'Excel : 2016 FR

Message par Kit » 28 novembre 2017, 16:32

Hi, (et bienvenue)

Si j'ai bien compris ton soucis c'est pour nommer et enregistrer un fichier word à un endroit précis ?

Dans ce cas un simple ActiveDocument.SaveAs FileName:="adresse_et_nom.doc", FileFormat:=wdFormatDocument devrait régler le problème.

Tu peux utiliser des variables pour l'adresse/le nom, quitte à les stocker via un Userform présentant des listes déroulantes avant de lancer la macro.

NB : Utilise les balises Code quand tu poste du code, c'est plus lisible pour tes interlocuteurs.
Les macros vaincront Image
Avatar du membre
Jack35
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 28 novembre 2017
Version d'Excel : Excel2013FR

Message par Jack35 » 28 novembre 2017, 16:45

merci je viens d'essayer ca fonctionne
pour les noms dont tu parles tu penses juste pour désigner les nom du fichier et du chemin pas le nom et l'adresse du destinataire au titre du courrier en lui-même?

Et peut on désigner plusieurs plages de recopiages sur un fichier word

et comment je dois appeler le fichier word dans ma macro pour qu'il comprenne que je vise tel modple de document?
Avatar du membre
Kit
Membre fidèle
Membre fidèle
Messages : 150
Appréciations reçues : 2
Inscrit le : 13 janvier 2017
Version d'Excel : 2016 FR

Message par Kit » 28 novembre 2017, 16:57

J'ai pas trop compris cette histoire de modèle.

C'est une mise en forme dans ton fichier Word ? Si c'est toujours la même, crée un fichier avec le bon template que tu ouvriras, rempliras avec tes donner puis enregistrera sous... à chaque fois.
Les macros vaincront Image
Avatar du membre
Jack35
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 28 novembre 2017
Version d'Excel : Excel2013FR

Message par Jack35 » 28 novembre 2017, 17:22

Oui c'est une lettre
Nom de l'expéditeur date automatique
adresse


N/réf: L1Jacob <------ devrait apparaitre ici

mince c'est parti trop vite

après la référence le nom
l' adresse du destinataire

qui viennent de ma base de données

en dessous la première plage de cellule recopiées
puis du texte déjà dans mon modèle

et la 2nde plage de cellules recopiées

le but est d'éviter que je copie mes tableau à chaque fois et que je ressaisisse à chaque fois les coordonnées des clients

voilà j'espère que c'est plus clair?


le pb aussi c'est comment citer dans ma macro ci-dessus le nom du template?
et comment accrocher le résultat de ma liste déroulante via le useforme au chemin il faut certainement
que j'écrive déjà la partie invaraible du chemin comme ca sans doute :

ActiveDocument.SaveAs filename:="C:\Users\Fab\Desktop\Je Pilote\Archives Je pilote\ et ici??? " valeur de la textbox"? puis &"\" & valeur de l'autre textebox : L1+Nom
mais ca me pose des pb d'écriture pour qu'il comprenne qu'il doit lire la textebox à ces endroit et que la econde fois il doit rajouter L1 devant le nom

voilà merci si qq' 1 a une idée...
Avatar du membre
Jack35
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 28 novembre 2017
Version d'Excel : Excel2013FR

Message par Jack35 » 28 novembre 2017, 17:43

toujours relatif à cette question lorsque je relance ma validation
une fenêtre écrit erreur d'exécution ' 462' le serveur distant n'existe pas ou est indisponible or je souhaiterais " qu'elle affiche ce fichier existe déjà, si erreur lor de la première saisie veuillez le supprimer dans les archives avant de solliciter une nouvelle impression"
c'est très bien qu'il refuse de me faire un autre fichier mais ca perturbe l'utilisateur et ca plante...
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message