Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/07/2011, 10h03   #1
Invité de passage
 
Inscription : juillet 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 3
Points : 0
Points : 0
Par défaut Macro pour modifier le path des images

Bonjour,

Je travaille sur Word 2010 et j'aimerai savoir s'il existe une macro permettant de modifier le path de toutes les images liées dans un document.
Pour insérer des images je fais "Insérer > Images > Lier au fichier", chaque image a donc un chemin relatif. J'aimerai pouvoir modifier ce chemin d'un coup pour tous les fichiers.

J'utilisais une macro qui faisait ça sous Word 2003 mais avec 2010, elle plante.

Merci d'avance pour votre aide

Pour info, voici la macro que j'utilisais sous 2003:

Code :
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
Sub RelinkGraphics()
    On Error Resume Next
    If ActiveDocument.Path = "" Then
        MsgBox "Save your document in a folder of your choice, then try again.", , "Find graphics and copy them to folder where document is stored"
        Exit Sub
    End If
 
    For Each myShape In ActiveDocument.InlineShapes
        If myShape.LinkFormat.Type <> wdLinkTypePicture Then GoTo EndOfMyShape
        'If myShape.LinkFormat.SourcePath = ActiveDocument.Path Then GoTo EndOfMyShape
 
        MyFileWas = Dir(myShape.LinkFormat.SourceFullName)
        myfileisnow = "..\Pictures\" & myShape.LinkFormat.SourceName
 
        If myfileisnow <> "" Then
            myShape.LinkFormat.SourceFullName = myfileisnow
            myShape.LinkFormat.Update
        ElseIf MyFileWas <> "" Then
            FileCopy myShape.LinkFormat.SourceFullName, ActiveDocument.Path & Application.PathSeparator & myShape.LinkFormat.SourceName
            myShape.LinkFormat.SourceFullName = ActiveDocument.Path & Application.PathSeparator & myShape.LinkFormat.SourceName
            myShape.LinkFormat.Update
        Else
            MsgBox "Couldn't locate " & myShape.LinkFormat.SourceFullName
        End If
 
EndOfMyShape:
        ActiveDocument.UndoClear
    Next myShape
End Sub
caroline54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 16h01   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 324
Points : 29 226
Points : 29 226
Salut,

J'ai déjà vu ce code.

un problème est la non déclaration des différentes variables dans un code.

Essaie ce petit bout de code pour voir ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
Sub cheminImage()
On Error Resume Next
Dim oSH As InlineShape
Debug.Print ActiveDocument.InlineShapes.Count
 
For Each oSH In ActiveDocument.InlineShapes
If oSH.LinkFormat.Type = wdLinkTypePicture Then
Debug.Print oSH.LinkFormat.SourceName
oSH.LinkFormat.SourceFullName = ActiveDocument.Path & "\images\" & oSH.LinkFormat.SourceName
 
End If
Next oSH
 
 
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 11h26   #3
Invité de passage
 
Inscription : juillet 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 3
Points : 0
Points : 0
Bonjour,

Merci de votre réponse
Malheureusement, cette macro fait planter Word au bout d'un moment.
Pour info je travaille sous Word 2010 / document en mode de compatibilité 2003/2007 (.doc) et mon document fait plus de 1000 pages!
Cette macro passe très bien sous 2003 avec le même document.

Une petite idée?
caroline54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 11h59   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 324
Points : 29 226
Points : 29 226
Salut,

Je n'ai pas 2010 au boulot.
Comme je n'utilise pas de variables exotiques, je pensais qu'il naurait pas de problème.

Essaie sur un document de taille un peu plus petite ?
__________________
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 12h09   #5
Invité de passage
 
Inscription : juillet 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 3
Points : 0
Points : 0
Quand le document est plus petit, ça ne plante plus mais le path n'est plus bon.
Il me faut un chemin relatif "../Pictures" et il me le met en chemin absolu.
caroline54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h44.


 
 
 
 
Partenaires

Hébergement Web