Insérer données d'excel dans fichier word

vdh_xavier

XLDnaute Junior
Bonjour,

J'aurais voulu savoir si dans word, il était possible d'insérer des données d'une feuille excel sans devoir passer par insertion etc.

En gros c'est comme si je mettais dans word un lien hypertexte, sauf que je ne veux pas seulement être redirigé vers le fichier excel, mais qu'en plus je veux qu'une partie du fichier excel se copie automatiquement dans le fichier word.

Merci pour vos réponses
 

YANN-56

XLDnaute Barbatruc
Re : Insérer données d'excel dans fichier word

Bonjour cgpa, Bonjour Yaloo, et à ceux qui passeront par là,

Comme tu m'as fait l'honneur de me solliciter par Mail, j'ai regardé ton Post.

Cependant, je suis "Hors course" pour te répondre.
Etant avec 2003 sur mon P.C., je suis incapable d'ouvrir les".docx" et les ".xlsx" ou ".xlm".

Autre point: Il est impensable que dans mon exemple, j'aie écrit quelque chose qui puisse
ressembler au transfert global d'une plage Excel.

Je ne suis jamais allé plus loin dans cette tentative de manœuvre,
car, hormis une qualité supérieure d'impression,
je n'en vois pas l'utilité de s'enquiquiner à passer par Word!

On peut créer les mêmes entêtes ou bas de page avec Excel.(Y compris les paramètres d'impression)

Word peut être utile avec un gros texte du genre juridique où l'on doit personnaliser certains articles.
Mais s'agissant, pour toi que de simples commandes, je n'en vois pas du tout l'intérêt …..!

Amicalement, et restant disponible au cas où,

Yves
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Insérer données d'excel dans fichier word

Re,
Bonjour Yann,

Ci-dessous tu trouvera tes fichiers modifiés avec sélection de ton chantier, tu double-clic comme avant pour le transfert puis lorsque tu as l'UserForm "Choix chantier" qui s'affiche, tu sélectionne ton chantier et Valide. Cela envoie les données dans ton doc Word.

Par contre je n'ai pas bien compris pour le 4). J'ai commencé avec Cde l'année et nom de société mais après ...
Comment trouves-tu le numéro de commande ?
Comment trouves-tu "concerne" ?

A te relire

Martial

PS : J'ai mis des versions en xls et doc
 

Pièces jointes

  • LISTE.xlsm
    29.9 KB · Affichages: 50
  • commande f.docx
    29.3 KB · Affichages: 59
  • LISTE.xlsm
    29.9 KB · Affichages: 53
  • commande f.docx
    29.3 KB · Affichages: 54
  • LISTE.xlsm
    29.9 KB · Affichages: 60
  • commande f.docx
    29.3 KB · Affichages: 60
  • commande f.doc
    47.5 KB · Affichages: 61
  • LISTE.xls
    42 KB · Affichages: 67
  • commande f.doc
    47.5 KB · Affichages: 62
  • LISTE.xls
    42 KB · Affichages: 57
  • commande f.doc
    47.5 KB · Affichages: 56
  • LISTE.xls
    42 KB · Affichages: 62

cgpa

XLDnaute Occasionnel
Re : Insérer données d'excel dans fichier word

Bonjour Martial,

C’est vraiment extraordinaire de pouvoir compter sur ton aide et lire les solutions que tu apportes. L’userform pour le chantier est une belle solution.

J’ai un peu modifié le fichier word.

Pour le signet 20 (code du chantier, soit colonne A de l’onglet « chantier » dans excel), il n’a pas besoin d’être dans word. Je l’avais d’abord supprimé, mais je me suis rendu compte alors que cela ne fonctionnait plus. Ne sachant pas comment, dans visual basic, ordonner de ne pas prendre en compte la colonne A, j’ai placé le signet en fin de doc word. Il y a probablement moyen d’indiquer à excel de ne pas prendre en compte la ligne A de la feuille chantier et pouvoir supprimer le signet 20 ? (je vois bien la ligne de commande mais… !). Peux-tu me dire si cela est faisable ?

Pour répondre à ta question concernant le numéro de commande (exemple « 3562 ») et le « concerne » (exemple « menuiserie ») : ce sont 2 indications que j’encodais auparavant manuellement dans une cellule du tableau excel que j’avais créé dans word, et que je regroupais ensuite bêtement dans une cellule avec une formule du style ="Cde "&J9&" "&J8&" "&M8&" "&B17.
Pour nommer mon fichier word je me plaçais sur cette cellule + copier + enregistrer sous + coller, et j’avais le nom de mon fichier qui correspondait à cette référence (ex. : Cde 2012 3562 société concerne)
Cde 2012 [numéro de la commande ex 3562] (nom société, soit équivalent signet 2) [concerne]

En voyant ta solution de l’userform pour le chantier, je me dis qu’il est peut-être intéressant de compléter cette boite de dialogue en encodant ces 2 données à ce moment de l’opération. Mais j’imagine qu’elles devront se retrouver quelque part dans excel par après. C’est alors que j’ai pensé à une toute autre solution : actuellement une fois par semaine, je retape dans access les noms de mes commandes + prix + autres informations confidentielles servant à d’autres collègues travaillant en aval. Quelque part, c’est faire 2 fois le travail d’encodage de données !
Voici ce que je pense faire : utiliser ta technique du double clic à partir de la liste des fournisseurs et chantiers dans excel pour ouvrir un autre fichier excel, lequel reprendrait certaines données de la ligne sur laquelle je me trouve ainsi que le chantier par ton userform, encoder ensuite dans cet autre fichier manuellement le numéro de commande et le « concerne » [j’ai ainsi la base de données des commandes], puis utiliser à nouveau ta technique du double clic à partir de cette base pour lancer word et adapter mon fichier de commande word via les signets comme tu me l’as appris. Je vois déjà 3 incompétences pour lesquelles je te demanderai un coup de main si tu juges cette solution plus facile :
- Comment ouvrir ce 2ème fichier excel et arriver automatiquement à la première ligne vide dans la liste des commandes
- Comment y insérer les données du premier fichier. Je viens d’essayer avec une macro à enregistrer, mais cela me colle à chaque fois les mêmes données !)
- Comment dans word pouvoir renommer mon fichier à partir de l’assemblage de quelques signets.
Peux-tu me dire ce que tu en penses ?Je te remercie pour le temps que tu m’as consacré et te souhaite une bonne journée.
Patrick
 

Pièces jointes

  • LISTE.xls
    42.5 KB · Affichages: 67
  • LISTE.xls
    42.5 KB · Affichages: 56
  • LISTE.xls
    42.5 KB · Affichages: 56
  • listing commandes.xls
    41.5 KB · Affichages: 72

Yaloo

XLDnaute Barbatruc
Re : Insérer données d'excel dans fichier word

Bonjour Patrick,

Content de te lire.

Pour le N° de cde et le type de chantier ("concerne"), les 2 solutions sont possibles :

Soit mettre, dans l'userform1, : 1 TextBox pour le N° et 1 ComboBox pour le "concerne" cela te ferais une liste déroulante avec tous les type de chantier.

Soit créer un autre fichier avec ouverture et insertion des données.

C'est comme tu veux !

Bon, je n'ai pas trop de temps en 12h / 14h je vois ça ce soir.

A+

Martial
 

Yaloo

XLDnaute Barbatruc
Re : Insérer données d'excel dans fichier word

Re,

Voici 2 fichiers pour xls et doc, pour la première solution.

J'ai créé une nouvelle feuille pour les paramètres, tu peux ajouter, modifier ou supprimer des types de chantier.

Le N° de cde et le type chantier sont positionné en D et E de la feuille Chantiers, puis récupérer pour être intégré au fichier Word.

A+

Martial

PS : Je regarde après mangé pour la seconde solution.
 

Pièces jointes

  • LISTE.xls
    63.5 KB · Affichages: 41
  • commande f.doc
    47.5 KB · Affichages: 42
  • LISTE.xls
    63.5 KB · Affichages: 41
  • commande f.doc
    47.5 KB · Affichages: 37
  • LISTE.xls
    63.5 KB · Affichages: 40
  • commande f.doc
    47.5 KB · Affichages: 29

Yaloo

XLDnaute Barbatruc
Re : Insérer données d'excel dans fichier word

Re,

Pour la seconde possibilité, tout dépend comment tu travailles.

Je ne pense pas que la création d'un deuxième fichier soit nécessaire et obligatoire : perte de temps à l'ouverture et à l'enregistrement (mais c'est possible si tu le souhaite), par contre il est possible d'ajouter une feuille à ton classeur, quitte à en faire une extraction pour tes collègues.

Le double clic sur n'importe quelle cellule risque de te copier une ligne que tu as déjà envoyée dans le deuxième fichier ou la nouvelle feuille. Donc a éviter je pense.

On peut peut-être prévoir un bouton permettant de copier la dernière ligne de "Contacts fournisseurs" dans le 2ème fichier ou la nouvelle feuille. Puis sélectionner la ligne dans "Chantiers" avec l'userform (avec ou sans les renseignements N° cde et type chantier) voir post #22, ou saisie manuelle directement dans la nouvelle feuille ou Fichier2 + bouton pour envoyer dans Word.

Dans l'exemple ci-dessous, j'ai :
- ajouter une feuille
- créé un bouton dans la feuille "Contacts frs" qui envoi les données dans "Liste cde" puis sélectionne dans "Chantiers" et envoi dans "Liste cde" puis envoi vers doc Word.

Je n'ai pas modifié les N° de signet, je te laisse le faire.

Vois si ça te convient, ou si tu as des changements, des questions, des demandes etc...


A te relire

Martial
 

Pièces jointes

  • LISTE V2.xls
    50.5 KB · Affichages: 41
  • commande f.doc
    47.5 KB · Affichages: 41
  • LISTE V2.xls
    50.5 KB · Affichages: 39
  • commande f.doc
    47.5 KB · Affichages: 39
  • LISTE V2.xls
    50.5 KB · Affichages: 31
  • commande f.doc
    47.5 KB · Affichages: 31

cgpa

XLDnaute Occasionnel
Re : Insérer données d'excel dans fichier word

Bonjour Martial,
Merci pour les 2 solutions proposées. la première me servira pour certains autres documents.
J'ai retravaillé la 2ème en ajoutant une colonne "chef d'équipe" sur la feuille "chantier". Via VB j'ai pu adapter le code (j'essaie de comprendre) pour que le résultat apparaissent sur la feuille 3 (tu verras dans le code que j'ai écrit ce que je croyais comprendre pour pouvoir l'adapter plus tard à d'autres doc !).
Il y a une erreur que je ne sais modifier: c'est toujours la société 5 qui apparaît dans la liste de commande (il copie la dernière ligne non vide). Probablement une broutille pour toi...
Afin d'améliorer le système, j'ai adapté le visuel l'userform en ajoutant 3 données, mais les commandes ne sont pas activées (je ne suis pas encore capable: j'ai bien tenté de voir comment tu avais fait mais je ne parviens pas encore à reproduire...).
Je m'explique: j'aimerais pouvoir encoder la date manuellement (parfois des courriers soit post ou anti-datés), ajouter le type de courrier sous forme de liste déroulante (liste créée dans l'onglet "acfst") et j'ai ajouté un bouton ("valider vers liste"). En effet, le bouton "envoi de donnée" qui lance leprocessus est génial et rapide pour arriver dans word (bouton à garder!!!), mais il serait fort utile une fois dans l'userform de pouvoir choisir entre "valider" (qui est à garder et envoie vers word) et le bouton que j'ai ajouté: "Valider vers liste". Ce bouton renverrait vers la liste de commande sans aller dans word. Et dans la liste de commande, il y aurait alors un bouton qui permettrait de se placer sur n'importe quelle ligne déjà présente et lancer word (il m'est utile de pouvoir relancer à partir d'une ancienne commande sans repartir du début). On aurait ainsi les 2 possibilités. Mes collègues et moi sommes déjà bien contents de pouvoir adapter l'un ou l'autre de nos documents car ce que tu as apporté nous fait déjà gagner du temps. Je n'ai pas travaillé sur le document word, car je préfère finaliser d'abord le fichier excel. Je te remercie pour ta collaboration. Puis-je abuser de te demander encore une fois un coup de main? Je te souhaite un bon we! Patrick.
 

Pièces jointes

  • LISTE V2.xls
    79 KB · Affichages: 57
  • LISTE V2.xls
    79 KB · Affichages: 44
  • LISTE V2.xls
    79 KB · Affichages: 37

Yaloo

XLDnaute Barbatruc
Re : Insérer données d'excel dans fichier word

Bonsoir Patrick, le forum,

Il y a une erreur que je ne sais modifier: c'est toujours la société 5 qui apparaît dans la liste de commande (il copie la dernière ligne non vide). Probablement une broutille pour toi...

Je pensais qu'il vallait mieux ne copier que la dernière ligne, afin d'éviter les doublons.

Le double clic sur n'importe quelle cellule risque de te copier une ligne que tu as déjà envoyée dans le deuxième fichier ou la nouvelle feuille. Donc a éviter je pense.

Confirme-moi, svp, si tu souhaite saisir une ligne (autre que la dernière) dans "Contacts fournisseurs" puis ensuite une ligne dans "Chantiers".

Pour moi, j'avais l'impression que lorsque l'on venait de rajouter une ligne dans "Contacts frs", on cliquait sur le bouton, ensuite on choisissait une ligne dans "Chantiers" (dans l'userform) puis on envoyait vers Word et la feuille "Liste cde".

Pourrais-tu me confirmer ceci ou pas ? Le mieux étant que tu me fasses le plus précisément possible l'ordre de chaque étape (quoi prendre, à mettre où, etc...).

Pour le point d'envoyer vers Word, il n'y a pas de soucis on peut très bien envoyer les données sans envoyer vers Word ou en envoyant vers Word.

J'attends de tes nouvelles sur l'ordre exacte des étapes avant de continuer.

A te relire

Martial

PS une autre question : pourquoi avoir créé un onglet "acfst" et ne pas avoir mis typeCourrier dans l'onglet "Param" ?
 
Dernière édition:

cgpa

XLDnaute Occasionnel
Re : Insérer données d'excel dans fichier word

Bonjour Martial,

Content de te lire.

Voici les réponses:
1. Dans la liste "fournisseur", il ne faut pas recopier la dernière ligne mais celle sur laquelle on se trouve (n'importe quel fournisseur de la liste). Car on ne passe pas toujours commande à des nouveaux fournisseurs mais souvent à des "anciens".
2. Le choix du chantier vient ensuite.
3. Une fois le chantier choisi, soit on passe directement dans word (le plus souvent), soit on fait un arrêt dans la liste de commande pour y encoder l'une ou l'autre info complémentaire ne devant pas être dans word. De cette liste de commande, on peut aussi par exemple se placer sur une ancienne commande et relancer word (ça, tu l'avais bien compris).
4. J'ai ajouté "acfst" dans un onglet parce que je pensais que c'était plus facile, mais s'il est possible de l'ajouter dans la feuille "param", c'est encore mieux.

Pour ton information, comme cela tu sauras tout et pourra peut-être y voir plus clair, nous sommes trois employés à utiliser les mêmes fichiers. Les fichiers sur lesquels tu as travaillé ici ont pour but de trouver la méthode, qui sera ensuite appliquée en interne aux autres fichiers (lorsque j'aurai bien compris comment tout fonctionne). De mon côté j'utilise surtout la liste fournisseur et sous-traitants, et mes deux collègues secrétaires utilisent les listes "architecte, clients, coordinateurs, chantiers". Chacun est amené à pouvoir sortir un document word à partir n'importe quelle liste, même celles des autres (un secrétaire peut faire une commande si je suis absent, ou je peux sortir un courrier architecte à tout moment). Actuellement ces listes sont dans 2 fichiers excel (un pour fournisseur et sous-traitants; un pour les autres listes + chantiers). Deux listes car c'est plus facile pour le partage sur le réseau et éviter les "lecture seule". Les 3 documents de sortie word sont: "commande fournisseur", "commande sous-traitant", "courrier".

Ainsi, peut-être que pouvoir choisir l'employé dans une liste par exemple après avoir choisi le fournisseur peut être intéressant (parce que l'on identifiera dans le document de sortie word l'employé dans la structure des références de courrier : c (pour courrier) ou cde (pour commande) /année/ii (initiales de l'employé)/numéro de la commande/société/concerne . Ex.: Cde AB/2012/3562/société Machin/menuiserie. Je me dis que choisir l'employé dans une liste est utile, mais peut-être qu'avoir 3 boutons différents (1 par employé) pour lancer la procédure est plus simple encore. J'imagine qu'il y aura alors 1 feuille "liste commande" ou "liste courrier" par employé.

Ce qui reviendrait à dire, pour mon objectif final:
1. Se placer sur la liste du fournisseur, du client, de l'architecte... (actuellement on travaille sur une liste fictive appelée "fournisseur").
2. Choix de l'employé via une liste ou un bouton direct par employé, bouton lançant la procédure en copiant les informations de la ligne sur laquelle on se trouve.
3. VB demande ensuite le chantier
4. VB demande le document de sortie "commande fournisseur" ou "commande sous-traitant" ou "courrier"
5. VB propose d'aller directement dans word ou sur la liste
6a. arrêt possible dans la liste ad hoc (liste par employé) pour pouvoir ajouter des données dans d'autres colonnes
ou 6b. Ouverture du fichier word

Si je comprends bien la trame, je serai à même d'ajouter par après des documents de sortie.

J'espère avoir été assez clair et ne pas t'avoir embrouillé.

Je te remercie en tout cas pour ta collaboration.
Qu'en penses-tu?

Passe une bonne journée
 

Yaloo

XLDnaute Barbatruc
Re : Insérer données d'excel dans fichier word

Bonsoir Patrick, le forum,

Vois le fichier ci-dessous, en gros il faut faire :

1 - Double-clic dans Feuille Contacts sur la ligne souhaitée, ça ouvre l'UserForm1
2 - Saisie ligne dans Chantiers dans l'UserForm
3 - Renseignement des divers dans l'UserForm1
4 - Clic sur Envoi vers LISTE ou Envoi vers WORD

5 - J'ai rajouté un bouton dans la feuille Liste pour envoyer vers WORD

J'ai pas trop le temps pour le type de courrier et de document.

Le fichier Word reste identique.

A te relire

Martial
 

Pièces jointes

  • LISTE V3.xls
    78 KB · Affichages: 32
  • LISTE V3.xls
    78 KB · Affichages: 35
  • LISTE V3.xls
    78 KB · Affichages: 36

cgpa

XLDnaute Occasionnel
Re : Insérer données d'excel dans fichier word

bonjour Martial,

Merci beaucoup pour le fichier: j'ai pu l'adapter pour le reste de l'userform (je progresse, à tout petit pas)!

On arrive au bout.
ce qui est ok maintenant:
- choix du fournisseur
- choix du chantier
- choix du type de chantier (concerne, ex menuiserie)
- choix de l'employé
- choix du type de courrier de sortie (architecte, commande, courrier divers...)
le tout arrive bien dans la liste de commande.

Il reste à:
- envoyer dans word (je ne trouve plus la commande dans vb). A partir de Word, je saurai utiliser les signets.

Deux petites questions, mais vraiment pour fignoler au maximum:
a) une fois le type de document sélectionné (courrier divers, commande...) est-il possible d'envoyer dans word au moyen de VB automatiquement vers le bon document, si on a autant de documents word "modèles" que de types de courriers?
b) pour le choix de l'employé: comment modifier la liste déroulante en boutons? (je n'ose pas modifier dans VB par peur de tout efffacer).
Enore un grand merci pour ton aide!
Bonne journée,
Patrick.
 

Pièces jointes

  • LISTE V3.xls
    60 KB · Affichages: 35
  • LISTE V3.xls
    60 KB · Affichages: 30
  • LISTE V3.xls
    60 KB · Affichages: 30

Yaloo

XLDnaute Barbatruc
Re : Insérer données d'excel dans fichier word

Bonsoir Patrick, le forum,

Encore une journée bien remplie, je me pose enfin et peux répondre à tes questions.

J'ai déplacé la macro "Envoi_Word" dans un module standard, cela permet de pouvoir la lancer de n'importe où : soit de l'UserForm1 soit du bouton dans "Liste commande". Dans vb, sous UserForm1, tu as Module et lorsque tu ouvres Module tu as Module1, Envoi_Word est dans ce module.

a) Je t'ai mis un exemple pour ouvrir "commande fournisseur" et "architecte"

En premier lieu, la macro Envoi_Word devient Envoi_Word(Document as string) la variable document est donnée lorsque tu clique sur ton bouton, cela lance la macro Envoi_Word(Combobox2.value) c'est à dire la valeur que tu as sélectionné dans ton Combobox, soit "architecte" soit "commande fournisseur", ensuite dans Envoi_Word cela ouvre le document.

Pour choisir les lignes de code à valider, j'utilise Select case puis case
Cela te permet de mettre autant de cas et autant de ligne de code que tu le souhaite.

b) Pourquoi remplacer le combobox par des boutons ? C'est possible, mais avec la solution Select case puis Case

A te relire

Martial

PS : si tu lances Envoi_Word par le bouton, il va y avoir un problème de document car il n'y aura pas forcément de type de document sélectionné, donc il faudrait peut être faire un petit UserForm juste pour ça.
 

Pièces jointes

  • cgpa.zip
    44.7 KB · Affichages: 30
  • cgpa.zip
    44.7 KB · Affichages: 35
  • cgpa.zip
    44.7 KB · Affichages: 32
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 520
Messages
2 089 286
Membres
104 087
dernier inscrit
falconbe