VBA copier cellule excel et coller dans tableau word

[Résolu/Fermé]
Signaler
-
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
-
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 :)

2 réponses

Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 642
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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

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 :)
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 642
sans ton classeur, je ne peux pas t'aider davantage sur ce genre d'erreur.
Tu peux nous le passer en utilisant cjoint.com
Je n'ai rien dit, le code fonctionne parfaitement! Merci beaucoup!!
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 642
Tant mieux.
De rien.
A+
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
(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...)
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