|
|
|
|
|
salut Babelge,
essaie ceci, ça fonctionne bien chez moi :
Sub OuvrirFichierWord()
Dim objWord As Word.Application
Dim Docu As Word.Document
' création de l'objet Word
Set objWord = New Word.Application
' Word visible
objWord.Visible = True
'ouverture du fichier
Set Docu = objWord.Documents.Open("D:\doctest2.doc")
' positionnement sur le signet
objWord.Selection.GoTo What:=wdGoToBookmark, Name:="StopDate"
' insertion de la date
objWord.Selection.InsertDateTime DateTimeFormat:="dddd d MMMM yyyy"
' sauvegarde
Docu.Save
' fermeture du document
Docu.Close
' quitter Word
objWord.Quit
' libérer la mémoire des variables objet
Set Docu = Nothing
Set objWord = Nothing
End Sub
A+,
Kobaya.
|
Babelge, a mon avis, je serai partis d'un doc Word et j'aurai utilisé son outil de publipostage avec en fichier source ton fichier XLS.
Dans le doc, je ferai plusiers pages des formulaires à la suite - tous ceux de ta liste. Puis, j'introduis les different champs (colonnes du XLS) où il faut dans les formulaires. C'est fait. En suite, la fonction Word de publipostage te permets soit de faire tous les formulaires pour tout le contenu de ton XLS soit tu choisis les ligne d'XLS qui t'interessent. |
Merci de ta réponse,
Comme je disais en introduction, il s'agit de créer PLUSIEURS documents DIFFERENTS sur base d'un même enregistrement (l'enregistrement est une commande à un prestataire ou fournisseur et les documents sont... bon de commande, transmis du bon de commande au prestataires, transmis à la compta, transmis de la facture à la compta,...) et pas plusieurs documents identiques/personnalisés sur base d'enregistrement différents. La simplicité du publipostage est aussi son handicap. C'est prévu pour un document, plusieurs enregistrement. A la limite, je pourrais mettre l'ensemble de mes documents dans un seul fichier word, mais ça va avoir une forte influence sur l'organisation des fichiers. Il faut que j'y réfléchisse. Je ne dois pas perdre plus de temps à rechercher mes petits que celui que je gagne à éditer les documents. Merci quand même. |
Nous sommes d'accord. Un fichier type - Doc Word - pour tous tes formulaires (bon de commande, transmis du bon de commande au prestataires, transmis à la compta, transmis de la facture à la compta,...).
Ceci dit: 1/ As-tu un fichier XLS par prestataire ou fournisseur qui regroupe toutes les commandes de ce prestataire ou fournisseur (une commande par ligne et toutes sur une même feuille)? 2/ Un XLS regoupant toutes les commandes (en ligne sur une feuille) pour tous les prestataires ou fournisseurs? C'est ce que j'ai compris! |
As ta question, je répond dans le plus simple des cas c'est l'option "2":
Un XLS regoupant toutes les commandes (en ligne sur une feuille) pour tous les prestataires ou fournisseurs. Par contre, j'ai déjà simplifié pas mal le problème par rapport au réel, car au départ il s'agit de partir d'une base de données ACCESS, et un "set de données" reprend parfois plus d'une ligne de donnée... et là, plus moyen de travailler avec le publipostage! Ex: Je passe commande pour deux devis en même temps (au même fournisseur) avec des adresses de livraison différentes pour chacun des devis ( j'ai 29 sites de livraison possible): ou Je transmets à la compta plusieurs factures relevant de commande différentes ou plusieurs factures partielles pour une seule et même commande. Tu vois, je m'étais dis qu'en essayant d'abord de piloter word depuis une macro excell, je me mettrai ensuite à piloter word depuis ACCESS.... je fais des "exercices" en quelque sorte. C'et un peu pour ça que la solution du publipostage est peu séduisante à mes yeux, c'est fort simple certes, mais aussi fort limitant. Il n'est pas facilement envisageable de réaliser ces documents directement dans access via les ETATS car dans le texte des commandes, il m'arrive fréquemment de devoir modifier / adapter. On gère des approvisionnement ou des travaux, on gère de l'import ou de l'achat local, avec ou sans taxe incluse, en livraison avion ou bateau, incluse ou à notre charge, avec ou sans formule de retard/ pénalité, dans ou en dehors de marché public... et puis la mise en page d'un état access c'est galère. Mais merci quand même d'avoir proposé |
Je comprends mieux la complexité.
Tu as encore une autre solution possible. Sortir des formulaires direct depuis Excel. Suite à tes exemples, je prends 2 hypothèses: 1) même devis pour un fournisseur avec 2 adresses de livraison différentes = ce sont 2 lignes distinctes dans la feuille source, 2) chaque facture partielle pour une commande est une nouvelle ligne dans le fichier source. Puis, je construirai ainsi: 1/ il faut une nouvelle colonne A - obligatoirement - qui sera un index unique. P.ex. une concaténation de num.commande/code.fournisseur/code.adr.livraison/num.facture qui permet de traiter les devis et les factures multiples; 2/ dans le menu 'Insérer/Nom/Définir' on définit MonIndex =MesDonees!$A:$A; 3/ on ajoute autant des feuille que des formulaires. Sur chacune je construis un formulaire détaillé avec une place prévue pour la référence définie en 1/ et dans la mise en page il faut enlever l'option du grillage; 4/ dans chaque formulaire à l'endroit de la référence je fait un menu déroulant depuis le menu 'Données/Validation...' avec l'option Liste et la source MonIndex. Cela donne une liste déroulante avec toutes les références de la feuille source; 5/ pour les autres champs du formulaire j'utilise la fonction Excel vlookup (...) pour afficher les autres éléments depuis la feuille source sur la base de la valeur de la référence faite en 4/. Cela permet aussi de faire des calculs dynamiques type TVA si un % est affiché; 6/ dès là l'on peut utiliser l'un ou l'autre des formulaires et choisissant une référence imprimer ou faire un PDF pour e-mail. Le fichier source deviendra long à temps, alors vu la complexité du suivi et la multitude des options, pense à une solution Access optimisée avec des formulaires calculés, le suivi des factures multiples ou par fournisseur, etc. Avec un cahier des charges clair et l'habitude d'Access on peut faire une application simple et utile en peu de temps. |
Intéressant, intéressant
Je vais creuser cette idée pour apprendre. Note que la feuille de données excel sera un export de ma base ACCESS. Et donc je pourrais trier pour n'exporter dans excel que les dossier en cours en traitement. Ca permettrai de ne pas allonger inutilement le menu déroulant. Suite dans quelques jours après mes premiers essais |
Résultats pour [vba] créer doc word sur base donnée XLS
Résultats pour [vba] créer doc word sur base donnée XLS
Résultats pour [vba] créer doc word sur base donnée XLS
Résultats pour [vba] créer doc word sur base donnée XLS