VBA copier cellule excel et coller dans tableau word

Résolu/Fermé
Teomer - 29 juil. 2013 à 11:23
pijaku Messages postés 12259 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 9 août 2022 - 30 juil. 2013 à 16:06
Bonjour,

J'ai un petit soucis avec un programme en VBA (je commence à peine). A partir d'un tableau Excel, je voudrais sélectionner la valeur d'une cellule, la copier, et la coller dans un tableau créé dans un document Word. Mon code commence comme ceci:

Sub Macro()

Dim chemin As String
chemin = "Le document Word à ouvrir"
Dim wApp As New Word.Application
wApp.Documents.Open (chemin)
wApp.Visible = True
'Ouvrir le document Word

Ensuite, j'arrive à copier une cellule d'Excel avec la commande Range(":").Copy, mais le problème c'est que je voudrais copier la valeur de la cellule seulement (et non pas le cadre de la cellule).

Puis au moment de coller la valeur dans le document Word, j'arrive à la coller au début du document, mais pas à un endroit précis, parce que je n'arrive pas à repérer les cases de mon tableau Word.

J'espère avoir été clair, merci d'avance pour ceux qui essaieront d'y répondre et un grand merci à ceux qui y arriveront :)
A voir également:

2 réponses

pijaku Messages postés 12259 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 9 août 2022 2 708
30 juil. 2013 à 14:18
Bonjour,

Voici un code qui devrait t'aider.
Pour info :
1- j'ai appelé les 22 signets de mon doc word : sig1 sig2 sig3 etc sig22
2- j'ai stocké les valeurs dans excel de la colonne A à la colonne V
Ces deux paramètres seront donc à adapter à ton cas.

Ce qui donne :
Sub Macro()
Dim chemin As String
Dim wApp As New Word.Application
Dim MesDonnees()
Dim Ligne As Long

'Collecte des données
Ligne = InputBox("A qu'elle ligne se trouvent vos données", "Saisir Numéro de ligne")
'**** A ADAPTER :
MesDonnees = Sheets("Feuil1").Range("A" & Ligne & ":V" & Ligne).Value

'Ouvrir le document Word
'**** A ADAPTER :
chemin = "Le document Word à ouvrir"
wApp.Documents.Open (chemin)
wApp.Visible = True
'coller les données
With wApp.Selection
    For Ligne = 1 To 22
        '**** A ADAPTER :
        .Goto What:=wdGoToBookmark, Name:="sig" & Ligne
        '**** A ADAPTER :
        .Bookmarks("sig" & Ligne).Range = MesDonnees(1, Ligne)
    Next
End With
End Sub 

1
Merci beaucoup! J'ai simplement une erreur ligne 9:
"MesDonnees = Sheets("Feuil1").Range("A" & Ligne & ":V" & Ligne).Value"

"Erreur d'exécution '9': L'indice n'appartient pas à la selection."

Cette erreur vient-elle du fait que l'on utilise "&" qui est l'opérateur de concaténation de chaînes de caractères? Du coup, comment corriger cette erreur? Merci encore :)
0
pijaku Messages postés 12259 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 9 août 2022 2 708
30 juil. 2013 à 15:51
sans ton classeur, je ne peux pas t'aider davantage sur ce genre d'erreur.
Tu peux nous le passer en utilisant cjoint.com
0
Je n'ai rien dit, le code fonctionne parfaitement! Merci beaucoup!!
0
pijaku Messages postés 12259 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 9 août 2022 2 708
30 juil. 2013 à 16:06
Tant mieux.
De rien.
A+
0
PS: En fait, ce qu'il faut que je fasse, c'est:
-> ouvrir le document Word,
->demander à quelle ligne sont les informations désirées ( i = InputBox("Quelle est la ligne?")),
-> copier la valeur de la première cellule de la ligne et la coller au bon endroit du tableau Word.
-> copier la valeur de la dexième cellule de la ligne et la coller au bon endroit du tableau Word.
-> Et ainsi de suite jusqu'à la fin (soit 22 cellules)
Merci d'avance
0
(Pour repérer les cases du tableau Word, on m'a conseillé d'utiliser des signets, mais je ne vois pas du tout comment je pourrais coder cela...)
0
J'ai donc 22 signets pour désigner les 22 cases de mon tableau Word. Il faut donc que je copie la valeur d'une cellule Excel et que je la colle dans le document Word à l'emplacement du signet correspondant. J'avance petit à petit, mais avec un coup de main, j'y arriverais plus vite! :)
Merci d'avance
0