Creation Doc sous VB: Comment savoir si on est en fin de page ?

Signaler
Messages postés
116
Date d'inscription
mercredi 5 juin 2002
Statut
Membre
Dernière intervention
17 septembre 2008
-
Messages postés
116
Date d'inscription
mercredi 5 juin 2002
Statut
Membre
Dernière intervention
17 septembre 2008
-
Bonjour,

J'ai quelques problêmes de creation de document Word avec VB surtout contenant des Tableaux:
Le problème est en général au changement de page. Il y a t'il un moyen de savoir la posistion du curseur ?
Un Exemple si je cree un tableau en fin de page est que je fait un MoveDown pour sortir du tableau, j'ai une erreur "propriété MoveDown..." J'ai résoltut le probleme en rendans visible Word. Mais plus loin je suis tombé sur un autre problème je cree un tableau en fin de page qui est a cheval sur la page suivante et la le Movedown ne passe pas a page suivante se qui a pour effet une mise en page incorect les tableaux suivant s'imbrique les uns dans les autres.

Une solution ?
Merci
Olivier
Ps: Voici le code:
Dans un bouton command1()
Private Sub Command1_Click()
    Command1.Enabled =  False
    NouveauDoc
    ' Tableau 1 (Taille 546)
    Call NouvelleTable(1, 4)
    Call AddTexteGras("LETTRE EUROPEENE")
    Call TailleColone(1, 140)
    Call DeplacementDroite(1)
    Call AddTexteGras("0999")
    Call TailleColone(2, 46)
    Call DeplacementDroite(1)
    Call AddTexteGras("Europolitique n° ")
    Call TailleColone(3, 180)
    Call DeplacementDroite(1)
    Call AddTexteGras("Europolitique n° ")
    Call TailleColone(4, 180)
    'COMMENTAIRE
    Call DeplacementBas(2)
    Call ToucheEnter(1)
    Call AddTexteGris("COMMENTAIRE")
    Call NouvelleTable(1, 1)
    'LES BREVES DE UNE
    Call DeplacementBas(1)
    Call ToucheEnter(1)
    Call AddTexteGris("LES BREVES DE UNE")
    Call NouvelleTable(3, 2)
    Call TailleColone(1, 100)
    Call TailleColone(2, 446)
    'LES POINTS FORTS DE LA SEMAINE
    Call DeplacementBas(3)
    Call ToucheEnter(1)
    Call AddTexteGris("LES POINTS FORTS DE LA SEMAINE")
    Call NouvelleTableStd(9)
    'LA SEMAINE EUROPEENNE
    Call DeplacementBas(9)
    Call ToucheEnter(1)
    Call AddTexteGris("LA SEMAINE EUROPEENNE")
    ' Sous Titre Agriculture & Pêche
    Call SousTitre("Agriculture & Pêche")
    Call NouvelleTableStd(12)
    'Banques, Assurances & Services financiers
    Call DeplacementBas(12): Call ToucheEnter(1): Call SousTitre("Banques, Assurances & Services financiers")
    Call NouvelleTableStd(10)
    'Consommation
    Call DeplacementBas(10): Call ToucheEnter(1): Call SousTitre("Consommation")
    Call NouvelleTableStd(7)
    'Economie & Finances
    Call DeplacementBas(7): Call ToucheEnter(1): Call SousTitre("Economie & Finances")
    Call NouvelleTableStd(8)
    'Energie
    Call DeplacementBas(8): Call ToucheEnter(1): Call SousTitre("Energie")
    Call NouvelleTableStd(12)
    'Environnement
    Call DeplacementBas(12): Call ToucheEnter(1): Call SousTitre("Environnement")
    Call NouvelleTableStd(12)
    'Fiscalité
    Call DeplacementBas(12): Call ToucheEnter(1): Call SousTitre("Fiscalité")
    Call NouvelleTableStd(6)
    'Industrie & Entreprises
    Call DeplacementBas(10)
' LE PROBLEME COMMANCE ICI
'End
    Call ToucheEnter(1): Call SousTitre("Industrie & Entreprises")
    Call NouvelleTableStd(18)
    'Institutions
    Call DeplacementBas(18): Call ToucheEnter(1): Call SousTitre("Institutions")
    Call NouvelleTableStd(10)
    'Justice & Affaires intérieures
    Call DeplacementBas(10): Call ToucheEnter(1): Call SousTitre("Justice & Affaires intérieures")
    Call NouvelleTableStd(8)
    'Marché intérieur
    Call DeplacementBas(8): Call ToucheEnter(1): Call SousTitre("Marché intérieur")
    Call NouvelleTableStd(13)
    ' Recherche
    Call DeplacementBas(13): Call ToucheEnter(1): Call SousTitre("Recherche")
    Call NouvelleTableStd(6)
    'Relations extérieures
    Call DeplacementBas(6): Call ToucheEnter(1): Call SousTitre("Relations extérieures")
    Call NouvelleTableStd(23)
    'Social
    Call DeplacementBas(23): Call ToucheEnter(1): Call SousTitre("Social")
    Call NouvelleTableStd(9)
    'Société de l'Information
    Call DeplacementBas(9): Call ToucheEnter(1): Call SousTitre("Société de l'Information")
    Call NouvelleTableStd(7)
    'Transports
    Call DeplacementBas(7): Call ToucheEnter(1): Call SousTitre("Transports")
    Call NouvelleTableStd(12)
    'LES CHIFFRES DE LA SEMAINE
    Call DeplacementBas(12)
    Call ToucheEnter(1)
    Call AddTexteGris("LES CHIFFRES DE LA SEMAINE")
    Call NouvelleTableStd(4)
    'DES HOMMES ET DES FEMMES
    Call DeplacementBas(4)
    Call ToucheEnter(1)
    Call AddTexteGris("DES HOMMES ET DES FEMMES")
    Call NouvelleTableStd(4)
    'A SURVEILLER
    Call DeplacementBas(4)
    Call ToucheEnter(1)
    Call AddTexteGris("A SURVEILLER")
    Call NouvelleTableStd(9)
    'Calendrier
    Call DeplacementBas(9)
    Call ToucheEnter(1)
    Call SousTitre("Calendrier")
    Call NouvelleTableStd(1)
    'SUPPLEMENT ELARGISSEMENT
    Call DeplacementBas(1)
    Call ToucheEnter(1)
    Call AddTexteGris("SUPPLEMENT ELARGISSEMENT")
    Call NouvelleTableStd(15)
    ' Sauvegarde Word
    wrdDoc.SaveAs FileName:="d:\temp.doc"
    wrdDoc.Close
    wrdApp.Quit
    Set wrdDoc = Nothing
    Set wrdApp = Nothing
    Command1.Enabled = True
    End
End Sub

Dans un Module
Public wrdApp As New Word.Application

Public wrdDoc As New Word.Document
Public Sub NouveauDoc()
    wrdApp.Visible  = True
    Set wrdDoc = wrdApp.Documents.Add
    wrdDoc.Content.LanguageID = wdBelgianFrench
    wrdDoc.Content.NoProofing = False
    wrdDoc.PageSetup.TopMargin = CentimetersToPoints(1)
    wrdDoc.PageSetup.LeftMargin = CentimetersToPoints(1)
    wrdDoc.PageSetup.BottomMargin = CentimetersToPoints(1)
    wrdDoc.PageSetup.RightMargin = CentimetersToPoints(1)
End Sub
Public Sub NouvelleTable(Ligne As Integer, Colone As Integer)
    wrdDoc.Tables.Add Range:=Selection.Range, numrows:=Ligne, NumColumns:=Colone, _
    DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
End Sub
Public Sub NouvelleTableStd(Ligne As Integer)
    wrdDoc.Tables.Add Range:=Selection.Range, numrows:=Ligne, NumColumns:=3, _
    DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
    Call TailleColone(1, 100)
    Call TailleColone(2, 80)
    Call TailleColone(3, 366)
End Sub
Public Sub DeplacementBas(Nombre As Integer)
    Selection.MoveDown Unit:=wdLine, Count:=Nombre
End Sub
Public Sub DeplacementDroite(Nombre As Integer)
    Selection.MoveRight Unit:=wdCharacter, Count:=Nombre
End Sub
Public Sub ToucheEnter(Nombre As Integer)
    Dim intA
    For intA = 1 To Nombre
        Selection.TypeParagraph
    Next intA
End Sub
Public Sub TextCellule(Ligne As Integer, Colone As Integer, Texte As String)
    Selection.Tables(1).Cell(Row:=Ligne, Column:=Colone).Range.InsertBefore Text:=Texte
End Sub
Public Sub TailleColone(Colone As Integer, Taille As Integer)
    Selection.Tables(1).Columns(Colone).SetWidth ColumnWidth:=Taille, RulerStyle:=wdAdjustNone
End Sub
Public Sub AddTexteGras(Texte As String)
    Selection.Font.Bold = wdToggle
    Selection.TypeText Text:=Texte
    Selection.Font.Bold = wdToggle
End Sub
Public Sub AddTexte(Texte As String)
    Selection.TypeText Text:=Texte
End Sub
Public Sub AddTexteGris(Texte As String)
    Dim intA
    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
    If Selection.Font.Bold = 0 Then
        Selection.Font.Bold = wdToggle
    End If
    Selection.TypeText Text:=Texte
    intA = Len(Texte)
    Selection.MoveLeft Unit:=wdCharacter, Count:=intA, Extend:=wdExtend
    Options.DefaultHighlightColorIndex = wdGray25
    Selection.Range.HighlightColorIndex = wdGray25
    Call DeplacementBas(1)
    Options.DefaultHighlightColorIndex = wdNoHighlight
    Selection.Range.HighlightColorIndex = wdNoHighlight
    Selection.Font.Bold = wdToggle
    Call ToucheEnter(2)
End Sub
Public Sub SousTitre(Texte As String)
    Call NouvelleTable(1, 1)
    Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
    Selection.Font.Bold = wdToggle
    Selection.TypeText Text:=Texte
    Call DeplacementBas(1)
    Call ToucheEnter(1)
End Sub

1 réponse

Messages postés
116
Date d'inscription
mercredi 5 juin 2002
Statut
Membre
Dernière intervention
17 septembre 2008

Plutot que de faire ceci:
Public Sub DeplacementBas(Nombre As Integer)
    Selection.MoveDown Unit:=wdLine, Count:=Nombre
End Sub

Faire cela
Public Sub DeplacementBas(Nombre As Integer)
Din intA 
For intA = 1 to Nombre   
Selection.MoveDown Unit:=wdLine, Count:=1
Next intA
End Sub

Cela fonctionne un peut mieux, mais le probleme de fin de page persiste puisque vous devez ajouter un deplacement supplementaire pour le changement de page.

Je suis toujours preneur d'une autre solution....

a+
Olivier
0