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 :

Insertion Image dans un word [WD-2000]


Sujet :

VBA Word

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Par défaut Insertion Image dans un word
    Bonjour,

    Sujet redondant? Si c'est le cas, je m'en excuse !
    Voila, je cherche une macro VBA pour insérer une image dans un fichier word.
    L'image se trouve dans un dossier quelconque style Mes Documents/Mes Images, elle possède l'extension .gif et bien sur elle a un nom... allé soyons fous : toto !
    En clair : je veux insérer l'image dont le path est :
    Mes Documents/Mes Images/toto.gif ...

    Je m'excuse de ce newbissme extreme mais VBA et moi ça fait 12 ...

    Merci pour vos réponses !

    TequilaPAF

  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 : 61
    Localisation : Belgique

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

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

    As-tu essayé de passer par l'enregistreur de macro et de modifier le code obtenu ?

    A défaut, tu peux toujours tenter ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.InlineShapes.AddPicture FileName:="C:\temp\a.jpg", LinkToFile:=True
    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 confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Par défaut
    OK, je viens de découvrir l'enregistreur de Macros...
    J'aurais pu chercher moi même ce genre de truc mais je n'en ai pas pris le temps... Quel feignant !
    Merci beaucoup en tout cas !

    Sous WD 2000 ça se fait comme tu l'as indiqué pour info :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
         Selection.InlineShapes.AddPicture FileName:= _
            "D:\Documents and Settings\olivetr\My Documents\My Pictures\historic_schema_000.gif" _
            , LinkToFile:=False, SaveWithDocument:=True
    Merfi beaucoup vais pouvoir faire mumuse sans vous faire ch*** dorénavent.

    Tequilapaf

  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 : 61
    Localisation : Belgique

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

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

    Ça ne me fait pas ch***.
    Si c'était le cas, je ne serais pas là.
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Par défaut
    C'est pas faux ce que dis...
    Je reviens maintenant parceque j'ai un nouveau pitit problème...
    (J'ai enlevé Résolu pour ne pas refaire un nouveau post vu que c'est dans la continuité)

    Alors voila :
    Je fais de la prog sous python et grace (merci mon dieu) a win32com je peux faire mumuse avec les macros de word. Je dois intégrer une image a un endroit précis de mon fichier et je ne sais pas comment faire...
    En clair, dans mon fichier .doc, j'ai mis une chaine de caractere du type : $Image_nomdelimage et je veux lire le fichier doc et dès que je vois cette chaine de caractere je remplace par l'image correspondante !
    Voila mon code jusqu'a présent :
    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
    wordApp = win32com.client.Dispatch("Word.Application")
    wordApp.Visible = True
    list_of_doc_files_to_create = ['D:\Documents and Settings\olivetr\My Documents\My Pictures\lol.doc']
    files_to_insert = ['D:\Documents and Settings\olivetr\My Documents\My Pictures\historic_schema_000.gif']
    for y in list_of_doc_files_to_create:
        wordDoc=wordApp.Documents.Add(y)
        wordRange=wordDoc.Range(0,0).Select()
        for x in files_to_insert:
            Image = os.path.splitext(x)[0]
            Image = Image.split('\\')[5]
            #print Image
            sel = wordApp.Selection
            sel.Find.Replacement.ClearFormatting
            sel.Find.Text = '$Image_'+Image
            #sel.Find.Execute(wordApp.Selection.InlineShapes.AddPicture(x))
        wordDoc.SaveAs(y)
    Jusqu'a présent, j'ai reussi a ouvrir mon fichier, et trouver la chaine de caractere mais quelle est la commande pour lui dire :
    "Ici, tu me mets l'image que je veux"
    La ligne avec un '#' devant est un test... qui ne marche pas bien sur

    Si tu/vous avez une idée je suis preneur !
    Et pis si tu/vous avez la solution je suis preneur aussi héhé !

    Tequilaplouf

  6. #6
    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 : 61
    Localisation : Belgique

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

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

    Le Find.Exectue donnant en résultat un sélection, tu peux dans une boucle remplacer le texte de la sélection par autre chose.

    Soit tu laisser faire Word, soit tu le fais dans ton code.
    Voilà un exemple avec une recherche et un remplacement, pour le remplacement, tu peux utiliser ce que tu veux, même faire un traitement sur la données extraite.
    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
     
    Sub RemplacerTexte()
    Dim booResult As Boolean
    Selection.HomeKey unit:=wdStory
    Do
        With Selection.Find
            .Text = "oli"
            .Forward = True
            .Format = False
            booResult = .Execute
            Debug.Print "ok" & " - " & booResult & " - "; Selection.Range.Text
        End With
        If Selection.Range.Text = "oli" Then Selection.Range.Text = "Nouveau texte"
    Loop While booResult
    End Sub
    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 !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Par défaut
    Re,

    Le code marche nickel !
    Malheureusement, le but de la manoeuvre est d'automatiser un traitement de données + génération de rapport.
    Tout le traitement de données est en python mais mais mais est ce que tu sais si il est possible d'ouvrir un document word en lancant automatiquement a l'ouverture de mon .doc une macro VB?
    Parceque dans ce cas là, je peux sans problème faire la macro en VB sinon bah il faudra que je le fasse en python ... bordel niarf !
    (Je me trompe peut etre de section la. Si c'est le cas, je file chez les pythonistes poser la question)

    Sinon, j'ai fait un code:
    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
     wordApp = win32com.client.Dispatch("Word.Application")
    wordApp.Visible = True
    list_of_doc_files_to_create = ['D:\Documents and Settings\olivetr\My Documents\My Pictures\lol.doc']
    files_to_insert = ['D:\Documents and Settings\olivetr\My Documents\My Pictures\historic_schema_000.gif']
    for y in list_of_doc_files_to_create:
        wordDoc=wordApp.Documents.Add(y)
        wordRange=wordDoc.Range(0,0).Select()
        for x in files_to_insert:
            Image = os.path.splitext(x)[0]
            Image = Image.split('\\')[5]
            print Image
            Selection = wordApp.Selection
            Selection.Find.ClearFormatting
     
            Selection.Find.Text = "$Image"+Image
            Selection.Find.Replacement.Text = ""
            Selection.Find.Forward = True
            Selection.Find.Format = False
            Selection.Find.Execute
            Selection.TypeBackspace
            Selection.InlineShapes.AddPicture(x)
    Mais le probleme c'est que mon curseur ne vient pas effacer la selection et donc il ne vient pas pointer au niveau de la chaine de caractere...
    Du coup, il m'insére l'image au debut du doc.
    Est ce que tu vois l'erreur?

    Sinon, c'est peut etre une erreur dans l'adaptation des macros VB en python, une subtilité que j'ai omise... A voir !
    Si tu ne trouves rien, j'irais voir dans la section python!

    Merci beaucoup pour ton aide en tout cas.

    Tequilaplouf

  8. #8
    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 : 61
    Localisation : Belgique

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

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

    Je ne sais pas ce qui coince.

    Voilà ce que je viens d'écrire
    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
     
    ub RemplacerTexte()
    Dim booResult As Boolean
    Dim stPath(2) As String
    Dim intI As Integer
     
    stPath(0) = "C:\temp\a.jpg"
    stPath(1) = "C:\temp\b.jpg"
    intI = 0
     
    Selection.HomeKey unit:=wdStory
    For intI = 0 To 1
        With Selection.Find
            .Text = "oli" & intI
            .Forward = True
            .Format = False
            booResult = .Execute
            Debug.Print "ok" & " - " & booResult & " - " & Selection.Range.Text
        End With
        If Selection.Range.Text = "oli" & intI Then Selection.InlineShapes.AddPicture FileName:=stPath(intI)
    Next intI
    End Sub
    J'ai deux texte oli0 et oli1 dans mon document, et je remplace par le contenu de mon tableau.
    Tout baigne ?

    Maintenant, oui on peut avoir une macro qui est exécutée à l'ouverture d'un document.

    Il suffit dans le module ThisDocument d'avoir une macro avec
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Par défaut
    J'ai trouvé ce qui deconnait dans mon code...
    Et bien sur, c'est une erreur merdique !

    Code qui marche :
    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
    wordApp = win32com.client.Dispatch("Word.Application")
    wordApp.Visible = True
    list_of_doc_files_to_create = ['D:\Documents and Settings\olivetr\My Documents\My Pictures\lol.doc']
    files_to_insert = ['D:\Documents and Settings\olivetr\My Documents\My Pictures\historic_schema_000.gif']
    for y in list_of_doc_files_to_create:
        wordDoc=wordApp.Documents.Add(y)
        wordRange=wordDoc.Range(0,0).Select()
        for x in files_to_insert:
            Image = os.path.splitext(x)[0]
            Image = Image.split('\\')[5]
            print Image
            Selection = wordApp.Selection
            Selection.Find.ClearFormatting
            chaine = '$Image_'+Image
            Selection.Find.Text = chaine
            Selection.Find.Replacement.Text = ""
            Selection.Find.Forward = True
            Selection.Find.Format = False
            Selection.Find.Execute()
            Selection.InlineShapes.AddPicture(x)
    En fait, quand je déclarais la chaine de caractere a remplacer, j'avais mis :
    Ce qui lui donnait comme caracteres a chercher : $ImageNomdelimage
    Or, moi j'avais dans mon doc : $Image_Nomdelimage....
    Du coup bah il suffisait de faire : Word ne trouvait pas la chaine puisqu'elle n'existait pas !

    En tout cas, maintenant tout baigne ! Ca marche nickel il me remplace le nom de la chaine par l'image tout ça sans lever le petit doigt !

    Merci beaucoup Heureux_oli
    A+
    Tequilaplouf

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

Discussions similaires

  1. insertion image dans page word
    Par unhabitue dans le forum Word
    Réponses: 1
    Dernier message: 07/12/2012, 20h18
  2. [POI] insertion image dans WORD
    Par Sirludo002 dans le forum Documents
    Réponses: 6
    Dernier message: 16/03/2009, 14h56
  3. [VB6]Insertion image dans Excel
    Par mosquitout dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 12/04/2006, 16h30
  4. [Upload] Insertion image dans mysql après upload
    Par alexmorel dans le forum Langage
    Réponses: 4
    Dernier message: 20/03/2006, 23h46

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