Communication Excel / Word en VBA [Résolu/Fermé]

Signaler
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
-
Le Pingou
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
-
Bonjour,

J’ai réalisé avec plusieurs codes trouvés sur internet le petit programme qui est dans le fichier ci joint : http://www.cjoint.com/c/FCtugm4ZFJt

Ce que je n’arrive pas à mettre en place :

Dans mon code à la place du code qui suit, comment faire pour coller sur la feuille Word le dessin WordArt 1 à la place de la saisie inputBox ?


sauv_Word.Selection.TypeText Application.InputBox("Saisir le texte à écrire sur la feuille Word")


Merci de votre aide

J’ai aussi une deuxième interrogation que je n’ai pas encore explorée.
C’est comment créer un fichier .JPG à partir du Word créé puis sauvegarder le .JPG tous ça avec un code VBA qui viendra s'intégrer à celui existant.

Si vous avez des pistes merci d’avance

Cordialement

8 réponses

Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
990
Bonjour,
Pouvez-vous expliquer pourquoi cette ligne de code :
Nb_pages = InputBox("Entrer le nombre de page sur le quel le dessin sera reproduit")

Vous parlez de nombre de page et dans la suite du code vous utiliser la valeur comme largeur de l’objet [Shape]

Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7
Bonjour,

Je réalise des créations de dessin sur livre par pliage pour mon plaisir. La ligne de code en question est utilisée pour convertir un nombre de page du livre en cm de rendu d’un dessin, afin de conserver une proportion au dessin par rapport à la hauteur de celui-ci.

ce que je cherche à faire :

a) créer un dessin sur Excel (WordArt) au bonnes dimensions par rapport à la hauteur de mon livre et au nombre de page que j'utilise
b) copier ce dessin sur une page Word (objet de ma 1ere question)
c) transformer cette page Word n JPG (Objet de ma deuxième interrogation, toujours à partir du code sous Excel)
d) récupérer le JPG, donc une image de mon dessin, pour la traiter avec une autre application sous Excel (cette séquence est presque résolue)

cordialement
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
990
Bonjour,
Vous dites : un dessin sur Excel (WordArt) en principe (WordArt) est une zone de texte stylisée mais pas un dessin… !
Il se fait tard, je regarderai demain pour arriver à comprendre et voir ce qui est faisable.

Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7
Bonjour,

Vous dites : un dessin sur Excel (WordArt) en principe (WordArt) est une zone de texte stylisée mais pas un dessin… ! oui bien sur

Voici ce que je fais en manuel pour obtenir ce que je souhaite :

a) création du texte en Word Art sous Excel avec mise aux dimensions suivant mon besoin (h en cm *L en fonction du nb de page traduit ne cm).
b) je fait un copier et coller de ce texte sur Word en mode paysage centré sur la page
c) j'imprime la page Word avec Pdf Créator en pdf
d) j'ouvre le doc pdf et je le sauvegarde en jpg
e) après je récupère ce jpg (donc fichier image) que je traite en fonction de mon besoin (en automatique sous Excel, partie presque finalisée)

Je travail avec Excel 2003 et il n’est pas possible de sauvegarder une page en jpg directement, il me semble.
Sous Word je n’ai pas trouvé comment passer directement en jpg

donc je souhaiterai automatiser la section de a) à d)

Je suis à votre écoute pour tout complément d’information.

Merci par avance d’avoir consacré du temps à mon application

Bien cordialement
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
990
Bonjour,
Dans un premier temps (imprévu ; de retour en fin de soirée) je vous ai mis le code pour copier la zone de texte de Excel sur le nouveau document Word.
Votre classeur : http://www.cjoint.com/c/FCvnw4u46KI

Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7
Bonjour,

Merci pour ce travail. je vais faire des essais.

Peut-être qu’il y a une solution sans passer par Word, mais je cherche comment sélectionner toutes les cellules sur les quelles le Word Art se trouve puis faire la sauvegarde en jpeg via PDF créator.

Il semble que la gestion de PDF créator n’est pas possible par VBA, donc le changement de nom et l’extension jpg doit être sélectionnée manuellement.


Cordialement
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
990
Bonjour,
J’ai un peu d’avance.
Cet essai insère l’objet Excel sur Word et le place au centre de la page.
Votre classeur : http://www.cjoint.com/c/FCvqxGmUgCI
Note pourquoi avez-vous besoin de convertir l’objet Shape en extension JPG ….

eriiic
Messages postés
23219
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 janvier 2020
5 872
Bonjour,

des fois que ça intéresse : http://stackoverflow.com/questions/18232987/export-pictures-from-excel-file-into-jpg-using-vba
Après neutralisation de lignes dont certaines me donnaient un BSOD :
Sub test()
    For Each oShape In ActiveSheet.Shapes
        strImageName = ActiveSheet.Cells(oShape.TopLeftCell.Row, 1).Value
        oShape.Select
        'Picture format initialization
        'Selection.ShapeRange.PictureFormat.Contrast = 0.5: Selection.ShapeRange.PictureFormat.Brightness = 0.5: Selection.ShapeRange.PictureFormat.ColorType = msoPictureAutomatic: Selection.ShapeRange.PictureFormat.TransparentBackground = msoFalse: Selection.ShapeRange.Fill.Visible = msoFalse: Selection.ShapeRange.Line.Visible = msoFalse: Selection.ShapeRange.Rotation = 0#: Selection.ShapeRange.PictureFormat.CropLeft = 0#: Selection.ShapeRange.PictureFormat.CropRight = 0#: Selection.ShapeRange.PictureFormat.CropTop = 0#: Selection.ShapeRange.PictureFormat.CropBottom = 0#: Selection.ShapeRange.ScaleHeight 1#, msoTrue, msoScaleFromTopLeft: Selection.ShapeRange.ScaleWidth 1#, msoTrue, msoScaleFromTopLeft
        '/Picture format initialization
        Application.Selection.CopyPicture
        Set oDia = ActiveSheet.ChartObjects.Add(0, 0, oShape.Width, oShape.Height)
        Set oChartArea = oDia.Chart
        oDia.Activate
        With oChartArea
            .ChartArea.Select
            .Paste
            .Export ("D:\tmp\test.jpg")
        End With
        oDia.Delete    'oChartArea.Delete
    Next
End Sub

Testé sur un WordArt, j'ai bien eu le jpg
eric
Le Pingou
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
990 > eriiic
Messages postés
23219
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 janvier 2020

Bonjour eriiic,
Eh bien c’est avec grand plaisir que je vais essayer ta proposition.
Merci
Amicalement
Le Pingou
Le Pingou
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
990
Bonjour eriiic,
C’est super pratique et en adaptant ton code toutes les [Shape] se retrouvent sur bureau.
Lignes adaptées :
  .Export ("C:\Users\PJP\Desktop\test_" & c & ".jpg") ' D:\tmp\test.jpg")
End With
c = c + 1

Amicalement
Le Pingou
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7 > Le Pingou
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019

Bonjour,

Merci à tous les deux pour votre aide.

Effectivement ça marche nickel et ça répond à mon besoin.
Je vis essayer d'adapter pour pouvoir entrer le nom du fichier à sauvegarder et l'affaire sera OK

Un grand merci

Cordialement
Le Pingou
Messages postés
9517
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
30 décembre 2019
990 > mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019

Merci,de rien.
Bonne suite.
Salutations.
Le Pingou
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7
Re,

Encore merci pour votre aide rapide et efficace .

J’ai ajouter une ligne de code en début pour saisir le nom du fichier à sauvegarder, et modifié la ligne export.

nom_fichier = InputBox("Saisir le nom du fichier à sauvegarder")

For Each oShape In ActiveSheet.Shapes
strImageName = ActiveSheet.Cells(oShape.TopLeftCell.Row, 1).Value
oShape.Select
Application.Selection.CopyPicture
Set oDia = ActiveSheet.ChartObjects.Add(0, 0, oShape.Width, oShape.Height)
Set oChartArea = oDia.Chart
oDia.Activate
With oChartArea
.ChartArea.Select
.Paste
.Export ("C:\Users\Jean Mi\documents\" & nom_fichier & ".jpg")

End With
oDia.Delete 'oChartArea.Delete
Next

End Sub


Cordialement