Je souhaite créer et mettre en forme un fichier Word a partir d'excel.
Je souhaite ecrire du texte, inserer ensuite un tableau, puis de nouveau
écrire du texte et insérer un tableau ainsi de suite...
Je créé le document sans pb, je sais insérer du texte, insérer un tableau
mais dès que j'ai insérer un tableau je ne sais plus comment écrire au
dessous du tableau...l'autre création de tableau s'insère dans une cellule du
premier...
Le code de création d'un tableau...
Set MonRange = ActiveDocument.Paragraphs(6).Range
With MonWordAMoi.Application.Documents(1)
.Content.Tables.Add MonRange, 6, 6
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Geo
Bonjour Lolo [Réponse faite sur le forum public Word : news://msnews.microsoft.com/ microsoft.public.fr.word ]
Bonjour et merci pour votre aide...
Je souhaite créer et mettre en forme un fichier Word a partir d'excel. Je souhaite ecrire du texte, inserer ensuite un tableau, puis de nouveau écrire du texte et insérer un tableau ainsi de suite... Je créé le document sans pb, je sais insérer du texte, insérer un tableau mais dès que j'ai insérer un tableau je ne sais plus comment écrire au dessous du tableau...l'autre création de tableau s'insère dans une cellule du premier...
Pour ajouter du texte en fin de document : ActiveDocument.Range.InsertAfter "Texte à insérer" & vbCr
Et méfiez-vous des références absolues comme Documents(1), il suffit qu'il y ait un autre document ouvert pour avoir un résultat un peu décevant.
De même le dernier paragraphe d'un document est : Doc.Paragraphs(Doc.Paragraphs.Count).Range
Le dernier tableau inséré est : doc.Tables(Doc.Tables.count)
etc.
-- A+
Bonjour Lolo
[Réponse faite sur le forum public Word :
news://msnews.microsoft.com/ microsoft.public.fr.word ]
Bonjour et merci pour votre aide...
Je souhaite créer et mettre en forme un fichier Word a partir d'excel.
Je souhaite ecrire du texte, inserer ensuite un tableau, puis de nouveau
écrire du texte et insérer un tableau ainsi de suite...
Je créé le document sans pb, je sais insérer du texte, insérer un tableau
mais dès que j'ai insérer un tableau je ne sais plus comment écrire au
dessous du tableau...l'autre création de tableau s'insère dans une cellule du
premier...
Pour ajouter du texte en fin de document :
ActiveDocument.Range.InsertAfter "Texte à insérer" & vbCr
Et méfiez-vous des références absolues comme Documents(1), il suffit
qu'il y ait un autre document ouvert pour avoir un résultat un peu
décevant.
De même le dernier paragraphe d'un document est :
Doc.Paragraphs(Doc.Paragraphs.Count).Range
Le dernier tableau inséré est :
doc.Tables(Doc.Tables.count)
Bonjour Lolo [Réponse faite sur le forum public Word : news://msnews.microsoft.com/ microsoft.public.fr.word ]
Bonjour et merci pour votre aide...
Je souhaite créer et mettre en forme un fichier Word a partir d'excel. Je souhaite ecrire du texte, inserer ensuite un tableau, puis de nouveau écrire du texte et insérer un tableau ainsi de suite... Je créé le document sans pb, je sais insérer du texte, insérer un tableau mais dès que j'ai insérer un tableau je ne sais plus comment écrire au dessous du tableau...l'autre création de tableau s'insère dans une cellule du premier...
Pour ajouter du texte en fin de document : ActiveDocument.Range.InsertAfter "Texte à insérer" & vbCr
Et méfiez-vous des références absolues comme Documents(1), il suffit qu'il y ait un autre document ouvert pour avoir un résultat un peu décevant.
De même le dernier paragraphe d'un document est : Doc.Paragraphs(Doc.Paragraphs.Count).Range
Le dernier tableau inséré est : doc.Tables(Doc.Tables.count)
etc.
-- A+
Lolo
Merci de ta réponse géo mais chui un chti peu bete ca marche pas...
Voici ce que je souhaite faire : un texte un tableau un texte un tableau
voici le code que j'ai pondu d'après tes exemples ...
' Ecriture avant le tableau I ActiveDocument.Range.InsertAfter " Le tableau I "
Le résultat : une erreur et la mise en forme n'est pas conforme ???
"Geo" a écrit :
Bonjour Lolo [Réponse faite sur le forum public Word : news://msnews.microsoft.com/ microsoft.public.fr.word ] > Bonjour et merci pour votre aide... > > Je souhaite créer et mettre en forme un fichier Word a partir d'excel. > Je souhaite ecrire du texte, inserer ensuite un tableau, puis de nouveau > écrire du texte et insérer un tableau ainsi de suite... > Je créé le document sans pb, je sais insérer du texte, insérer un tableau > mais dès que j'ai insérer un tableau je ne sais plus comment écrire au > dessous du tableau...l'autre création de tableau s'insère dans une cellule du > premier...
Pour ajouter du texte en fin de document : ActiveDocument.Range.InsertAfter "Texte à insérer" & vbCr
Et méfiez-vous des références absolues comme Documents(1), il suffit qu'il y ait un autre document ouvert pour avoir un résultat un peu décevant.
De même le dernier paragraphe d'un document est : Doc.Paragraphs(Doc.Paragraphs.Count).Range
Le dernier tableau inséré est : doc.Tables(Doc.Tables.count)
etc.
-- A+
Merci de ta réponse géo mais chui un chti peu bete ca marche pas...
Voici ce que je souhaite faire :
un texte
un tableau
un texte
un tableau
voici le code que j'ai pondu d'après tes exemples ...
' Ecriture avant le tableau I
ActiveDocument.Range.InsertAfter " Le tableau I "
Le résultat : une erreur et la mise en forme n'est pas conforme ???
"Geo" a écrit :
Bonjour Lolo
[Réponse faite sur le forum public Word :
news://msnews.microsoft.com/ microsoft.public.fr.word ]
> Bonjour et merci pour votre aide...
>
> Je souhaite créer et mettre en forme un fichier Word a partir d'excel.
> Je souhaite ecrire du texte, inserer ensuite un tableau, puis de nouveau
> écrire du texte et insérer un tableau ainsi de suite...
> Je créé le document sans pb, je sais insérer du texte, insérer un tableau
> mais dès que j'ai insérer un tableau je ne sais plus comment écrire au
> dessous du tableau...l'autre création de tableau s'insère dans une cellule du
> premier...
Pour ajouter du texte en fin de document :
ActiveDocument.Range.InsertAfter "Texte à insérer" & vbCr
Et méfiez-vous des références absolues comme Documents(1), il suffit
qu'il y ait un autre document ouvert pour avoir un résultat un peu
décevant.
De même le dernier paragraphe d'un document est :
Doc.Paragraphs(Doc.Paragraphs.Count).Range
Le dernier tableau inséré est :
doc.Tables(Doc.Tables.count)
Le résultat : une erreur et la mise en forme n'est pas conforme ???
"Geo" a écrit :
Bonjour Lolo [Réponse faite sur le forum public Word : news://msnews.microsoft.com/ microsoft.public.fr.word ] > Bonjour et merci pour votre aide... > > Je souhaite créer et mettre en forme un fichier Word a partir d'excel. > Je souhaite ecrire du texte, inserer ensuite un tableau, puis de nouveau > écrire du texte et insérer un tableau ainsi de suite... > Je créé le document sans pb, je sais insérer du texte, insérer un tableau > mais dès que j'ai insérer un tableau je ne sais plus comment écrire au > dessous du tableau...l'autre création de tableau s'insère dans une cellule du > premier...
Pour ajouter du texte en fin de document : ActiveDocument.Range.InsertAfter "Texte à insérer" & vbCr
Et méfiez-vous des références absolues comme Documents(1), il suffit qu'il y ait un autre document ouvert pour avoir un résultat un peu décevant.
De même le dernier paragraphe d'un document est : Doc.Paragraphs(Doc.Paragraphs.Count).Range
Le dernier tableau inséré est : doc.Tables(Doc.Tables.count)
etc.
-- A+
Geo
Bonjour Lolo [Réponse faite sur le forum public Word : news://msnews.microsoft.com/ microsoft.public.fr.word ]
Je me suis permis de reprendre le code à ma manière. Comme j'ai eu la flemme de vérifier pour l'insertion des tableaux, j'ai préféré utiliser la variable MonRange qui pointe momentanément sur la fin du document. Au moins, je suis certain que le tableau sera positionné à la fin. On aurait pu faire la même chose pour mettre le texte, mais puisqu'on était parti sur le InsertAfter, on voit deux solutions possibles pour le prix d'une. En tous cas, bravo pour l'utilisation des Range, quand on débute on est tenté d'utiliser le point d'insertion et Selection.
Attention aux retours à la ligne ajouté par la messagerie. N'hésitez pas à demander des explications.
Sub testTableau() Dim MonRange As Range Dim MaTable As Table With ActiveDocument ' Ecriture avant le tableau I .Range.InsertAfter " Le tableau I " & vbCr ' *** Tableau 1 *** ' Positionnement au fin de document Set MonRange = .Bookmarks("EndOfDoc").Range ' Ajout d'une première table Set MaTable = .Tables.Add(Range:=MonRange, numrows:=6, numcolumns:=6) MaTable.AutoFormat Format:=wdTableFormatContemporary 'wdTableFormatClassic2 MaTable.Cell(1, 1).Range.Text = "toto 1-1" MaTable.Cell(1, 2).Range.Text = "toto 1-2"
' Ecriture avant le tableau II .Range.InsertAfter " Le tableau II " & vbCr ' Positionnement au fin de document Set MonRange = .Bookmarks("EndOfDoc").Range ' Deuxième tableau Set MaTable = .Tables.Add(Range:=MonRange, numrows:=6, numcolumns:=6) MaTable.AutoFormat Format:=wdTableFormatContemporary 'wdTableFormatClassic2 MaTable.Cell(1, 1).Range.Text = "toto 2-1" MaTable.Cell(1, 2).Range.Text = "toto 2-2" End With End Sub
-- A+
Bonjour Lolo
[Réponse faite sur le forum public Word :
news://msnews.microsoft.com/ microsoft.public.fr.word ]
Je me suis permis de reprendre le code à ma manière.
Comme j'ai eu la flemme de vérifier pour l'insertion des tableaux, j'ai
préféré utiliser la variable MonRange qui pointe momentanément sur la
fin du document.
Au moins, je suis certain que le tableau sera positionné à la fin.
On aurait pu faire la même chose pour mettre le texte, mais puisqu'on
était parti sur le InsertAfter, on voit deux solutions possibles pour
le prix d'une.
En tous cas, bravo pour l'utilisation des Range, quand on débute on est
tenté d'utiliser le point d'insertion et Selection.
Attention aux retours à la ligne ajouté par la messagerie.
N'hésitez pas à demander des explications.
Sub testTableau()
Dim MonRange As Range
Dim MaTable As Table
With ActiveDocument
' Ecriture avant le tableau I
.Range.InsertAfter " Le tableau I " & vbCr
' *** Tableau 1 ***
' Positionnement au fin de document
Set MonRange = .Bookmarks("EndOfDoc").Range
' Ajout d'une première table
Set MaTable = .Tables.Add(Range:=MonRange, numrows:=6,
numcolumns:=6)
MaTable.AutoFormat Format:=wdTableFormatContemporary
'wdTableFormatClassic2
MaTable.Cell(1, 1).Range.Text = "toto 1-1"
MaTable.Cell(1, 2).Range.Text = "toto 1-2"
' Ecriture avant le tableau II
.Range.InsertAfter " Le tableau II " & vbCr
' Positionnement au fin de document
Set MonRange = .Bookmarks("EndOfDoc").Range
' Deuxième tableau
Set MaTable = .Tables.Add(Range:=MonRange, numrows:=6,
numcolumns:=6)
MaTable.AutoFormat Format:=wdTableFormatContemporary
'wdTableFormatClassic2
MaTable.Cell(1, 1).Range.Text = "toto 2-1"
MaTable.Cell(1, 2).Range.Text = "toto 2-2"
End With
End Sub
Bonjour Lolo [Réponse faite sur le forum public Word : news://msnews.microsoft.com/ microsoft.public.fr.word ]
Je me suis permis de reprendre le code à ma manière. Comme j'ai eu la flemme de vérifier pour l'insertion des tableaux, j'ai préféré utiliser la variable MonRange qui pointe momentanément sur la fin du document. Au moins, je suis certain que le tableau sera positionné à la fin. On aurait pu faire la même chose pour mettre le texte, mais puisqu'on était parti sur le InsertAfter, on voit deux solutions possibles pour le prix d'une. En tous cas, bravo pour l'utilisation des Range, quand on débute on est tenté d'utiliser le point d'insertion et Selection.
Attention aux retours à la ligne ajouté par la messagerie. N'hésitez pas à demander des explications.
Sub testTableau() Dim MonRange As Range Dim MaTable As Table With ActiveDocument ' Ecriture avant le tableau I .Range.InsertAfter " Le tableau I " & vbCr ' *** Tableau 1 *** ' Positionnement au fin de document Set MonRange = .Bookmarks("EndOfDoc").Range ' Ajout d'une première table Set MaTable = .Tables.Add(Range:=MonRange, numrows:=6, numcolumns:=6) MaTable.AutoFormat Format:=wdTableFormatContemporary 'wdTableFormatClassic2 MaTable.Cell(1, 1).Range.Text = "toto 1-1" MaTable.Cell(1, 2).Range.Text = "toto 1-2"
' Ecriture avant le tableau II .Range.InsertAfter " Le tableau II " & vbCr ' Positionnement au fin de document Set MonRange = .Bookmarks("EndOfDoc").Range ' Deuxième tableau Set MaTable = .Tables.Add(Range:=MonRange, numrows:=6, numcolumns:=6) MaTable.AutoFormat Format:=wdTableFormatContemporary 'wdTableFormatClassic2 MaTable.Cell(1, 1).Range.Text = "toto 2-1" MaTable.Cell(1, 2).Range.Text = "toto 2-2" End With End Sub
-- A+
Lolo
Merci Géo ! Le Set MonRange = .Bookmarks("EndOfDoc").Range fonctionne bien et en plus c'est simple. J'ai compris mon erreur je créais des paragraphes et me positionnais ensuite sur le parapgraphe qui m'intéressait. Mais je pensais qu'un tableau s'insérait dans un paragraphe en fait il en fait un par cellule !
En tout cas encore merci de ton aide et de ta patiente !
"Geo" a écrit :
Bonjour Lolo [Réponse faite sur le forum public Word : news://msnews.microsoft.com/ microsoft.public.fr.word ]
Je me suis permis de reprendre le code à ma manière. Comme j'ai eu la flemme de vérifier pour l'insertion des tableaux, j'ai préféré utiliser la variable MonRange qui pointe momentanément sur la fin du document. Au moins, je suis certain que le tableau sera positionné à la fin. On aurait pu faire la même chose pour mettre le texte, mais puisqu'on était parti sur le InsertAfter, on voit deux solutions possibles pour le prix d'une. En tous cas, bravo pour l'utilisation des Range, quand on débute on est tenté d'utiliser le point d'insertion et Selection.
Attention aux retours à la ligne ajouté par la messagerie. N'hésitez pas à demander des explications.
Sub testTableau() Dim MonRange As Range Dim MaTable As Table With ActiveDocument ' Ecriture avant le tableau I .Range.InsertAfter " Le tableau I " & vbCr ' *** Tableau 1 *** ' Positionnement au fin de document Set MonRange = .Bookmarks("EndOfDoc").Range ' Ajout d'une première table Set MaTable = .Tables.Add(Range:=MonRange, numrows:=6, numcolumns:=6) MaTable.AutoFormat Format:=wdTableFormatContemporary 'wdTableFormatClassic2 MaTable.Cell(1, 1).Range.Text = "toto 1-1" MaTable.Cell(1, 2).Range.Text = "toto 1-2"
' Ecriture avant le tableau II .Range.InsertAfter " Le tableau II " & vbCr ' Positionnement au fin de document Set MonRange = .Bookmarks("EndOfDoc").Range ' Deuxième tableau Set MaTable = .Tables.Add(Range:=MonRange, numrows:=6, numcolumns:=6) MaTable.AutoFormat Format:=wdTableFormatContemporary 'wdTableFormatClassic2 MaTable.Cell(1, 1).Range.Text = "toto 2-1" MaTable.Cell(1, 2).Range.Text = "toto 2-2" End With End Sub
-- A+
Merci Géo !
Le Set MonRange = .Bookmarks("EndOfDoc").Range fonctionne bien et en plus
c'est simple.
J'ai compris mon erreur je créais des paragraphes et me positionnais ensuite
sur le parapgraphe qui m'intéressait. Mais je pensais qu'un tableau
s'insérait dans un paragraphe en fait il en fait un par cellule !
En tout cas encore merci de ton aide et de ta patiente !
"Geo" a écrit :
Bonjour Lolo
[Réponse faite sur le forum public Word :
news://msnews.microsoft.com/ microsoft.public.fr.word ]
Je me suis permis de reprendre le code à ma manière.
Comme j'ai eu la flemme de vérifier pour l'insertion des tableaux, j'ai
préféré utiliser la variable MonRange qui pointe momentanément sur la
fin du document.
Au moins, je suis certain que le tableau sera positionné à la fin.
On aurait pu faire la même chose pour mettre le texte, mais puisqu'on
était parti sur le InsertAfter, on voit deux solutions possibles pour
le prix d'une.
En tous cas, bravo pour l'utilisation des Range, quand on débute on est
tenté d'utiliser le point d'insertion et Selection.
Attention aux retours à la ligne ajouté par la messagerie.
N'hésitez pas à demander des explications.
Sub testTableau()
Dim MonRange As Range
Dim MaTable As Table
With ActiveDocument
' Ecriture avant le tableau I
.Range.InsertAfter " Le tableau I " & vbCr
' *** Tableau 1 ***
' Positionnement au fin de document
Set MonRange = .Bookmarks("EndOfDoc").Range
' Ajout d'une première table
Set MaTable = .Tables.Add(Range:=MonRange, numrows:=6,
numcolumns:=6)
MaTable.AutoFormat Format:=wdTableFormatContemporary
'wdTableFormatClassic2
MaTable.Cell(1, 1).Range.Text = "toto 1-1"
MaTable.Cell(1, 2).Range.Text = "toto 1-2"
' Ecriture avant le tableau II
.Range.InsertAfter " Le tableau II " & vbCr
' Positionnement au fin de document
Set MonRange = .Bookmarks("EndOfDoc").Range
' Deuxième tableau
Set MaTable = .Tables.Add(Range:=MonRange, numrows:=6,
numcolumns:=6)
MaTable.AutoFormat Format:=wdTableFormatContemporary
'wdTableFormatClassic2
MaTable.Cell(1, 1).Range.Text = "toto 2-1"
MaTable.Cell(1, 2).Range.Text = "toto 2-2"
End With
End Sub
Merci Géo ! Le Set MonRange = .Bookmarks("EndOfDoc").Range fonctionne bien et en plus c'est simple. J'ai compris mon erreur je créais des paragraphes et me positionnais ensuite sur le parapgraphe qui m'intéressait. Mais je pensais qu'un tableau s'insérait dans un paragraphe en fait il en fait un par cellule !
En tout cas encore merci de ton aide et de ta patiente !
"Geo" a écrit :
Bonjour Lolo [Réponse faite sur le forum public Word : news://msnews.microsoft.com/ microsoft.public.fr.word ]
Je me suis permis de reprendre le code à ma manière. Comme j'ai eu la flemme de vérifier pour l'insertion des tableaux, j'ai préféré utiliser la variable MonRange qui pointe momentanément sur la fin du document. Au moins, je suis certain que le tableau sera positionné à la fin. On aurait pu faire la même chose pour mettre le texte, mais puisqu'on était parti sur le InsertAfter, on voit deux solutions possibles pour le prix d'une. En tous cas, bravo pour l'utilisation des Range, quand on débute on est tenté d'utiliser le point d'insertion et Selection.
Attention aux retours à la ligne ajouté par la messagerie. N'hésitez pas à demander des explications.
Sub testTableau() Dim MonRange As Range Dim MaTable As Table With ActiveDocument ' Ecriture avant le tableau I .Range.InsertAfter " Le tableau I " & vbCr ' *** Tableau 1 *** ' Positionnement au fin de document Set MonRange = .Bookmarks("EndOfDoc").Range ' Ajout d'une première table Set MaTable = .Tables.Add(Range:=MonRange, numrows:=6, numcolumns:=6) MaTable.AutoFormat Format:=wdTableFormatContemporary 'wdTableFormatClassic2 MaTable.Cell(1, 1).Range.Text = "toto 1-1" MaTable.Cell(1, 2).Range.Text = "toto 1-2"
' Ecriture avant le tableau II .Range.InsertAfter " Le tableau II " & vbCr ' Positionnement au fin de document Set MonRange = .Bookmarks("EndOfDoc").Range ' Deuxième tableau Set MaTable = .Tables.Add(Range:=MonRange, numrows:=6, numcolumns:=6) MaTable.AutoFormat Format:=wdTableFormatContemporary 'wdTableFormatClassic2 MaTable.Cell(1, 1).Range.Text = "toto 2-1" MaTable.Cell(1, 2).Range.Text = "toto 2-2" End With End Sub
-- A+
Geo
Bonjour
Mais je pensais qu'un tableau s'insérait dans un paragraphe en fait il en fait un par cellule !
Tout à fait. Les virtuoses du vba qui maîtrisent ces éléments peuvent réduire leur code au strict minimum. Quand on ne sait pas trop, soit on fait des essais pour découvrir la règle, avec le risque de se tromper dans ses déduction, soit on utilise la manière forte, c'est ce que j'utilise de préférence.
-- A+
Bonjour
Mais je pensais qu'un tableau
s'insérait dans un paragraphe en fait il en fait un par cellule !
Tout à fait.
Les virtuoses du vba qui maîtrisent ces éléments peuvent réduire leur
code au strict minimum.
Quand on ne sait pas trop, soit on fait des essais pour découvrir la
règle, avec le risque de se tromper dans ses déduction, soit on utilise
la manière forte, c'est ce que j'utilise de préférence.
Mais je pensais qu'un tableau s'insérait dans un paragraphe en fait il en fait un par cellule !
Tout à fait. Les virtuoses du vba qui maîtrisent ces éléments peuvent réduire leur code au strict minimum. Quand on ne sait pas trop, soit on fait des essais pour découvrir la règle, avec le risque de se tromper dans ses déduction, soit on utilise la manière forte, c'est ce que j'utilise de préférence.