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 :

Macro pour redimensionner images


Sujet :

VBA Word

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 152
    Points : 57
    Points
    57
    Par défaut Macro pour redimensionner images
    Bonjour

    J'ai besoin de trouver toutes les images contenue dans un fichier word, de le redimensionner et de modifier leur alignement.

    J'ai créé le bout de code suivant qui me permet de les redimensionner mais je ne trouve pas les commandes pour modifier leur placement.
    J'ai essayé d'enregistrer une macro mais les menus correspondants sont grisés et inactifs.
    Comment faire?

    Merci de votre aide

    Bernard

    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
    Sub RedimmensionnerBlasons()
     
    'Recherche des images (graphismes)
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "^g"
        .Wrap = wdFindStop
    End With
    Dim a As Integer
    a = 0
    While (a <> 1)
        Selection.Find.Execute
        If Not (Selection.Find.Found) Then
            a = 1
        Else
            With Selection.InlineShapes(1)
                .Height = 50
                .Width = 50
     
        Selection.ShapeRange.Left = 495.75
        Selection.ShapeRange.Top = 360.85
        Selection.ShapeRange.RelativeHorizontalPosition = _
            wdRelativeHorizontalPositionRightMarginArea
        Selection.ShapeRange.RelativeVerticalPosition = _
            wdRelativeVerticalPositionLine
        Selection.ShapeRange.RelativeHorizontalSize = wdRelativeHorizontalSizePage
        Selection.ShapeRange.RelativeVerticalSize = wdRelativeVerticalSizePage
        Selection.ShapeRange.Left = CentimetersToPoints(-1.5)
        Selection.ShapeRange.LeftRelative = wdShapePositionRelativeNone
        Selection.ShapeRange.Top = CentimetersToPoints(1.5)
        Selection.ShapeRange.TopRelative = wdShapePositionRelativeNone
        Selection.ShapeRange.WidthRelative = wdShapeSizeRelativeNone
        Selection.ShapeRange.HeightRelative = wdShapeSizeRelativeNone
        'Selection.ShapeRange.LockAnchor = False
        'Selection.ShapeRange.LayoutInCell = True
        'Selection.ShapeRange.WrapFormat.AllowOverlap = True
        'Selection.ShapeRange.WrapFormat.Side = wdWrapBoth
        'Selection.ShapeRange.WrapFormat.DistanceTop = CentimetersToPoints(0)
        'Selection.ShapeRange.WrapFormat.DistanceBottom = CentimetersToPoints(0)
        'Selection.ShapeRange.WrapFormat.DistanceLeft = CentimetersToPoints(0.32)
        'Selection.ShapeRange.WrapFormat.DistanceRight = CentimetersToPoints(0.32)
        'Selection.ShapeRange.WrapFormat.Type = wdWrapSquare
     
     
            End With
        End If
    Wend
    End Sub

  2. #2
    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
    Salut,

    Je pense que passer par les objets est plus facile que de passer par une recherche.

    Il existe deux types d'images, les Shapes et les InlineShapes.
    Une boucle sur ces types d'objet devrait le faire.

    Le principe est le même.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim myS as Shape
     
    For Each myS in ActiveDocument
        With myS
            ....
        End With
    Next myS
    Toutes tes images seront traitées
    A toi de voir quels propriétés tu souhaites modifier.
    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 !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 152
    Points : 57
    Points
    57
    Par défaut
    Bonjour

    Merci pour la solution.

    Je n'arrive pas à trouver les commandes qui me permettent de placer les images.
    Quand j'enregistre une macro, les commandes de menu sont grisées

    J'ai trouvé ceci : Selection.ShapeRange.RelativeHorizontalPosition = wdRelativeHorizontalPositionRightMarginArea
    Mais comment spécifier une valeur en cm ou en pt comme on peut le faire par le menu Format de l'image/Habillage/Disposition...

    Merci

    Bernard

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 152
    Points : 57
    Points
    57
    Par défaut
    Bonjour

    Ton code ne provoqait une erreur de compile.
    Je l'ai modifié comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim myS as Shape
     
    For Each myS in ActiveDocument.Shapes
        With myS
            ....
        End With
    Next myS
    Mais cela ne marche pas, pas d'erreur mais il ne voit pas les images.

    Bernard

  5. #5
    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
    Salut,

    Le code que je donne n'est pas complet, c'est juste une ébauche de code qui permet après modification d'avoir les actions que tu souhaites.
    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 !

Discussions similaires

  1. [XL-2007] Macro pour redimensionner image
    Par tomo80 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/07/2011, 11h38
  2. [XL-2003] Macro pour une image
    Par m0urad dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/11/2009, 09h09
  3. [OpenOffice][Texte] Macro pour traitement images à la chaîne
    Par Leeloo_Multiboot dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 10/09/2008, 18h27
  4. macro pour nouvelle image
    Par philoute dans le forum Langage
    Réponses: 2
    Dernier message: 17/07/2008, 14h27
  5. Code pour redimensionner images
    Par cedouche dans le forum C
    Réponses: 3
    Dernier message: 28/05/2008, 09h55

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