[VBA] Ajouter une ligne à un fichier Word à partir de cellules Excel

Ajouter une ligne à un fichier Word à partir de cellules Excel [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 12-01-2010 à 10:25:16    

Bonjour !
Je souhaiterais savoir s'il est possible de programmer un bouton qui concatène dans un fichier Word le contenu d'une (ou de plusieurs) cellules de la ligne :
 
J'ai par exemple en A14 une date, en B14 un texte, en C14 mon bouton et en D14 un nom de fichier Word (D14.doc par exemple).
Quand je clique sur le bouton, il ajoute au début du fichier D14.doc la date et le texte (ce qui me permet en fait d'historiser les modifications de dates et de texte pour chaque ligne, et garder dans le fichier Excel la dernière modif).
J'aurais donc un fichier D14.doc qui ressemblerait à ça :
 
10/01/2010 Texte de B14 actualisé
07/01/2010 Texte de B14
04/01/2010 ...
 
Je suis une buse en matière de macros et de VB   :ange:

Reply

Marsh Posté le 12-01-2010 à 10:25:16   

Reply

Marsh Posté le 12-01-2010 à 13:51:21    

Alors, j'ai réussi à faire un bouton qui ajoute une ligne à mon fichier word.
Mais j'ai défini en dur dans le fichier les noms des cellules dont je me sers (A2 et B2 pour les données à recopier, D2 pour le nom du document).
 
Comment dois-je m'y prendre pour qu'il prenne les cellules de la ligne sur laquelle est le bouton ?

Reply

Marsh Posté le 12-01-2010 à 16:43:50    

Bonjour
Je ne comprends pas bien ce que ça veut dire:

Citation :

Mais j'ai défini en dur dans le fichier les noms des cellules dont je me sers (A2 et B2 pour les données à recopier, D2 pour le nom du document).


 je ne comprends pas non plus  pourquoi:
- tu mets un bouton à chaque ligne ????
- tu tiens absolument à concaténer tes données dans un fichier World ???
 
Tu pourrais me dire que c'est ton affaire, mais je te demande ça car tu dis toi-même être une buse en matière de macros et de VB, et donc si on veut t'aider, on a besoin de bien comprendre ta démarche et surtout tes souhaits.
 
(et je ne suis pas sûr que ta démarche soit la bonne pour arriver à tes souhaits.)
 
Donc, détails clairs souhaités...
 
 
Je te propose néanmoins cette macro qui répondra pt-être à tes besoins:
 
 

Code :
  1. Dim Date_Opération As Date
  2.  
  3. NumLigne = InputBox(" Entrez le N° de ligne souhaitée. Merci" )  'ou sinon :
  4.                   'NumLigne = ActiveCell.Row  'si tu préfères sélectionner d'abord ta ligne.
  5.      Range("A" & NumLigne).Select
  6.  
  7. Date_Opération = ActiveCell.Value
  8. ValCellVoisine = ActiveCell.Offset(0, 1).Value
  9. MaPhrase = Date_Opération & " " & (ActiveCell.Offset(0, 1).Value) & " actualisé"
  10.   MaRép = MsgBox(MaPhrase & Chr(10) & Chr(10) & "D'ACCORD ?", 36, "D'ACCORD ?" )
  11. If MaRép = vbYes Then
  12. '''''''''    ' ce que tu veux faire. Par ex copier la phrase en col D sur la mm ligne:
  13.        ActiveCell.Offset(0, 3).Value = MaPhrase
  14. ' et/ou sur la feuille 2 en A2
  15.         Sheets(2).Range("A2" ).EntireRow.Insert
  16.         Sheets(2).Range("A2" ).Value = MaPhrase
  17. Else
  18. Exit Sub
  19. End If


 
A bientôt
 
Edit: PS: pour copier cette macro sans les numéros de lignes (ni "." ), clique sur l'icone avec les 2 yeux ("voir code" ), et sélectionne ce que tu veux.
 


Message édité par Laoo le 12-01-2010 à 16:58:52

---------------
Olympus OM-D  EM-5 + 14-42
Reply

Marsh Posté le 13-01-2010 à 08:49:30    

Oui, je veux mettre un bouton sur chaque ligne et un fichier Word par ligne (en écrivant ça je me rends compte que ça risque d'être assez lourd...).
Le but est de garder une trace de chaque modification sur certaines cellules de chaque ligne, en pouvant cliquer sur un bouton d'historisation.
Par exemple, si on a une colonne date (A), une colonne état (B), une colonne historisation (C) et une colonne nom du fichier (D), je veux avoir un bouton dans la colonne C, qui me permette de concaténer au fichier de la colonne D les données des colonnes A et B. Ça me permet en allant consulter le fichier Word sur la ligne x de savoir quels ont été les différentes modifications de l'état et des dates de cette ligne.
 

Reply

Marsh Posté le 13-01-2010 à 11:08:00    

Oui, je veux mettre un bouton sur chaque ligne et un fichier Word par ligne (en écrivant ça je me rends compte que ça risque d'être assez lourd...).  
[:aaah]                                                         [:kzimir]                                 [:power600]
 
 
  c'est un euphémisme!!!  t'auras vite besoin du samu!     (ouais, je sais, c'est facile et très mauvais!!)  
 
 
Le but est de garder une trace de chaque modification sur certaines cellules de chaque ligne, en pouvant cliquer sur un bouton d'historisation.
Par exemple, si on a une colonne date (A), une colonne état (B), une colonne historisation (C) et une colonne nom du fichier (D), je veux avoir un bouton dans la colonne C, qui me permette de concaténer au fichier de la colonne D les données des colonnes A et B. Ça me permet en allant consulter le fichier Word sur la ligne x de savoir quels ont été les différentes modifications de l'état et des dates de cette ligne.
 

tu pourrais mettre tout ça gentiment dans une belle feuille Excel, avec un joli système qui te sortirait une super belle fiche d'info sur la ligne que tu veux, ou la date, ou le produit, ou jecépakoi...       mais c'est toi qui vois...

 
 
 
 
 
 
 
 

Reply

Marsh Posté le 13-01-2010 à 11:34:29    

Tu veux dire avoir un fichier Excel pour chaque ligne de mon fichier initial, ou ajouter un onglet dans le document Excel pour chaque ligne de mon onglet principal ?

Reply

Marsh Posté le 13-01-2010 à 12:15:54    

Tu veux dire avoir un fichier Excel pour chaque ligne de mon fichier initial
NAAAN!! Un fichier Excel serait encore pire qu'un fichier Word!
 
ou ajouter un onglet dans le document Excel pour chaque ligne de mon onglet principal ?  ce serait un peu mieux, mais à peine, tellement compliqué à gérer et à retrouver.
 
 
Mon idée serait en fait une feuille récapitulative ds le même classeur, de préf, ou dans un autre, si tu veux, et une autre feuille avec de graaanndes cases en couleurs;  dans une case tu rentrerais le N° de ligne (ou 1 date, ou ce que tu veux), et aussitôt, dans les autres apparaîtraient les infos que tu désires. (feuille éventuellement imprimabe, si tu vx.)
 
Tout cela est aussi simple à faire, que léger à gérer et efficace à traiter.
 
Moi, c'est comme ça que je ferais...
 


Message édité par Laoo le 13-01-2010 à 13:35:55
Reply

Marsh Posté le 13-01-2010 à 14:01:02    

Je crois que je vois ce que tu veux dire. Et du coup ça revient à faire de simples formules, même pas besoin de passer par une macro si ?

Reply

Marsh Posté le 13-01-2010 à 14:33:11    

Samu a écrit :

Je crois que je vois ce que tu veux dire. Et du coup ça revient à faire de simples formules, même pas besoin de passer par une macro si ?


 
A la limite, si tu te sers de ta feuille comme base, non, même pas. Mais pourtant, ce serait bien d'en mettre dans la feuille "Info", soit en private sub, soit pour un bouton. Au choix. Et puis c'est amusant aussi.
 
(Si tu as besoin d'aide, y a pas de pb)
 
A + :hello:
 
Edit: A la limite, pour te rendre compte, et dans une démarche minimaliste, tu mets ds une feuille voisine de la ppale, une cellule vide en A1, et dans B1 ,C1, D1, tu rentres une fonction rechercheV, avec la cellule A1 comme argument. En A1, tu rentreras ton N° de ligne, et à chaque fois, tu auras à côté les infos souhaitées. Après, tu étoffes à ton goût.
 
précision quand même: pour que la formule fonctionne ds ts les cas sans erreurs, je te conseille de mettre en  col A * un n° (de ligne ou pas, si tu mets une ligne de titres...) (mais que tu appelles "réf" ), puis tes autres col en suivant, cela te servira de référence pour les formules; sinon, si jamais tu voulais modifier qq chose, faire un tri, rajouter des lignes, etc, tu fausserais le système... et si jamais tu entres +sieurs lignes par jour, tu peux prévoir une cellule heure qui se remplit automatiquement à la suite du reste.  
 
*j'ai bien dit  col A , car RechercheV part de la gauche pour trouver les infos suivantes.
 
si tu fais comme ça, tu rentres des trucs sur une feuille1 d'1 classeur bidon, et tu rentres cette formule en B2 de la feuille2 :
 
  =RECHERCHEV($A2;Feuil1!$A:$D;2;FAUX)
 
tu la tires en C2, D2, E2, puis en A2 tu rentres un n° (existant ds la col A de la F1!), à chaque fois tu auras les infos correspondantes à côté.  $A:$D; pour les col A à D   2;   devient 3 puis 4, etc pr les col c,d, etc
 
Capito?


Message édité par Laoo le 13-01-2010 à 16:07:27
Reply

Marsh Posté le 14-01-2010 à 10:55:54    

Ok, je vais tester un peu tout ça. Merci pour tout !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed