Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

remplir tableau en multiligne

1 réponse
Avatar
prioux
Bonjour.
Voila j'ai un tableau de 3 lignes et 5 colonnes et je dois remplir la 2ème
ligne (très haute) avec plusieurs lignes de texte.
J'arrive tres bien a remplir la 1ère "ligne" mais c'est après que cela se
complique:
Set objword = CreateObject("Word.Application")
objword.Documents.Open ("D:\monfichier.doc")
objword.activedocument.tables(1).cell(2, 1).select
objword.selection.Text = "mon texte pour col1"
objword.activedocument.tables(1).cell(2, 2).select
objword.selection.Text = "mon texte pour col2"
...
pas de problème.
Mais après comment indiquer qu'à la suite je lui file la "2ème ligne",sans
sortir de la 2ème ligne du tableau ?
D'avance merci.

1 réponse

Avatar
Jean-Guy Marcil
was telling us:
nous racontait que :

Bonjour.
Voila j'ai un tableau de 3 lignes et 5 colonnes et je dois remplir la
2ème ligne (très haute) avec plusieurs lignes de texte.
J'arrive tres bien a remplir la 1ère "ligne" mais c'est après que
cela se complique:
Set objword = CreateObject("Word.Application")
objword.Documents.Open ("D:monfichier.doc")
objword.activedocument.tables(1).cell(2, 1).select
objword.selection.Text = "mon texte pour col1"
objword.activedocument.tables(1).cell(2, 2).select
objword.selection.Text = "mon texte pour col2"
...
pas de problème.
Mais après comment indiquer qu'à la suite je lui file la "2ème
ligne",sans sortir de la 2ème ligne du tableau ?
D'avance merci.


Pourquoi se compliquer la vie? Tu sembles vouloir mettre un paragraphe au
début de Cell(2,1), puis un autre un début de Cell(2,2), et revenir sous le
premier paragraphe de Cell(2,1) et ajouter un autre paragraphe...
Très compliqué ça!

Pourquoi ne pas "remplir" Cell(2,1) quand tu y es la première fois et éviter
d'y revenir? Aussi, n'utilise pas l'objet Selection, l'objet Range est
beaucoup plus solide, rapide et flexible. Finalement, utilise des blocs With
... End With pour éviter de répéter des objets et de ralentir l'exécution
(et encombrer la mémoire):

Donc, selon moi, ton code devrais ressembler à:
[Chr(13) = Retour de paragraphe (¶) ]

'_______________________________________
Dim objWord As Word.Application
Dim objDoc As Word.Document
Dim CellRange As Word.Range

Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("D:monfichier.doc")

With objDoc
With .Tables(1)
Set CellRange = .Cell(2, 1).Range
CellRange.Text = "mon texte pour col1" _
& Chr(13) & "Et le deuxième paragraphe."
Set CellRange = .Cell(2, 2).Range
CellRange.Text = "mon texte pour col2" _
& Chr(13) & "Et le deuxième paragraphe."
End With
End With
'_______________________________________

Mais si tu insites.... tu peux aussi essayer ceci, selon ta demande:

'_______________________________________
Dim objWord As Word.Application
Dim objDoc As Word.Document
Dim Cell1Range As Word.Range
Dim Cell2Range As Word.Range

Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("D:monfichier.doc")

With objDoc
With .Tables(1)
Set Cell1Range = .Cell(2, 1).Range
Cell1Range.Text = "mon texte pour col1"
Set Cell2Range = .Cell(2, 2).Range
Cell2Range.Text = "mon texte pour col2"

Cell1Range.InsertAfter Chr(13) & "Et le deuxième paragraphe."
Cell2Range.InsertAfter Chr(13) & "Et le deuxième paragraphe."
Cell1Range.InsertAfter Chr(13) & "Et le troisième paragraphe."
Cell2Range.InsertAfter Chr(13) & "Et le troisième paragraphe."
End With
End With
'_______________________________________

--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP

Word MVP site: http://www.word.mvps.org