Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1753 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro sous Word insertion photos

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Macro sous Word insertion photos

n°1800345
bibou_62
geekette inside.
Posté le 15-10-2008 à 11:15:07  profilanswer
 

Hello les truffes.  
 
Je vous passe les détails (pas le temps), mais pour le taf, j’ai besoin de pouvoir insérer rapidement sur un document word un nombre important de photos.  
 
L’idéal serait de créer une macro qui permettre d’insérer toutes les photos d’un dossier, genre au lancement de la macro une boite s’ouvre demandant le chemin du dossier à traiter, et pouf, une fois la macro exécutée, toutes les images au format jpeg de ce fichier se trouvent insérées, dans l'ordre croissant des noms des photos, idéalement encore avec, intercalé entre chaque photo 2 lignes blanches et une troisième ligne au milieu avec un caractère « $ ».  
 
       Style :  
 
        Photo  
        Ligne blanche  
        $  
        ligne blanche  
        photo  
        Ligne blanche  
        $  
        .........  
 
Bref, ça me ferait gagner un temps considérable.  
 
Si quelqu’un pouvait me créer la macro et ensuite me balancer le code VBA de la macro, ce serait nickel.  
 
A vos propales, Messieurs les Pro  
 
: hello :  
 
ha oui, c'est URGENTISSIME !!!!
 


---------------
Mes Achats/Ventes // Achète Portables à réparer
mood
Publicité
Posté le 15-10-2008 à 11:15:07  profilanswer
 

n°1800357
Ptit loup
Quand c'est flou, y'a un loup
Posté le 15-10-2008 à 11:33:21  profilanswer
 

Une "geekette" qui ne sais pas écrire une macro Word... c'est pas une geekette ! :p
 
Le plus simple, c'est de faire "insérer une image", et ensuite, de tout sélectionner... là il va t'ajouter toutes les images... je vois pas l'intérêt d'une macro dans ce cas.
 
Sinon, tu peux, pour insérer une image utiliser la commande
Selection.InlineShapes.AddPicture FileName:="CHEMIN\NOM_FICHIER.EXTENSION", LinkToFile:=False, SaveWithDocument:=True
 
Et pour passer une ligne, la commande
Selection.TypeParagraph

n°1800360
bibou_62
geekette inside.
Posté le 15-10-2008 à 11:36:27  profilanswer
 

dslée, les macro je m'les fais avec la commande enregistrer :D
 
Et trop de projets en hard pour mettre les mains dans le soft en ce moment :(
 
En plus, ça urge vraiment, et je suis une bille en prog.


---------------
Mes Achats/Ventes // Achète Portables à réparer
n°1800393
Ptit loup
Quand c'est flou, y'a un loup
Posté le 15-10-2008 à 12:06:22  profilanswer
 

Eh bien ma réponse convient... donc désolé, j'ai aussi plein de trucs urgents moi aussi à faire avant de faire ceux des autres !
 
Tu fais ça avec la commande enregistrer... et ensuite tu modifies le code, donc rien de bien compliqué là dedans ! faut pas pousser non plus.
 
Dans tous les cas, la sélection multiple lors de l'insertion reste le meilleur moyen... pourquoi ne pas faire ça ?

n°1800416
bibou_62
geekette inside.
Posté le 15-10-2008 à 12:23:19  profilanswer
 

parce que ça marche pas !!!!!
 
dslée si je t'ai froissé, et merci du coup de main, j'vais tenté de regarder, mais je ne connais vraiment rien à la programmation, je suis de formation juridique : monter un pc de A à Z ok, mais le code c'est pas mon truc.
 
En tout cas encore merci.


---------------
Mes Achats/Ventes // Achète Portables à réparer
n°1800421
Ptit loup
Quand c'est flou, y'a un loup
Posté le 15-10-2008 à 12:30:47  profilanswer
 

Si si... ça marche très bien, j'ai fait le test.
 
Tu fais "insertion d'image"
ensuite, tu vas dans le répertoire qui t'intéresse... et là tu sélectionnes plusieurs fichiers images... (avec ctrl pour une sélection multiple par exemple).
 
Il t'insère alors toutes les images sélectionnées.
 
(je ne suis pas froissé mais le "faites moi tout parce que moi je suis super pressé"... bof... c'est pas trop la conception d'un forum d'entre aide)

n°1800422
bibou_62
geekette inside.
Posté le 15-10-2008 à 12:30:48  profilanswer
 

j'ai oublié de préciser, on bosse avec WORD 97, en raison des spécificités de notre logiciel preofessionnel.


---------------
Mes Achats/Ventes // Achète Portables à réparer
n°1800444
Ptit loup
Quand c'est flou, y'a un loup
Posté le 15-10-2008 à 13:34:23  profilanswer
 

Et Word 97 ne sait pas faire ça ???... il veux pas de multi sélection ? il dit quoi ?
 
Sinon, pour la macro, y'a pas besoin de savoir écrire les macros... tu fais du copier coller de la ligne que j'indique autant de fois que d'images, et tu indiques le nom du fichier image... ça ne nécessite aucune connaissance en programmation, simplement de savoir remplacer "CHEMIN" par le chemin où se trouvent les images... je pense que c'est à la portée de quiconque qui sait se servir un minimum d'un ordinateur.

n°1800446
bibou_62
geekette inside.
Posté le 15-10-2008 à 13:38:41  profilanswer
 

Ptit loup a écrit :

Si si... ça marche très bien, j'ai fait le test.
 
Tu fais "insertion d'image"
ensuite, tu vas dans le répertoire qui t'intéresse... et là tu sélectionnes plusieurs fichiers images... (avec ctrl pour une sélection multiple par exemple).
 
Il t'insère alors toutes les images sélectionnées.
 
(je ne suis pas froissé mais le "faites moi tout parce que moi je suis super pressé"... bof... c'est pas trop la conception d'un forum d'entre aide)


 
je t'assure, impossible de sélectionner plusieurs photos que ce soit avec cTRL ou shift.
 
avec ton code ok, mais la difficulté, pour moi, c'est de créer une boucle pour lui faire insérer toutes les photos ou une fourchette de numéros préalablement définie  :sweat:  


---------------
Mes Achats/Ventes // Achète Portables à réparer
n°1800447
bibou_62
geekette inside.
Posté le 15-10-2008 à 13:40:50  profilanswer
 

Ptit loup a écrit :

Et Word 97 ne sait pas faire ça ???... il veux pas de multi sélection ? il dit quoi ?
 
Sinon, pour la macro, y'a pas besoin de savoir écrire les macros... tu fais du copier coller de la ligne que j'indique autant de fois que d'images, et tu indiques le nom du fichier image... ça ne nécessite aucune connaissance en programmation, simplement de savoir remplacer "CHEMIN" par le chemin où se trouvent les images... je pense que c'est à la portée de quiconque qui sait se servir un minimum d'un ordinateur.


 
en fait je veux automatiser l'opération : pour rédiger des PV de constats de travaux, avec insertion de 200 photos en moyenne.... donc le but ce serait d'insérer toutes photos d'un coup et taper le texte ensuite.
 
en fait la macro doit être à vocation générale, avoir une boite de dialogue où on entre le fichier spécifié.
je sais pas si c'est très clair... :(


---------------
Mes Achats/Ventes // Achète Portables à réparer
mood
Publicité
Posté le 15-10-2008 à 13:40:50  profilanswer
 

n°1800470
Ptit loup
Quand c'est flou, y'a un loup
Posté le 15-10-2008 à 14:20:27  profilanswer
 

Bon... j'ai pas pris le temps de faire une boite de dialogue pour "naviguer" sur le disque pour choisir le répertoire... mais ça devrait déjà bien te dépanner...
(regarde ce que fait cette macro, ça peut être intéressant).
 

Sub InsertionImages()
 
Dim Repertoire As String
Dim Extension As String
Dim Fichier As String
 
'Saisie du nom du répertoire
Repertoire = InputBox("Chemin complet du répertoire (\ à la fin)", "Répertoire", "D:\Mes images" )
'Saisie du type d'extension
Extension = InputBox("Type de fichier (sans le point, ex : jpg, png, bmp)", "Type de fichier", "jpg" )
 
'Récupération du premier fichier du répertoire
Fichier = Dir(Repertoire & "*" & Extension, vbDirectory)
 
Do While Fichier <> ""
    i = i + 1
    'Insertion de l'image
    Selection.InlineShapes.AddPicture FileName:=Repertoire & Fichier
    'Insertion d'une ligne vide
    Selection.TypeParagraph
    'Récupération du prochain fichier du répertoire
    Fichier = Dir
Loop
 
End Sub


 
Je vais insérer ta question ainsi que la réponse dans le topic unique Word... histoire que ça puisse resservir à d'autres !

n°1800476
bibou_62
geekette inside.
Posté le 15-10-2008 à 14:27:34  profilanswer
 

ok, je vais tester ça de suite, merci mille fois.


---------------
Mes Achats/Ventes // Achète Portables à réparer
n°1800513
bibou_62
geekette inside.
Posté le 15-10-2008 à 15:23:00  profilanswer
 

Encore un grand grand merci, c'est tout simplement impec, ça va me fare gagner un temps fou !!!!
 
j'vais voir si je peux aussi par ce biais déterminer directement la taille des photos.
 
Pour la mise en page, c'est déjà fait.
 


---------------
Mes Achats/Ventes // Achète Portables à réparer
n°1800519
bibou_62
geekette inside.
Posté le 15-10-2008 à 15:35:59  profilanswer
 

J'ai essayé d'ajouter la ligne en rouge, pour la taille, mais ça ne veut pas, je supose qu'il ne sait pas kel objet est à traiter : mais je sais pas comment lui dire non plus  :cry:
 
Sub InsertionImages()
 
Dim Repertoire As String
Dim Extension As String
Dim Fichier As String
 
'Saisie du nom du répertoire
Repertoire = InputBox("Chemin complet du répertoire (\ à la fin)", "Répertoire", "D:\Mes images" )
'Saisie du type d'extension
Extension = InputBox("Type de fichier (sans le point, ex : jpg, png, bmp)", "Type de fichier", "jpg" )
 
'Récupération du premier fichier du répertoire
Fichier = Dir(Repertoire & "*" & Extension, vbDirectory)
 
Do While Fichier <> ""
    i = i + 1
    'Insertion de l'image
    Selection.InlineShapes.AddPicture FileName:=Repertoire & Fichier
    Selection.InlineShapes.Width = 200
    'Insertion d'une ligne vide
    Selection.TypeParagraph
    'Récupération du prochain fichier du répertoire
    Fichier = Dir
Loop
 
End Sub


Message édité par bibou_62 le 15-10-2008 à 15:54:55

---------------
Mes Achats/Ventes // Achète Portables à réparer
n°1800538
bibou_62
geekette inside.
Posté le 15-10-2008 à 15:56:41  profilanswer
 

J'ai :  
 
erreur de compilation
membre de méthode ou de donnée introuvable


---------------
Mes Achats/Ventes // Achète Portables à réparer
n°1800539
seniorpapo​u
Posté le 15-10-2008 à 15:58:46  profilanswer
 

Bonsoir,
essaye ceci:
remplacer    Selection........ par: set ILS = Selection.....
 
et ta "ligne en rouge" par:     ILS.Width=200
 
width ne change que la largeur, il fauda aussi changer Heigth

n°1800544
bibou_62
geekette inside.
Posté le 15-10-2008 à 16:01:10  profilanswer
 

en fait un truc du genre, pour la taille image :
 
If eight < Width,     Selection.InlineShapes.Width = 200  
else eight=200
 
mais ça doit pas être la bonne syntaxe  :whistle:
 
>>> et aussi lui dire de le faire en sélectionnant l'image, ça arrangera mon message d'erreur, je suppose  :sweat:


Message édité par bibou_62 le 15-10-2008 à 16:02:04

---------------
Mes Achats/Ventes // Achète Portables à réparer
n°1800551
seniorpapo​u
Posté le 15-10-2008 à 16:09:06  profilanswer
 

Re,
je tenterai ceci:
 
Wio = ils.Width
       ils.Width = 200
       ils.Height = ils.Height * 200 / Wio

n°1800554
bibou_62
geekette inside.
Posté le 15-10-2008 à 16:10:43  profilanswer
 

seniorpapou a écrit :

Bonsoir,
essaye ceci:
remplacer    Selection........ par: set ILS = Selection.....
 
et ta "ligne en rouge" par:     ILS.Width=200
 
width ne change que la largeur, il fauda aussi changer Heigth


 
 
je mets koi à la places des ..... ?
si je mets une ligne en-dessous de ma ligne "selection"...
style : "Set ILS = Selection" ça marche pas, j'ai "erreur... propriété ou méthode non gérée par cet objet"
et si je mets "Set ILS=" devant ma ligne Selection, j'ai une erreur de compilation.
 
 :sweat:


---------------
Mes Achats/Ventes // Achète Portables à réparer
n°1800555
seniorpapo​u
Posté le 15-10-2008 à 16:11:20  profilanswer
 

tu dois mettre des parenthèses je crois:
set ILS =Selection.InlineShapes.AddPicture (FileName:=Repertoire & Fichier )

n°1800559
seniorpapo​u
Posté le 15-10-2008 à 16:14:08  profilanswer
 

Je dois m'absenter, je repasse la main à ptit loup que je salue.


Message édité par seniorpapou le 15-10-2008 à 16:14:20
n°1800576
Ptit loup
Quand c'est flou, y'a un loup
Posté le 15-10-2008 à 16:31:23  profilanswer
 

Voilà le nouveau code à utiliser alors pour la partir "insertion de l'image"...
 

   'Insertion de l'image
    Set objShape = Selection.InlineShapes.AddPicture(FileName:=Repertoire & Fichier)
    With objShape
        .LockAspectRatio = msoTrue
        .Width = 200
    End With


 
Libre à toi de choisir autre chose que 200 comme largeur !

n°1800599
bibou_62
geekette inside.
Posté le 15-10-2008 à 16:57:44  profilanswer
 

Possible d'avoir un truc de ce style (traduit en bonne syntaxe):
 
   'Insertion de l'image
    Set objShape = Selection.InlineShapes.AddPicture(FileName:=Repertoire & Fichier)
    With objShape
        .LockAspectRatio = msoTrue
if width > eight  
        .Width = 200
        .else eight =200

    End With
 
 
merci  :hello:


Message édité par bibou_62 le 15-10-2008 à 17:01:07

---------------
Mes Achats/Ventes // Achète Portables à réparer
n°1800614
bibou_62
geekette inside.
Posté le 15-10-2008 à 17:07:14  profilanswer
 

j'ai essayé ça, mais y'a pas bon :
 
Set objShape = Selection.InlineShapes.AddPicture(FileName:=Repertoire & Fichier)
    With objShape
        .LockAspectRatio = msoTrue
If objShape.Width > objShape.eight Then objShape.Width = 200
        objShape.eight = 200
    End With


---------------
Mes Achats/Ventes // Achète Portables à réparer
n°1800619
Ptit loup
Quand c'est flou, y'a un loup
Posté le 15-10-2008 à 17:08:01  profilanswer
 

Oui, tu peux en effet faire ça...
Il va te falloir plutôt utiliser le .width et le .height pour que la syntaxe soit correcte... et ça devrait marcher (et virer le . du else :) )

n°1800623
Ptit loup
Quand c'est flou, y'a un loup
Posté le 15-10-2008 à 17:09:46  profilanswer
 

Comme ça
 

Set objShape = Selection.InlineShapes.AddPicture(FileName:=Repertoire & Fichier)
    With objShape
        .LockAspectRatio = msoTrue
        If .Width > .Height Then
            .Width = 200
        else
            .Height = 200
        end if
    End With


 
Le With rend en fait le "objShape" implicite quand tu utilises la notation pointée.


Message édité par Ptit loup le 15-10-2008 à 21:42:03
n°1800636
bibou_62
geekette inside.
Posté le 15-10-2008 à 17:19:36  profilanswer
 

ça marche pas, j'ai "erreur... propriété ou méthode non gérée par cet objet"  


---------------
Mes Achats/Ventes // Achète Portables à réparer
n°1800642
bibou_62
geekette inside.
Posté le 15-10-2008 à 17:24:07  profilanswer
 

apparemment c'est le test qui le chagrine " If .Width > .Eight Then"


---------------
Mes Achats/Ventes // Achète Portables à réparer
n°1800661
seniorpapo​u
Posté le 15-10-2008 à 17:51:25  profilanswer
 

bonsoir, mettre un H a eight  c'est: Height

n°1800674
bibou_62
geekette inside.
Posté le 15-10-2008 à 18:14:19  profilanswer
 

lol j'ai trouvé depuis, merci.
 
Par contre, je n'arrive pas à avoir un raport correct hauteur / largeur, du coup j'ai essayé ça :
 
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
Set objShape = Selection.InlineShapes.AddPicture(FileName:=Repertoire & Fichier)
Set ratio = (objShape.with / objShape.Height)
    With objShape
         If .Width > .Height Then
            .Width = 405.35
            .Height = 405.35 / ratio
        Else
            .Height = 405.35
            .Width = 405.35 / ratio
                         
        End If
             
    End With

 
Mais à mon avis faut autre chose à la place de "ratio", non ?


---------------
Mes Achats/Ventes // Achète Portables à réparer
n°1800685
seniorpapo​u
Posté le 15-10-2008 à 18:46:52  profilanswer
 

pas le temps de tester, mais j'aurais mis  
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter  
Set objShape = Selection.InlineShapes.AddPicture(FileName:=Repertoire & Fichier)  
    ratio = (objShape.width / objShape.Height) <-------width et non with
    With objShape  
         If .Width > .Height Then  
            .Width = 405.35  
            .Height = 405.35 / ratio  
        Else  
            .Height = 405.35  
            .Width = 405.35 * ratio  
                         
        End If  
             
    End With


Message édité par seniorpapou le 15-10-2008 à 20:12:13
n°1800714
bibou_62
geekette inside.
Posté le 15-10-2008 à 20:36:33  profilanswer
 

j'ai un message : erreur de compilation objet requis, en arrivant sur "set ratio"


---------------
Mes Achats/Ventes // Achète Portables à réparer
n°1800718
seniorpapo​u
Posté le 15-10-2008 à 21:03:49  profilanswer
 

tu remarqueras que j'ai supprimé le SET dans cette ligne là

n°1800739
Ptit loup
Quand c'est flou, y'a un loup
Posté le 15-10-2008 à 21:41:03  profilanswer
 

Le pb du rapport hauteur/largeur.... c'est que comme des saloupiauds, vous avez dégagé la ligne qui le conservait ce rapport ! grrr !
=> .LockAspectRatio = msoTrue  
 
Donc aucun intérêt de calculer le ratio et de fixer ET hauteur ET largeur...
On fait le test sur la plus grande longueur... et on fixe cette longueur (qui est souvent la largeur, et parfois la hauteur (enfin, ça dépend du type d'image) à la valeur que l'on veut...
Tout ça comme dans mon code... (avec le H en plus :p) j'ai repris le code rapidos sans en vérifier la syntaxe... sorry.

n°1800743
seniorpapo​u
Posté le 15-10-2008 à 21:49:01  profilanswer
 

Bonsoir,
j'avais cru comprendre qu'il navait pas réussi à conserver les proportions avec le .LockAspectRatio = msoTrue  
 
Voir son message Posté le 15-10-2008 à 18:14:19  
 

n°1800747
Ptit loup
Quand c'est flou, y'a un loup
Posté le 15-10-2008 à 22:04:24  profilanswer
 

ça devait venir de l'erreur d'ortho je suppose...
 
En tout cas, le LockAspectRatio fonctionne très bien, comme indiqué plus haut, je l'ai testé.

n°1800755
seniorpapo​u
Posté le 15-10-2008 à 22:15:40  profilanswer
 

Je n'avais pas testé, mais je viens de le faire avec ce que tu indiques au "Posté le 15-10-2008 à 17:09:46"  , l'image est déformée. Pourtant cela devrait fonctionner, je suis d'accord avec toi. Bonne nuit.

n°1800761
seniorpapo​u
Posté le 15-10-2008 à 22:23:09  profilanswer
 

avant de fermer, j'ai trouvé ceci:
 
http://social.msdn.microsoft.com/F [...] 2161e476b/

n°1800764
Ptit loup
Quand c'est flou, y'a un loup
Posté le 15-10-2008 à 22:27:13  profilanswer
 

Bon... eh bien j'ai refait le test... et je confirme que pour moi, tout est OK avec cette macro (Word 2007, mais les fonctions utilisées n'ont rien de particulier ni de récent)
J'ai fait le test avec plusieurs répertoires images... en paysage et en portrait... en différents formats, et aucune n'est déformée.
(ensuite, si la valeur indiquée est plus grande que la largeur possible sur la page, j'ai pas fait de tests, mais ça peut jouer)
 

Sub InsertionImages()
 
'Macro qui permet une insertion d'une série d'images d'un répertoire donné,
'Avec une ligne blanche entre chaque image
 
Dim Repertoire As String
Dim Extension As String
Dim Fichier As String
 
'Saisie du nom du répertoire
Repertoire = InputBox("Chemin complet du répertoire (\ à la fin)", "Répertoire", "D:\Mes images" )
'Saisie du type d'extension
Extension = InputBox("Type de fichier (sans le point, ex : jpg, png, bmp)", "Type de fichier", "jpg" )
 
'Récupération du premier fichier du répertoire
Fichier = Dir(Repertoire & "*" & Extension, vbDirectory)
 
Do While Fichier <> ""
    i = i + 1
    'Insertion de l'image
    Set objShape = Selection.InlineShapes.AddPicture(FileName:=Repertoire & Fichier)
    With objShape
        .LockAspectRatio = msoTrue
        If .Width > .Height Then
            .Width = 200
        Else
            .Height = 200
        End If
    End With
    'Insertion d'une ligne vide
    Selection.TypeParagraph
    'Récupération du prochain fichier du répertoire
    Fichier = Dir
Loop
 
End Sub

n°1800772
Ptit loup
Quand c'est flou, y'a un loup
Posté le 15-10-2008 à 22:29:52  profilanswer
 

OK pour le lien... ou alors peut être un bug corrigé seulement sur les versions récentes d'Office...
Il reste l'autre solution, de calculer le ratio à la main, et de le reporter sur hauteur et largeur à chaque fois...

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro sous Word insertion photos

 

Sujets relatifs
Macro Excel: recherche dans des objets OLE[JS] clean word et expression régulière
probleme macro excelInteraction utilisateur et macro
Open XML API : insérer une image dans WordInsertion d'image : quels sont les attributs recommandés ?
Faire tourner une macro en tache de fondInsertion d'une inscription en ligne???
Recherche script gallerie photos !Macro d'envoi d'emails fonctionnant mais pas dans perso.xls
Plus de sujets relatifs à : Macro sous Word insertion photos


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR