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 :

[word] changer l'habillage d'une image [À faire]


Sujet :

VBA Word

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Points : 33
    Points
    33
    Par défaut [word] changer l'habillage d'une image
    bonjours za tous zé ta toute !!!
    j'aimerais modifier l'habillage d'une image dans mon entête. elle est en "alligné sur le texte" et je voudrais la mettre en "encadré".
    comment je fais ?
    j'ai déjà essayé en enregistrant une macro, pour avoir le code, mais cette fonction est indisponible.
    merci pour votre aide.

  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
    Si ton image n'est pas insérée dans un contrôle image, tu ne peux utiliser "l'habillage" mais tu peux l'encadrer par Bordure et Trame -> Menu format. C'est une page de code mais tu peux faire ça. Ex
    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
        With Selection.InlineShapes(1)
            With .Borders(wdBorderLeft)
                .LineStyle = wdLineStyleSingle
                .LineWidth = wdLineWidth050pt
                .Color = wdColorAutomatic
            End With
            With .Borders(wdBorderRight)
                .LineStyle = wdLineStyleSingle
                .LineWidth = wdLineWidth050pt
                .Color = wdColorAutomatic
            End With
            With .Borders(wdBorderTop)
                .LineStyle = wdLineStyleSingle
                .LineWidth = wdLineWidth050pt
                .Color = wdColorAutomatic
            End With
            With .Borders(wdBorderBottom)
                .LineStyle = wdLineStyleSingle
                .LineWidth = wdLineWidth050pt
                .Color = wdColorAutomatic
            End With
            .Borders.Shadow = False
        End With
        With Options
            .DefaultBorderLineStyle = wdLineStyleSingle
            .DefaultBorderLineWidth = wdLineWidth050pt
            .DefaultBorderColor = wdColorAutomatic
        End With
    Fait en enregistrant la macro
    A+

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Quand on fait "un insérer à partir du fichier", on ne peut en effet pas enregistrer une macro qui effectue cette opération.
    La commande magique qui lève ce problème est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.InlineShapes.Item(1).ConvertToShape
    Il semble que l'enregistreur de macro ne gère pas cette fonction puisque tout se grise quand on arrive dans l'onglet concerné ...
    Une fois la transformation effectuée, on se retrouve avec une image en habillage "devant le texte" et on peut relancer un enregistrement de macro pour affiner les opérations qui suivent (et là il est possible de choisir le type d'habillage )

  4. #4
    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
    Ne serait-ce pas plutôt le contraire .
    Quand on insère avec InlineShapes, la mise en forme est possible.
    Teste ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Selection.InlineShapes.AddPicture FileName:= "D:\Images\Chat méchant.bmp"
        With Selection.InlineShapes(1)
            With .Borders(wdBorderLeft)
                .LineStyle = wdLineStyleSingle
                .LineWidth = wdLineWidth050pt
                .Color = wdColorAutomatic
            End With
        End With
    Là, c'est ok.
    Par contre, si tu insères un objet shape,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ActiveDocument.Shapes.AddPicture FileName:= "D:\Images\kirikiki.bmp"
    Là, tu dois convertir ton objet en inlineshape pour autoriser la mise en forme par macro.
    Teste ça
    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
    Sub test2()
    Dim LeTruc As Variant
        ActiveDocument.Shapes.AddPicture FileName:="D:\Images\Chat méchant.bmp"
        ActiveDocument.Shapes(1).Select
        Set LeTruc = ActiveDocument.Shapes(1)
            With LeTruc
                .ConvertToInlineShape
            End With
        With ActiveDocument.InlineShapes(1)
            .Height = 200 'en inch
            .Width = 300
            With .Borders(wdBorderLeft)
                .LineStyle = wdLineStyleSingle
                .LineWidth = wdLineWidth050pt
                .Color = wdColorAutomatic
            End With
        End With
        Set LeTruc = Nothing
    End sub
    Faut pas y dire n'importe quoi à el_pilacho
    Bonne journée

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Là on touche aux limites de mes connaissances du VBA, car pour moi la différence entre les shapes & inlineshapes est obscure
    Ce que je sais par contre c'est que les 2 habillages qui me sont utiles sous word sont devant & derrière le texte;tant qu'il s'agit d'inlineshapes, Word ne veut pas en entendre parler, dès qu'on convertit en shapes, là ça marche.

    Pour le redimensionnement, il me semble que dans les 2 cas c'est possible, mais je n'en mettrais pas ma main à couper (pas de word sous la main pour tester ici)

    En y réfléchissant bien, littéralement, la différence entre les 2 doit être l'insertion dans le texte (d'où le inline), mais quant à savoir pourquoi ils ont éprouvé le besoin de faire 2 classes différentes d'objets alors qu'il aurait peut-être été plus transparent de définir une propriété correspondant à la manière de s'insérer (en gros ce qui est affiché dans la boite de dialogue directement sous word)... les voies du vba sont impénétrables

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Un objet shape est une objet qui peut être déplacé n'importe où sur le document.
    On peut le mettre devant ou derrière le texte, dans le texte,...

    Par contre un objet InlineShape se trouve "incorporé" dans une ligne de texte.
    Un peu comme si c'était un caractère.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  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
    Citation Envoyé par _UnYx_ Voir le message
    Là on touche aux limites de mes connaissances du VBA, car pour moi la différence entre les shapes & inlineshapes est obscure
    Ce que je sais par contre c'est que les 2 habillages qui me sont utiles sous word sont devant & derrière le texte;tant qu'il s'agit d'inlineshapes, Word ne veut pas en entendre parler, dès qu'on convertit en shapes, là ça marche.
    Si tu veux déplacer ton objet, c'est ok, le shape peut se mettre où on veut dans la feuille tandis que, comme le dit Heureux_Oli, l'inlineshape s'intègre dans une ligne de texte.
    Par contre, pour redimensionner l'objet, l'encadrer, ... il doit être converti en inlineshape.
    Rien ne t'empêche de jouer alternativement avec les deux, ConvertToInlineShape et ConvertToShape...
    Jamais fait mais j'y penserai le jour où j'en aurai besoin

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci à tous les deux pour ces précisions.
    A la réflexion, il faudra probablement que je songe aussi à jongler avec les 2 types

    Cette histoire me rappelle une maxime célèbre:
    It's not a bug , it's a feature
    J'adore cette phrase, mais en plus avec ce smiley c'est réellement excellent!!!

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/04/2006, 17h03
  2. [ImageMagick] Changer le dpi d'une image
    Par gIch dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 20/02/2006, 11h42
  3. changer la dimension d'une image dans un tableau
    Par robocop2776 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/10/2005, 15h20
  4. Changer l'adresse d'une image?
    Par Death83 dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 19/10/2005, 15h13
  5. [VisualC++] Changer le format d'une image
    Par dananchet dans le forum MFC
    Réponses: 1
    Dernier message: 06/05/2005, 15h05

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