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 :

Shape a remplacer par un autre [WD-2003]


Sujet :

VBA Word

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2003
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 32
    Points : 25
    Points
    25
    Par défaut Shape a remplacer par un autre
    Bonjour,

    Voici mon probleme:

    J'ai un template word avec un logo (un Shape) dans le header.

    En fonction de la langue choisie via une form, je dois changer le logo et le remplacer par un autre (traduit dans la langue souhaitee) contenu dans un repertoire quelconque.

    Le nouveau logo doit etre positionner exactement a la même place que l'ancien, mais je n'y arrive pas, pourriez vous m'aider?

    Pour le moment, ce que je fais, je me positionne dans le header et je selectionne mon logo, mais apres pour faire le remplacement, je bloque.

    Merci d'avance pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
        Selection.HeaderFooter.Shapes("Picture 4").Select
    'suite ? ......

  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,

    Pourquoi le changer ?
    Il est beaucoup plus simple de l'ajouter.
    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
    Nouveau membre du Club
    Inscrit en
    Mars 2003
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Hello,

    Tout d'abord, merci de te pencher sur mon probleme.

    Je veux le changer car je pars d'un template créé par notre équipe graphiste (ils sont ultra pointilleux) et je dois le modifier en fonction de la langue, et il est plus facile d'adapter mon document de base plutot que de le recréer entierement.

    Du moins je pense car le VB word ce n'est pas mon fort, je commence. J'ai lu tout les tutoriels, mais cela reste une introduction, j'ai besoin de fonctions plus avancées.

    D'ailleurs si tu as un lien vers du "vb word advanced", je suis preneur. Ca existe peut etre sur ce site, mais je ne l'ai pas trouve

    Enfin bon, pour le moment je cherche un peu la meilleure facon de faire...

  4. #4
    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,

    Pour ce qui est de la partie avancée, elle est en cours de réalisation.

    Pour Accéder à l'en-tête ou au pied de page, tu as utilisé l'enregistreur de macro.
    C'est une solution, mais ce n'est pas la meilleure.

    On accède à l'en-tête par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub ImageEntete()
     
    With ActiveDocument.Sections(1).Headers(wdHeaderFooterEvenPages)
        .Shapes(1).Delete
        .Shapes.AddPicture FileName:="C:\temp\a.jpg", Left:=CentimetersToPoints(1), _
            Top:=CentimetersToPoints(1)
    End With
     
     
    End Sub
    Pour une image Shape, il faut préciser l'endroit où tu vas positionner l'image.
    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 !

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2003
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Je te remercie, je teste ca demain au boulot et je clos si c'est ok.

  6. #6
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut,

    Un conseil Malorie, évite d'utiliser les Shapes et insère une image, tu auras beaucoup beaucoup de gain avec ta macro surtout dans les entêtes.

    Juste un conseil, ne dis rien aux graphistes qui utilisent souvent des shapes par simple mimétisme avec leur outil de PAO (XPress de Quark et InDesign de Adobe) mais qui n'ont aucun intérêt le plus souvent dans Word par rapport à une image mais qui sont beaucoup plus difficiles à manipuler dans Word (pb d'ancrage...).

    @+

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2003
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Hello,

    Merci du conseil Sepia, j'aurais prefere aussi ne pas l'utiliser, mais dans mon cas precis je pense que je ne peux pas faire autrement, en effet, mon logo est formé par une image suivi de texte, et je dois aligner la premiere lettre du texte du logo avec la premiere lettre de la ligne en dessous du logo. Donc le bord gauche du logo est decalle par rapport aux lignes de mon document.

    Heureux-oli, je viens de tester ton code et j'ai un probleme, rien n'apparait sur mon document, pourtant j'ai teste la presence de mon shape sur le document et le resultat de mon count m'affiche bien 1. J'ai verifie les dimensions et la taille est normale. Donc je ne sais pas quel est le probleme....

    Je n'etait deja pas fan de VBA Word mais avec toutes les difficultes que je rencontre, ca ne va pas s'ameliorer lol

    Voici ce que j'ai teste, sur un document vierge pour etre sur de ne pas avoir d'interference:

    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
    Sub testImage()
     
    With ActiveDocument.Sections(1).Headers(wdHeaderFooterEvenPages)
        .Shapes.AddPicture FileName:="C:\Logos\EN_logo4C.png", Left:=CentimetersToPoints(1), _
            Top:=CentimetersToPoints(1)
     
    End With
     
    MsgBox ActiveDocument.Sections(1).Headers(wdHeaderFooterEvenPages).Shapes.Count
    MsgBox ActiveDocument.Sections(1).Headers(wdHeaderFooterEvenPages).Shapes(1).Width
    MsgBox ActiveDocument.Sections(1).Headers(wdHeaderFooterEvenPages).Shapes(1).Height
    MsgBox ActiveDocument.Sections(1).Headers(wdHeaderFooterEvenPages).Shapes(1).Visible
    MsgBox ActiveDocument.Sections(1).Headers(wdHeaderFooterEvenPages).Shapes(1).Left
    MsgBox ActiveDocument.Sections(1).Headers(wdHeaderFooterEvenPages).Shapes(1).Top
     
    End Sub
    J'obtiens comme valeurs de retour:

    1
    142.05
    53.75
    -1
    28.3
    28.3

    Tout me semble correcte non? J'ai meme essaye d'insérer mon image via l'interface word pour etre sûre que les png sont bien pris en compte...

    Merci d'avance

  8. #8
    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,

    Tu dois faire un delete avant ?
    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 !

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mars 2003
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    J'ai trouve !!! mouahaha Ouf j'avais deja arme le pistolet pour me tirer une balle...

    Le probleme venait de la constante.... Comme je travaille sur le header de la premiere page, il fallait utiliser wdHeaderFooterFirstPage au lieu de wdHeaderFooterEvenPages.............

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With ActiveDocument.Sections(1).Headers(wdHeaderFooterFirstPage)
        .Shapes(2).Delete
        .Shapes.AddPicture FileName:="C:\Logos\EN_logo4C.png", Left:=CentimetersToPoints(1), Top:=CentimetersToPoints(1)
    End With
    Comment perdre une journee sur des bétises.

    En tout cas merci a vous pour l'aide

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/06/2010, 12h58
  2. Réponses: 2
    Dernier message: 26/05/2010, 11h23
  3. Supprimer un canevas pour le remplacer par un autre
    Par mechul dans le forum Tkinter
    Réponses: 2
    Dernier message: 27/04/2010, 02h20
  4. extraire une chaine et remplacer par une autre
    Par D.Mounir dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/06/2007, 20h04
  5. Police remplacée par une autre
    Par unreal2me dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 02/02/2007, 23h50

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