Inserer des sauts de pages apres création de tableau Macro Vba depuis excel [Résolu]

doum47 6 Messages postés lundi 15 octobre 2007Date d'inscription 9 juillet 2009 Dernière intervention - 7 juil. 2009 à 09:52 - Dernière réponse : doum47 6 Messages postés lundi 15 octobre 2007Date d'inscription 9 juillet 2009 Dernière intervention
- 9 juil. 2009 à 15:00
Bonjour à tous,

malgres mes recherches et mes trouvailles je n'arrive pas à faire fonctionner mon programme...

Je crée des tableaux dans un document word depuis excel et j'aimerai apres chaque tableau faire un saut de page mais cela ne fonctionne pas...

je vous copie mon code:

 
'   Chargement d'une nouvelle instance de l'application Word masqué
             Set WordApp = CreateObject("word.application")
             WordApp.Application.Visible = False
            
'   Création d'un nouveau document et paragraphe
             Set WordDoc = WordApp.Documents.Add()
             Set Mypar1 = WordDoc.Paragraphs.Add
             Set MyRange1 = Mypar1.Range
'   Insertion du titre et mise en forme
            With MyRange1
                   .InsertAfter ("Document de test (Antho)            " & vbCrLf)
                   .Style = "Normal"
                   .Bold = True
                   .ParagraphFormat.Alignment = 1
            End With
'   Définition de la zone d'insertion du tableau
            Set myRange = WordDoc.Range(Start:=36, End:=36)
           
       
'   Création du tableau et insertion d'un texte dans la première cellule
For i = 1 To LastRow - 3
            'WordApp.Selection.EndKey Unit:=wdLine
            'WordApp.Selection.EndOf
           
            'WordDoc.InsertBreak Type:=wdPageBreak
           
            With WordDoc
                .Tables.Add Range:=myRange, NumRows:=NumberOfLine, NumColumns:=2
            End With
           
           
Next i
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 9 juil. 2009 à 14:53
3
Merci
Salut,

ben il faut pas oublier que ta session word est ouverte par le code donc il faut associé ce que je t'ai donné avec l'objet word.

Ceci etant dit apres test cela fonctionne mais pas bien donc voici une autre solution.

Il te faut remplacer ça :

For i = 1 To LastRow - 3
            With WordDoc
                .Tables.Add Range:=myRange, NumRows:=NumberOfLine, NumColumns:=2
            End With
Next i

Par ça :

For i = 1 To LastRow - 3
            With WordApp.Selection
                'on positionne le curseur en fin page
                .GoTo What:=wdGoToLine, Which:=wdGoToLast
                'on ajoute le tableau
                WordDoc.Tables.Add Range:=.Range, NumRows:=NumberOfLine, NumColumns:=2
                'on positionne a nouveau le curseur en fin page
                .GoTo What:=wdGoToLine, Which:=wdGoToLast
                'on insert le saut de page
                .InsertBreak Type:=wdSectionBreakNextPage
            End With
Next i

A+

Merci bigfish_le vrai 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de bigfish_le vrai
cs_loulou69 672 Messages postés mercredi 22 janvier 2003Date d'inscription 2 juin 2016 Dernière intervention - 7 juil. 2009 à 13:00
0
Merci
bonjour

Je me demande si l'objet selection ne porterait pas plutot sur le document plutot que sur l'application Word : je ne sais pas si je me fait comprendre
Ex : WordDoc.Selection.EndKey Unit:=wdLine

Ensuite pour repoisitionner le pointeur courant d'insertion, je ne sais pas si simplement l'instruction suivante ne ferait pas l'affaire

Selection.Collapse Direction:=wdCollapseEnd

A tester
Commenter la réponse de cs_loulou69
doum47 6 Messages postés lundi 15 octobre 2007Date d'inscription 9 juillet 2009 Dernière intervention - 7 juil. 2009 à 13:33
0
Merci
Salut,

je te remercie pour ta réponse j'ai fait les tests et cela ne fonctionne pas,
Le compilateur me dit: 
propritété ou méthode non générée par cet objet

En fait à un moment j'arrive à faire les sauts de pages mais ils se font pas entre les tableaux...

Merci encore de ton aide
Commenter la réponse de doum47
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 7 juil. 2009 à 13:45
0
Merci
Salut,

'on selectionne tout le contenu (attention: saut existant inclu)
ActiveDocument.Bookmarks("\page").Range.Select
'on ce deplace a droite ce qui a pour effet de positionner
' le curseur en fin de page
Selection.MoveRight Unit:=wdCharacter, Count:=1
' on insert le saut de section
Selection.InsertBreak Type:=wdSectionBreakNextPage

A+
Commenter la réponse de bigfish_le vrai
doum47 6 Messages postés lundi 15 octobre 2007Date d'inscription 9 juillet 2009 Dernière intervention - 7 juil. 2009 à 15:31
0
Merci
Salut bigfish!
j'ai testé ta solution et je ne dois pas la faire tourner correctement car ca ne marche toujours pas...

Mon fichier .doc n'existe pas avant l'exe de la macro

je ne sauvegarde qu'à la fin de la macro le problème peut-il venir de là?

J'ai mis les lignes de codes dans la boucle for de création des tableaux...

il me jette sur cette ligne : Selection.MoveRight Unit:=wdCharacter, Count:=1

en me disant : "propritété ou méthode non générée par cet objet"

je vous remercie à tous de votre aide

je vous met toute la macro pour une meilleur vue:

Sub BitumWriteNew()




 Dim WordApp As Word.Application, WordDoc As Word.Document, myRange As Word.Range
 Dim Mypar1, Mypar2, Mypar3, Mypar4, Mypar5, Mypar6 As Word.Paragraph, MyRange1, MyRange2, MyRange3, MyRange4, MyRange5, MyRange6 As Word.Range, newpar As Word.Paragraph, newrange As Word.Range
 Dim i As Integer
    


 
'   Chargement d'une nouvelle instance de l'application Word masqué
             Set WordApp = CreateObject("word.application")
             WordApp.Application.Visible = False
            
'   Création d'un nouveau document et paragraphe
             Set WordDoc = WordApp.Documents.Add()
             Set Mypar1 = WordDoc.Paragraphs.Add
             Set MyRange1 = Mypar1.Range
'   Insertion du titre et mise en forme
            With MyRange1
                   .InsertAfter ("Bite User Manual RRJ (BITUM)       " & vbCrLf)
                   .Style = "Normal"
                   .Bold = True
                   .ParagraphFormat.Alignment = 1
            End With
           
                'on selectionne tout le contenu (attention: saut existant inclu)
            ActiveDocument.Bookmarks("\page").Range.Select
            'on ce deplace a droite ce qui a pour effet de positionner
            ' le curseur en fin de page
            Selection.MoveRight Unit:=wdCharacter, Count:=1
            ' on insert le saut de section
            Selection.InsertBreak Type:=wdSectionBreakNextPage


For i = 1 To LastRow - 3
            With WordDoc
                .Tables.Add Range:=myRange, NumRows:=NumberOfLine, NumColumns:=2
            End With
Next i


'Ecriture dans le tableau


For i = 1 To LastRow - 3
lin = 2
    WordDoc.Range.Style = "Normal"
    WordDoc.Range.Font.name = "Verdana"
    WordDoc.Range.Font.Size = "8"
    WordDoc.Tables(i).Columns(1).Cells(1).Range.Text = "FDS-REQ-0" & i
   
    For j = 1 To 114
        If (TitleBitum(j) = "Y") Then
            WordDoc.Range.Font.Bold = True
            WordDoc.Tables(i).Columns(1).Cells(lin).Range.Text = TitleName(j)
            WordDoc.Range.Font.Bold = False
            WordDoc.Tables(i).Columns(2).Cells(lin).Range.Text = Worksheets("Monitoring  Testing 31").Cells(i + 3, Title(j)).Value
            WordDoc.Tables(i).Columns(1).SetWidth ColumnWidth:=84.5, RulerStyle:= _
        wdAdjustNone
            WordDoc.Range.InsertBreak Type:=wdPageBreak
           lin = lin + 1
        End If
       
        Next j
Next i
 
'   Sauvegarde
WordDoc.SaveAs Nracine(0) & "\antho.doc"
'   Fermeture et déchargement mémoire
 WordDoc.Close
 WordApp.Quit


 Set WordDoc = Nothing
 Set WordApp = Nothing
End Sub
Commenter la réponse de doum47
doum47 6 Messages postés lundi 15 octobre 2007Date d'inscription 9 juillet 2009 Dernière intervention - 9 juil. 2009 à 10:33
0
Merci
Bon je suis toujours en galère sur mon problème :o(

Je n'arrive pas à incorporer des sauts de pages apres la création de chacun de mes tableaux...

Le code ci dessus n'est pas bon j'ai essayé de le revoir ... avec toute vos aides mais je n'y arrive pas....

Si quelqu'un peut pousser son aide

Merci

Cordialement,
Anthony
Commenter la réponse de doum47
frgt10 3 Messages postés jeudi 9 juillet 2009Date d'inscription 9 juillet 2009 Dernière intervention - 9 juil. 2009 à 10:39
0
Merci
Bonjour,

Alors le plus simple c'est de cliquer sur l'onglet "Insertion" (en haut a gauche a coté de "Fichier" etc etc ..) et apres tu sélectionne "Saut .." puis "Saut de page". Et voila un joli saut de page tout propre :)

Si tu as besoin d'autre chose sur Excel n'hésite pas, j'aime bien rendre service aux petits nouveaux ^^
Commenter la réponse de frgt10
frgt10 3 Messages postés jeudi 9 juillet 2009Date d'inscription 9 juillet 2009 Dernière intervention - 9 juil. 2009 à 13:14
0
Merci
même mon petit frère a trouvé tout seul
Commenter la réponse de frgt10
doum47 6 Messages postés lundi 15 octobre 2007Date d'inscription 9 juillet 2009 Dernière intervention - 9 juil. 2009 à 13:17
0
Merci
je cherche à le coder en Vba pas à le faire manuellement... comme l'indique le titre de la discussion
Commenter la réponse de doum47
frgt10 3 Messages postés jeudi 9 juillet 2009Date d'inscription 9 juillet 2009 Dernière intervention - 9 juil. 2009 à 13:21
0
Merci
en VBA ??? quelle idée .... c'est normal que t'y arrive pas t'es qu'un stagiaire!!! pi t'avais qu'à bien te garer hier soir... con de 47
Commenter la réponse de frgt10
doum47 6 Messages postés lundi 15 octobre 2007Date d'inscription 9 juillet 2009 Dernière intervention - 9 juil. 2009 à 15:00
0
Merci
Merci beaucoup ca marche impec!!!

encore merdi pour tout
Commenter la réponse de doum47

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.