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 :

VBA pour mettre image devant le texte [WD-2007]


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut VBA pour mettre image devant le texte
    Bonjour,

    comme de nombreux internautes je cherche à faire une petite macro pour exécuter plusieurs actions simultanément sur une ou plusieurs images.

    Les images sont collées via le presse papier ou importées.

    Pour gagner du temps je souhaite cliquer sur une image insérée puis d'une macro la mettre au premier plan, avec un cadre en .75.

    pour le cadre c'est facile, il suffit de reprendre les instructions enregistrées pendant l'action.

    En revanche, la fonction alignement sur l'axe Z est inactive lorsque l'enregistreur de macro est activé.

    j'aimerais trouver la syntaxe qui va avec ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Selection.ShapeRange.ZOrderPosition
    .ZOrder msoBringInFrontOfText = 4
    la syntaxe est fausse, à chaque fois ça part dans le débogueur...

    merci à la personne qui saura m'éclairer :-)

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Salut,

    C'est normal, pour travailler sur une image Shape, il faut clairement la désigner.

    Première chose, récupérer son Id pour l'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim inti As Integer
    inti = Selection.ShapeRange.ID
    Ensuite, on utilise l'Id pour travailler l'image

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Shapes(inti).Top = CentimetersToPoints(10)
    dans cet exemple, je place l'image à 10 cm du bord supérieur de la feuille.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut modification image VB
    Hello, merci pour la réponse.

    Mon souci c'est que je ne sais pas quelle syntaxe appliquer pour dire à Word:
    cette image actuellement en mode (rapproché du texte) doit devenir une image "devant le texte".

    Il y a bien une instruction MsoZorder etc... mais tous les exemples que j'ai trouvés aboutissent à des erreurs .

    finalement j'ai changé le format par défaut pour l'image dans Word2007, mais ça résoud pas le problème pour autant :-)

    si tu as une instruction à me proposer je suis preneur.

    Comme je colle des petites images dans des documents au format A4, je dois m'assurer qu'elle sont toutes devant el texte, encadrées de noir (0.75) et d'une hauteur de 0,7 cm.

    j'arrive à faire tout sauf le changement de format, c'est-à-dire passer l'image devant le texte.

    Merci pour ton aide.

    tpi

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Salut,

    Que donne le code que j'ai donné ?

  5. #5
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    Testé sous 2003 et 2007

    tu dois pouvoir (peut-être) tout paramétrer à l'importation du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub toto()
     
    With ActiveDocument.Shapes.AddPicture(FileName:="C:\Documents and Settings\didier\Mes documents\Mes images\Images1.jpg", _
    LinkToFile:=True, SaveWithDocument:=True, Left:=100, Top:=100, Width:=100, Height:=100)
            .ZOrder msoBringToFront
            .WrapFormat.Type = wdWrapSquare
             '.encadrement couleur etc..
    End With
     
     
    End Sub
    wdWrapSquare fait un habillage "encadré", cf aide vba

    Super Astuce :

    Une fois la macro lancée (ou une autre du genre), l'enregistreur de macro fonctionne en laissant apparaître le boite format d'image et en te donnant tout le code... à tester chez vous si OK => FAQ ?


    cordialement,

    Didier

  6. #6
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut Déblocage Enregistreur Macros
    Bonjour,

    Super Astuce :

    Une fois la macro lancée (ou une autre du genre), l'enregistreur de macro fonctionne en laissant apparaître le boite format d'image et en te donnant tout le code... à tester chez vous si OK => FAQ ?

    Testé sous 2003 et 2007

    Je me suis penché un peu sur le phénomène (avec l'aide de Pif et d'Empirique) ce matin, et il ressort la chose suivante (sachant que l'enregistreur de macros est figé à la base quand on veut accéder aux réglages de format d'une image insérée) :

    - Ce code obtenu avec l'enregistreur pour insérer l'image est OK, mais ne débloque rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub EnregistreurFigé()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 28/07/2009 par gonard
    '
        Selection.InlineShapes.AddPicture FileName:= _
            "C:\Documents and Settings\didier\Mes documents\Mes images\Images1.jpg", _
            LinkToFile:=False, SaveWithDocument:=True
    End Sub
    - Ce code construit manuellement, une fois lancé débloque l'enregistreur de macros, qui en met une tartine, mais fournit des pistes intéressantes comme d'habitude...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub EnregistreurOK()
     
    ActiveDocument.Shapes.AddPicture FileName:="C:\Documents and Settings\didier\Mes documents\Mes images\Images1.jpg", _
    LinkToFile:=True, SaveWithDocument:=True, Left:=100, Top:=100, Width:=100, Height:=100
     
    End Sub


    résultat par exemple :

    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
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 28/07/2009 par gonard
    '
        ActiveDocument.Shapes("Picture 2").Select
        Selection.ShapeRange.Fill.Visible = msoFalse
        Selection.ShapeRange.Fill.Solid
        Selection.ShapeRange.Fill.Transparency = 0#
        Selection.ShapeRange.Line.Weight = 0.75
        Selection.ShapeRange.Line.DashStyle = msoLineSolid
        Selection.ShapeRange.Line.Style = msoLineSingle
        Selection.ShapeRange.Line.Transparency = 0#
        Selection.ShapeRange.Line.Visible = msoFalse
        Selection.ShapeRange.LockAspectRatio = msoTrue
        Selection.ShapeRange.Rotation = 0#
        Selection.ShapeRange.PictureFormat.Brightness = 0.5
        Selection.ShapeRange.PictureFormat.Contrast = 0.5
        Selection.ShapeRange.PictureFormat.ColorType = msoPictureAutomatic
        Selection.ShapeRange.PictureFormat.CropLeft = 0#
        Selection.ShapeRange.PictureFormat.CropRight = 0#
        Selection.ShapeRange.PictureFormat.CropTop = 0#
        Selection.ShapeRange.PictureFormat.CropBottom = 0#
        Selection.ShapeRange.Left = 145.1
        Selection.ShapeRange.Top = 144.85
        Selection.ShapeRange.RelativeHorizontalPosition = _
            wdRelativeHorizontalPositionColumn
        Selection.ShapeRange.RelativeVerticalPosition = _
            wdRelativeVerticalPositionParagraph
        Selection.ShapeRange.Left = CentimetersToPoints(3.53)
        Selection.ShapeRange.Top = CentimetersToPoints(3.53)
        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 = wdWrapTight
    End Sub
    cordialement,

    Didier

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Résolu
    résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Placer une image devant du texte
    Par Deciprog dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 20/02/2009, 19h24
  2. Image devant le texte d'un tag heading
    Par misterphil dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 20/10/2008, 17h32
  3. Macro VBA pour mettre colonne en ligne avec cellule fusionnée
    Par dany13 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/01/2008, 07h09
  4. Cde VBA pour mettre une phrase en gras
    Par cumpa100 dans le forum VBA Access
    Réponses: 1
    Dernier message: 01/11/2007, 11h54
  5. Récuperer lien <a href> pour mettre dans un champ texte
    Par nico26 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 21/02/2007, 16h19

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