Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/05/2007, 17h02   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 37
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 37
Points : 11
Points : 11
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.
el_pilacho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 10h52   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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 :
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+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2008, 17h39   #3
Invité de passage
 
Inscription : mai 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 3
Points : 3
Points : 3
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 :
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 )
_UnYx_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 09h30   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Ne serait-ce pas plutôt le contraire .
Quand on insère avec InlineShapes, la mise en forme est possible.
Teste ça :
Code :
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 :
    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 :
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
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 00h32   #5
Invité de passage
 
Inscription : mai 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 3
Points : 3
Points : 3
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
_UnYx_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 08h20   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 353
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 353
Points : 29 268
Points : 29 268
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 19h00   #7
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 23h54   #8
Invité de passage
 
Inscription : mai 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 3
Points : 3
Points : 3
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:
Citation:
It's not a bug , it's a feature
J'adore cette phrase, mais en plus avec ce smiley c'est réellement excellent!!!
_UnYx_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h01.


 
 
 
 
Partenaires

Hébergement Web