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 :

Problème d'insertion d'image en vba


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Par défaut Problème d'insertion d'image en vba
    Bonjour,

    J’ai créé une macro qui permet d’insérer une image dans un fichier excel. Cette image est située dans un répertoire intitulé « photos », lequel répertoire est lui-même situé au même endroit que mon classeur excel. Une fois toutes les photos insérées, je voudrais que le classeur puisse être copié sur un autre ordinateur qui ne contiendrait pas forcément le répertoire « photos ». Or, si je déplace le classeur, les photos n’apparaissent plus et un message s’affiche : impossible d’afficher l’image liée.

    Voici le code que j’utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    chemin = ActiveWorkbook.Path
    Set celprefixe = Worksheets("photos").Cells(1, 2) 
    prefixe = celprefixe.Value
    Set celnumphoto = Worksheets("fichesdetail").Cells(lfiche + 2, 12)
    numphoto = celnumphoto.Value
     
    If (numphoto <> "") Then
        With celnumphoto
            .Value = ""
        End With
     
        'Worksheets("fichesdetail").Pictures.Insert(chemin & ":photos:" & prefixe & numphoto & ".jpg").Select ‘ cette ligne et la suivante ont le même résultat
     
    Worksheets("fichesdetail").Pictures.Insert(":photos:" & prefixe & numphoto & ".jpg").Select
    Auriez-vous une solution pour que je puisse déplacer mon fichier vers un autre ordinateur ?

    En vous remerciant,

    Aurore

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonsoir Aurore,

    Essais avec "Shapes.AddPicture" pour les enregistrer (ou non) avec le classeur, je te poste un petit exemple, adapte à tes besoins :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim Image As Shape
    Dim Chemin As String
    Dim Fichier As String
     
    Chemin = ActiveWorkbook.Path & "\"
    Fichier = "MaPhoto.jpg"
    Set Image = Worksheets("fichesdetail").Shapes.AddPicture(Chemin & Fichier, False, True, 0, 0, 100, 100)
    Hervé.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Par défaut
    Je te remercie, cette méthode fonctionne.
    En revanche, cela implique un autre problème que je me permet de vous soumettre. Celui-ci concerne la mise en place et le dimensionnement des images. Voici le code que j'utilisais avec le Picture.Insert :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        If (Selection.Height < Selection.Width) Then 'photo paysage
            With Selection
                .ShapeRange.Left = Cells(lfiche + 2, 7).Left + 1.5
                .ShapeRange.Top = Cells(lfiche + 2, 7).Top + 40 
                .Width = 228 
            End With
        Else
            With Selection 'photo portrait
                .ShapeRange.Left = Cells(lfiche + 2, 7).Left + 40 
                .ShapeRange.Top = Cells(lfiche + 2, 7).Top + 1
               .Height = 230 
            End With
        End If
        Selection.Placement = xlMoveAndSize

    Mais remplacer le "With Selection" par un "With Image" ne convient pas. D'où cela peut-il provenir ?
    De plus, comment puis-je différencier les cas où ma photo est en paysage ou en portrait ?

    En vous remerciant,

    Aurore

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Par défaut
    Il s'avère que la réponse concernant le dimensionnement était presque son mon nez, je la donne pour ceux que ça intéresserait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Image = Worksheets("fichesdetail").Shapes.AddPicture(":photos:" & prefixe & numphoto & ".jpg", False, True, Cells(lfiche + 2, 7).Left + 1.5, Cells(lfiche + 2, 7).Top + 30, 228, 171)
    Concernant la différence paysage / portrait, je n'ai pas trouvé mais ce n'est pas très grâve.

    Aurore

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

Discussions similaires

  1. Problème d'insertion d'images
    Par Abhorash dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 4
    Dernier message: 08/06/2007, 18h12
  2. Problème d'insertion d'image dans un tableau
    Par aminos40 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 2
    Dernier message: 01/06/2007, 09h54
  3. problème d'insertion d'images
    Par captainflex dans le forum Ruby on Rails
    Réponses: 5
    Dernier message: 20/05/2007, 23h20
  4. Problème d'insertion d'image dans une fenêtre.
    Par Antigonos Ier Gonatas dans le forum Tkinter
    Réponses: 2
    Dernier message: 26/08/2006, 12h44
  5. [MySQL] Problème d'insertion d'image en base
    Par yokyok dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 16/05/2006, 11h01

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