IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Encadrer et espacer du texte (vb .net)


Sujet :

VBA Word

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Points : 51
    Points
    51
    Par défaut Encadrer et espacer du texte (vb .net)
    * Bonjour *

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    Sub Main
     
    Dim App As Object
    Dim TempDir As String
     
    With App
    .Documents.Open Doc
    .visible = False
    'Create a new document
    '.Documents.Add
    .Selection.InsertBreak Type:=7
    'Add text to the document
    With .Selection.Font
    .Size =16
    .Bold =True
    End With
    With .Selection.ParagraphFormat
    .Alignment = 1
    End With
     
     
    .Selection.TypeText("FEUILLE DE ROUTE DU " & date_tirage)
    .Selection.TypeParagraph
    .Selection.TypeText("LE MONDE")
    .Selection.TypeParagraph
     
      With .Selection.Font
      .Size =12
      .Bold = True
     End With
     With .Selection.ParagraphFormat
      .Alignment = wdAlignParagraphLeft
      End With
    .Selection.TypeText(" PORTEUR :  " & porteur & " " & nom_porteur & vbTab & vbTab & vbTab & " TOTAUX:")
    .Selection.TypeParagraph
    .Selection.TypeText(" TOURNEE :  " & tournee & " " & nom_tournee )
    .Selection.TypeParagraph
    .Selection.TypeText(" ILOT :  " & ilot & " "  & nom_ilot)
    .Selection.TypeParagraph
     
      With .Selection.Font
      .Size =16
      .Bold = True
     End With
     With .Selection.ParagraphFormat
      .Alignment = 1
      End With
      .Selection.TypeText("PARTENAIRES")
     
     
    .ActiveDocument.SaveAs(Doc)
     
     
    .Documents(1).Close
    End With
     
    'Quit Word
    App.Quit
    Set App =Nothing
    End Sub
    je voudrais trouver le code qui permet d'encadrer ces deux lignes

    de plus baisser l'interlignage de ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    .Selection.TypeText("FEUILLE DE ROUTE DU " & date_tirage)
    .Selection.TypeParagraph
    .Selection.TypeText("LE MONDE")
    .Selection.TypeParagraph
    * Merci *

  2. #2
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    L'enregistreur de macro donne un résultat satisfaisant cette fois-ci.

    Pour les interlignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.ParagraphFormat.LineSpacing = LinesToPoints(1)
    Pour la bordure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    With Selection.ParagraphFormat
            With .Borders(wdBorderLeft)
                .LineStyle = wdLineStyleSingle
                .LineWidth = wdLineWidth050pt
                .Color = wdColorAutomatic
            End With
    End With
    Idem avec  With .Borders(wdBorderRight),  With .Borders(wdBorderBottom),  With .Borders(wdBorderTop)
    Il est toutefois préférable de travailler sur des objets range plutôt que selection. Même principe.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Points : 51
    Points
    51
    Par défaut
    je ne comprends pas ça fonctionne pas peux etre faut il que j'active quelque chose dans mes references
    ou ma syntaxe n'est pas la bonne

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Points : 51
    Points
    51
    Par défaut
    avec les objets range comment ça marche?

  5. #5
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Essaye plutôt ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .LineSpacing = LinesToPoints(1)
    à la place de ta ligne surlignée en jaune

    Il lui dit que l'espacement entre les lignes (Interlignes) est de 1.

    Pour les range
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim r as range (definition)
    set r=selection.range
    With r.paragraphFormat
    .LineSpacing=LinesToPoints(1)
    End With
    Tu peux regarder dans la FAQ, il y a une partie qui explique pourquoi utiliser les range plutôt que l'objet selection

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Points : 51
    Points
    51
    Par défaut
    je ne comprend pas qu'elle tytpe de code je doit prendre

    en faisant ça ça à l'air de fonctionner mais j'ai un resultat pas terrible et plus cela met pour tout le texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    With .Selection.ParagraphFormat
    .Alignement = 1
    .LineSpacing = 5
    end With

  7. #7
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Le code a appliquer simplement est celui-là.
    Tu dois l'appliquer juste avant ton paragraphe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .LineSpacing = LinesToPoints(ta_valeur)
    Attention, cela est appliqué jusqu'à lui donner une nouvelle valeur.
    Pour l'appliquer uniquement à ce paragraphe, tu dois placer avant le paragraphe suivant.
    .LineSpacing = LinesToPoints(ta_valeur_paragraphesuivant)

  8. #8
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    En mettant
    Tu lui indiques de mettre 5pt entre les paragraphes.
    La fonction LineToPoints convertis en ligne le nombre de points correspondant.
    Ainsi LineToPoints(2)=24pt

    Logiquement, il faut aussi définir la valeur de la propriété LineSpacingRule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .LineSpacingRule=wdLineSpaceExactly
    Voici ce que l'aide donne sur cette propriété :

    wdLineSpaceAtLeast : l'interligne peut être supérieur ou égal mais jamais inférieur à la valeur affectée à la propriété LineSpacing.
    wdLineSpaceExactly : l'interligne ne change jamais et conserve toujours la valeur affectée à la propriété LineSpacing, même si une police de taille supérieure est utilisée à l'intérieur du paragraphe.
    wdLineSpaceMultiple : vous devez spécifier une valeur pour la propriété LineSpacing, exprimée en points

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Points : 51
    Points
    51
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .LineSpacing = LinesToPoints(ta_valeur)
    en fait derreire j'attaque word en vbscript et LinesTopoints n'est pas reconnu

    y a t'il un site qui documente toute les fonctions word avec vbscript?

    comment dois je faire si vbscript ne reconnait pas linestopoint?
    as tu un exmple de range en vbscript?

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Points : 51
    Points
    51
    Par défaut
    de la meme façon worddoc.sections(1) pour changer le haut de page ne fonctionne pas en vbscript
    est ce normale?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Points : 51
    Points
    51
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    With Selection.ParagraphFormat
            With .Borders(wdBorderLeft)
                .LineStyle = wdLineStyleSingle
                .LineWidth = wdLineWidth050pt
                .Color = wdColorAutomatic
            End With
    End With
    Idem avec  With .Borders(wdBorderRight),  With .Borders(wdBorderBottom),  With .Borders(wdBorderTop
    don je suppose que ce code je n'arriverait pas à le faire fonctionner en vbscript

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 207
    Points : 51
    Points
    51
    Par défaut
    je commence à avancer ouf....
    mais maintenant j'ai à nouveau un probleme comment inserer deux tableaux différents dans une meme page (un paragraphe différent par exemple) ci joint mon code apres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Set objRange = objDoc.Range()
    objDoc.Tables.Add objRange,2,1
    Set objTable = objDoc.Tables(1)
    objTable.Range.Font.Size = 18
    objTable.Range.Font.Bold = True
    objTable.ApplyStyleHeadingRows = True
    objTable.ApplyStyleLastRow = False
    objTable.ApplyStyleFirstColumn = True
    objTable.ApplyStyleLastColumn = False
    objTable.ApplyStyleRowBands = True
    objTable.ApplyStyleColumnBands = False
    objTable.Borders(wdBorderTop).LineStyle = wdLineStyleSingle
    objTable.Borders(wdBorderLeft).LineStyle = wdLineStyleSingle
    objTable.Borders(wdBorderBottom).LineStyle = wdLineStyleSingle
    objTable.Borders(wdBorderRight).LineStyle = wdLineStyleSingle
        'Selection.Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleSingle
        'Selection.Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleSingle
     
    objTable.Cell(1, 1).Range.Text = "Feuille de route du " + date_tirage
    objTable.Cell(2, 1).Range.Text = "LE JOURNAL"
     
    Set objRange=Nothing
    Set objTable =Nothing

Discussions similaires

  1. Espace Figure - Texte
    Par BeZouT20 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 18
    Dernier message: 05/05/2017, 21h41
  2. [HTML] espace entre text et image
    Par {F-I} dans le forum Balisage (X)HTML et validation W3C
    Réponses: 18
    Dernier message: 27/03/2008, 20h06
  3. espacement de text
    Par *alexandre* dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 22/08/2007, 11h34
  4. Espacement du texte !
    Par Franck.H dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 18/05/2007, 15h43
  5. [XSLT]Espace dans texte
    Par Invité dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 18/12/2006, 11h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo