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 :

Enregistrer une image à partir d'Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Par défaut Enregistrer une image à partir d'Excel
    Bonjour à tous,

    J'importe une photo de la première page d'un document .pdf ou .ppt que j'insère dans un Userform pour vérifier qu'il s'agit bien du document voulu.
    Si c'est bien le bon document, je veux sauvegarder cette image dans un fichier .bmp mais en diminuant son poids pour des valeurs de 100 x 12O dpi.
    Le code ShapeRange.height diminue visuellement la dimension mais conserve les dimensions initiales lors de l'enregistrement.

    Ma macro est la suivante :


    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
    Dim lPicType As Long
     
    MaVar = Range("Chemin").Value & Client & "\Presentation"
    ChDir MaVar
    fileToOpen = Application.GetOpenFilename("Documents (*.ppt;*.pps;*.doc;*.pdf;*.mpg), *.pdf", , "Sélectionnez un fichier")
    If fileToOpen <> False Then
        UserForm1.Label47 = fileToOpen
        ActiveSheet.OLEObjects.Add(Filename:=fileToOpen, link:=False, DisplayAsIcon:=False).Select
        With Selection
            .ShapeRange.LockAspectRatio = msoTrue
            .ShapeRange.height = 120
            .CopyPicture xlScreen, xlBitmap
        End With
        Set Frame6.Photo.Picture = PastePicture(lPicType)
    Else: Exit Sub
    End If
    MaVar = Range("Chemin").Value & Client & "\Photos\Icones"
    ChDir MaVar
    SavePicture UserForm1.Frame6.Photo.Picture, MaVar & ".bmp"
    End Sub
    Est ce que quelqu'un a une idée ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour


    Tu pourrais par exemple utiliser la librairie "Windows Image Acquisition":

    http://silkyroad.developpez.com/VBA/...geAcquisition/



    ps
    il est d'usage de cloturer les anciens sujets avant d'en ouvrir de nouveaux:

    http://www.developpez.net/forums/sho...d.php?t=420029



    bonne soirée
    michel

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Par défaut
    Merci pour ta réponse.
    En fait, je crée une image OLE que je transforme en image Bitmap grâce à la méthode PastePicture de Stephen Bullen.
    J'ai pensé à 3 solutions pour comprimer l'image

    1°) Utiliser la fonction Shaperange mais je n'ai pas trouvé l'attribut de compression

    2°) Ajouter un format API à la méthode PastePicture que définit déjà les paramètres suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Const CF_BITMAP = 2
    Const CF_PALETTE = 9
    Const CF_ENHMETAFILE = 14
    Const IMAGE_BITMAP = 0
    Const LR_COPYRETURNORG = &H4
    Quel est alors le nouveau format API à ajouter ?

    3°) Utiliser la librairie Windows Image Application mais il me faut revoir compètement ma macro alors que dans les 2 solutions ci-dessus, il suffit d'insérer une ligne de commande

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/03/2011, 09h48
  2. Enregistrer une image dans excel
    Par 18carats dans le forum C#
    Réponses: 3
    Dernier message: 23/07/2010, 18h59
  3. Réponses: 8
    Dernier message: 10/04/2009, 15h13
  4. Créer une image à partir d'une feuille Excel
    Par fredo38 dans le forum Documents
    Réponses: 4
    Dernier message: 03/07/2008, 14h11
  5. Enregistrer une image à partir d'un canvas
    Par firehist dans le forum Ada
    Réponses: 4
    Dernier message: 18/02/2008, 12h01

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