OVH Cloud OVH Cloud

tableau dans word à partir d'excel

11 réponses
Avatar
damian
je voudrai cr=E9er un tableau dans une feuille word mais lanc=E9 =E0
partir d'une macro excel pour =E7a j'ai ajout=E9 dans mon code :

Dim docword As New Word.Application

Private Sub Command1_Click()
Set docword =3D CreateObject("word.application")
docword.Visible =3D True
docword.Documents.Add

puis pour le tableau :

docword.ActiveDocument.Tables.Add Range:=3DSelection.Range, _
NumRows:=3D12, NumColumns:=3D11

mais =E7a ne fonctionne pas =E7a ne me cr=E9e rien du tout de plus je
voudrai savoir comment l'on fait pour atteindre un cellule donn=E9e de
ce tableau.
je vous remercie d'avance

10 réponses

1 2
Avatar
papou
Bonjour
Pour atteindre la cellule de ton choix, tu l'identifies par sa position (1
en commençant par la gauche et de haut vers bas)
Par exemple cette syntaxe
Selection.Tables(1).Range.Cells(4).Select
Te positionnera sur la 4ème cellule du tableau

Cordialement
Pascal

"damian" a écrit dans le message de news:

je voudrai créer un tableau dans une feuille word mais lancé à
partir d'une macro excel pour ça j'ai ajouté dans mon code :

Dim docword As New Word.Application

Private Sub Command1_Click()
Set docword = CreateObject("word.application")
docword.Visible = True
docword.Documents.Add

puis pour le tableau :

docword.ActiveDocument.Tables.Add Range:=Selection.Range, _
NumRows:, NumColumns:

mais ça ne fonctionne pas ça ne me crée rien du tout de plus je
voudrai savoir comment l'on fait pour atteindre un cellule donnée de
ce tableau.
je vous remercie d'avance
Avatar
damian
d'accord et donc si je veux choisir la quatrième cellule de la
troisième ligne je fais comment par exemple ?
Avatar
papou
Re
Ben tu comptes de la manière que je t'ai indiquée :
en comptant à partir de la gauche vers la droite et de haut en bas !
Exemple :
Tableau 4 lignes 4 colonnes :
La cellule 12 correspond à la ligne 4 colonne 4

Cordialement
Pascal

"damian" a écrit dans le message de news:

d'accord et donc si je veux choisir la quatrième cellule de la
troisième ligne je fais comment par exemple ?
Avatar
papou
Oups (oh la la en plus si je commence à m'emmêler les pinceaux !)
La cellule 12 correspond à la ligne 3 colonne 4

Pardon ;-)
Cordialement
Pascal

"papou" <cestpasbon@çanonplus> a écrit dans le message de news:
%
Re
Ben tu comptes de la manière que je t'ai indiquée :
en comptant à partir de la gauche vers la droite et de haut en bas !
Exemple :
Tableau 4 lignes 4 colonnes :
La cellule 12 correspond à la ligne 4 colonne 4

Cordialement
Pascal

"damian" a écrit dans le message de news:

d'accord et donc si je veux choisir la quatrième cellule de la
troisième ligne je fais comment par exemple ?




Avatar
damian
je te remercie papou pour tes infos ...
il me reste par contre le problème du tableau que je n'arrive pas à
créer depuis excel.
Avatar
Clément Marcotte
tables.add


"damian" a écrit dans le message de news:

je te remercie papou pour tes infos ...
il me reste par contre le problème du tableau que je n'arrive pas à
créer depuis excel.
Avatar
damian
oui c'est bien ça que je voudrais utiliser d'ailleurs je me sers dans
ma macro word de
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:,
NumColumns _
:, DefaultTableBehavior:=wdWord9TableBehavior,
AutoFitBehavior:= _
wdAutoFitContent
With Selection.Tables(1)
If .Style <> "Table Grid" Then
.Style = "Table Grid"
End If
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = True
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = True
End With
cela marche très bien si je lance la macro qui contient ce code depuis
excel avec un wordobj.run"macro1" mais en mettant ce code directement
dans excel je n'obtiens rien.
merci clément.
Avatar
papou
Re
Le problème se situe au niveau de
Range:=Selection.Range

Modifie comme ceci ça devrait le faire :
Dim appword As Object
Dim docword As Object
Set appword = CreateObject("Word.Application")
appword.Visible = True
Set docword = appword.Documents.Add
docword.Tables.Add appword.Selection.Range, 12, 11

Cordialement
Pascal

"damian" a écrit dans le message de news:

oui c'est bien ça que je voudrais utiliser d'ailleurs je me sers dans
ma macro word de
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:,
NumColumns _
:, DefaultTableBehavior:=wdWord9TableBehavior,
AutoFitBehavior:= _
wdAutoFitContent
With Selection.Tables(1)
If .Style <> "Table Grid" Then
.Style = "Table Grid"
End If
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = True
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = True
End With
cela marche très bien si je lance la macro qui contient ce code depuis
excel avec un wordobj.run"macro1" mais en mettant ce code directement
dans excel je n'obtiens rien.
merci clément.
Avatar
Clément Marcotte
Bonjour,

Je pense que tu serais mieux de partir de Word et de piloter Excel. Un des
problèmes, étant justement l'adressage et la sélection des tableaux dans
Word. Quand tu veux accéder à un tableau particulier de word, quand tu en as
plusieurs, tu es obligé de parcourir la collection tables et de vérifier si
le tableau est le bon.

Quand tu pars de Word, tu peux utiliser le point d'insertion comme "base de
travail" pour bien des opérations, ce qui est beaucoup moins évident en
partant d'Excel, et en travaillant à l'aveugle.



"damian" a écrit dans le message de news:

oui c'est bien ça que je voudrais utiliser d'ailleurs je me sers dans
ma macro word de
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:,
NumColumns _
:, DefaultTableBehavior:=wdWord9TableBehavior,
AutoFitBehavior:= _
wdAutoFitContent
With Selection.Tables(1)
If .Style <> "Table Grid" Then
.Style = "Table Grid"
End If
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = True
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = True
End With
cela marche très bien si je lance la macro qui contient ce code depuis
excel avec un wordobj.run"macro1" mais en mettant ce code directement
dans excel je n'obtiens rien.
merci clément.
Avatar
damian
alléluia (bien sûr sans être blasphémateur)
je te remercie pascal je viens de tester ta méthode et ça marche
superbement bien.
Merci Papou et clément.
1 2