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 :

Insertion d'une image dans Word avec une taille correcte


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Insertion d'une image dans Word avec une taille correcte
    Bonjour,

    Je suis en train d'essayer de faire un macro qui insert une image dans une page de MS Word avec une taille ajuster a la page. Mon problème est que lorsque que j'insert mon image et que sur la page il y a des entête et pieds de page, l'image ne s'ajuste pas bien a l'espace restant (vous pouvez essayer dans word directement), j'aimerais donc calculer la taille d'espace restant avec les entete et pied de page pour pouvoir donner cette taille a mon image. Mais je ne trouve aucun moyen de calculer la taille d'une entete ou pied de page :'(

    Pouvez vous m'aider?

    merci d'avance,

    Syphius

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Juste pour l'idée
    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
    Sub DimensionsPage()
        With ActiveDocument.PageSetup
            'Selon l'image (portrait ou paysage), ce sera l'un ou l'autre
            'HauteurDispo = .PageHeight - .TopMargin - .BottomMargin - .HeaderDistance - .FooterDistance
            LargeurDispo = .PageWidth - .LeftMargin - .RightMargin
        End With
        With Selection
            .InlineShapes.AddPicture FileName:= _
            "D:\2005 - Grenoble\Télécabine de la Bastille.jpg" _
            , LinkToFile:=False, SaveWithDocument:=True
        End With
        Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        With Selection
            LargeurImage = Selection.InlineShapes(1).Width
            hauteur = .InlineShapes(1).Height * LargeurImage / LargeurDispo
            largeur = .InlineShapes(1).Width * LargeurImage / LargeurDispo
            .InlineShapes(1).Height = hauteur
            .InlineShapes(1).Width = largeur
        End With
    End Sub
    Testé sur une seule image format paysage, donc à adapter

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Un truc plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        With Selection
            .InlineShapes.AddPicture FileName:= _
            "D:\2005 - Grenoble\Télécabine de la Bastille.jpg" _
            , LinkToFile:=False, SaveWithDocument:=True
        End With


    LinkToFile = false permet de ne pas dissocier l'image du texte. L'image, considérée comme un caractère, se positionne automatiquement sous l'entête éventuelle.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Salut et merci de ta réponse!

    J'ai tester ton code et il marche quand il y a seulement un entete, mais pas kan il y a égualement un pied de page (je travail uniquement en mode paysage).

    j'avoue que je ne vois toujours pas la solution :'(.

  5. #5
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    de quel code parle tu ... il y en as 2..?

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    les 2

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Hello,
    Pour le pied de page je n'ai pas de solution simple.
    Tes pieds de pages ont-il toujours la même hauteur ?
    Ne peux-tu faire en sorte qu'ils aient toujours la même hauteur ?
    Sinon, je n'aurais d'autre solution à te proposer que celle consistant à calculer la hauteur et d'en tenir compte dans tes calculs. Ex. : une ligne en caractère Time New Roman de taille 12 fait environ 1/2 cm
    Désolé, je n'ai pas mieux pour le "Footer"

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Ok! merci,

    Je pense que je vais utiliser une hauteur max pour mes images, que l'utilisateur definira, je ne vois pas d'autre moyen. De plus la hauteur des footer ne change pas souvent donc je pense que ça ira...

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    J'ignore ce que tu as prévu au niveau de l'insersion mais comme je te l'ai dit, l'option "LinkToFile:=False" est pratique car tu peux centrer l'image comme du texte. En outre, l'image est automatiquement dimensionnée en largeur. Auquel cas, si la hauteur ne dépasse pas le plafond, tu n'as pas à la régler.
    Bonne suite

Discussions similaires

  1. Réponses: 10
    Dernier message: 14/01/2015, 00h41
  2. Réponses: 3
    Dernier message: 26/12/2008, 20h03
  3. Réponses: 3
    Dernier message: 06/12/2008, 19h34
  4. [Open XML API] : insérer une image dans Word
    Par pcayrol dans le forum C#
    Réponses: 2
    Dernier message: 07/10/2008, 09h52
  5. Réponses: 4
    Dernier message: 01/09/2007, 12h22

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