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

Macros et VBA Excel Discussion :

Excel Word Signet image [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 12
    Points
    12
    Par défaut Excel Word Signet image
    Bonjour,
    J'ai un problème avec une macro Excel qui ouvre Word recherche un signet et remplace le signet par une image.
    J'ai cherché sur Google des exemples mais cela ne correspond pas.


    En quelques mots, j'ai créé une fonction qui prend en argument l'objet WordDocument, le nom du signet et le chemin de l'image.

    Mon code cherche si le signet existe et le sélectionne puis après j'ai vu qui fallait utiliser la propriétés InlinesShape.AddPicture mais lorsque je passe ma sélection bookmark cela ne marche pas.

    J'ai essayé en enregistrant une macro depuis Word pour copier le code dans ma macro Excel en adaptant un peu.

    Pouvez-vous m'aider svp?

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Poser la question dans le forum Word serait sans doute plus judicieux.
    Pourrais-tu nous montrer le code que tu as déjà écris et nous indiquer la ligne qui pose problème et éventuellement le code erreur généré.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Désolé, voici mon code.

    La ligne qui pose problème est le 'InlineShapes', j'ai essayé de faire générer le code en enregistrant la macro dans Word mais depuis excel, elle ne marche pas après adaptation.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Update_Picture(MyWordDoc As Word.Document, _
                               MyBookMark As String, _
                               MyFilename As String)
     
        If MyWordDoc.Bookmarks.Exists(MyBookMark) Then
            MyWordDoc.Bookmarks(MyBookMark).Select
            MyWordDoc.Selection.InlineShapes.AddPicture Filename:=MyFilename, SaveWithDocument:=True
        End If
    End Sub

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour

    Citation Envoyé par phdenis Voir le message
    Désolé, voici mon code.

    La ligne qui pose problème est le 'InlineShapes', j'ai essayé de faire générer le code en enregistrant la macro dans Word mais depuis excel, elle ne marche pas après adaptation.
    Quelle adaptation ?

    Si tu n'as pas modifié la ligne d'insertion, c'est que tes objets Word sont mal, ou pas, définis.

    Pour le reste, mon vendeur attitré n'a plus de boules de cristal, et la mienne est givrée à cause du froid.

    Modifié:

    Ton code repris dans Word avec ActiveDocument ne fonctionne pas chez-moi. Ton code, tels qu'il est écrit considère ton MyBookMark comme une variable ou un objet. Ton code ne sélectionne pas le signet. En fait, et tu l'aurais vu en exécutant ton code au pas-à-pas, il considère que ton MyBookMark n'existe pas.

    L'enregistreur de macros de Word est pourtant très clair:

    Il cherche un signet qui s'appelle "MyBookMark"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Selection.GoTo What:=wdGoToBookmark, Name:="MyBookMark"
    mais comme personne ne sait si ton MyBookMark est passé comme MyBookMark ou sous un nom quelconque ...

    D'autre part, l'enregistreur de macros se rend au signet avec ta ligne mais ne sélectionne pas le signet

    Il faut le sélectionner au clavier et l'enregistreur donne cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    En somme, tu mélanges des pommes et des oranges.

    Mais là je n'ai pas le temps de faire ton débogage à ta place, ni de te faire une solution gratuite et clef-en-main
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    En regardant l'aide Msn, mon erreur est que dois passer l'objet WordApplication et utiliser la propriété Selection. Pour le bookmark entre guillemets, il s'agit d'une erreur car lors de ma phase de debug j'avais remplacer le chemin par une chaîne du genre "C:\Image.png" afin de m'assurer que le chemin n'était pas le problème.

    Je teste demain sur mon programme et je marquais le sujet résolu si tel est le cas.

    Après, je sais qu'excel n'est pas une base de donnée mais pour générer 5 documents quasi-identique, il suffit largement.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Pour info, en utilisant l'aide MSDN.

    En pré-requis, l'objet Word.Application et l'objet Word.Document ont été crée et un fichier word contenant le signet passé en argument existe.

    Voici ma fonction modifiée:
    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
     
    Private Sub Update_Picture(MyWordApp As Word.Application, _
                               MyWordDoc As Word.Document, _
                               MyBookMark As String, _
                               MyFilename As String)
     
        ' Check if the Bookmark exists in the Word.Document Object
        If MyWordDoc.Bookmarks.Exists(MyBookMark) Then
     
            ' Check if the filename is valid
            If Dir(MyFilename, vbDirectory) = vbNullString Then
                 MsgBox "Error Filename: " & MyFilename & " doesn't exist!", vbCritical
            Else
                ' Select the Bookmark
                MyWordDoc.Bookmarks(MyBookMark).Select
                MyWordApp.Selection.InlineShapes.AddPicture Filename:=MyFilename, SaveWithDocument:=True
            End If
        End If
    End Sub

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

Discussions similaires

  1. [VB.net] Signets Excel <=> Word
    Par Freezee10 dans le forum VB.NET
    Réponses: 2
    Dernier message: 27/01/2011, 08h11
  2. [Excel Word] transfert d'image de word vers excel
    Par yald1 dans le forum Général VBA
    Réponses: 2
    Dernier message: 30/07/2010, 16h06
  3. Export données Excel vers signets Word
    Par stephanies_1977 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/09/2007, 16h27
  4. [VB] excel->word positionner une image
    Par estampille dans le forum VBA Word
    Réponses: 2
    Dernier message: 19/01/2006, 17h34

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