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 :

VBA - Ajouter image (Chemin accès)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Québec
    Inscrit en
    Avril 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Québec

    Informations forums :
    Inscription : Avril 2016
    Messages : 5
    Par défaut VBA - Ajouter image (Chemin accès)
    Bonjour,

    J'aurais besoin de vos lumières pour cette macro qui sert à insérer une image. La case H1 est automatiquement définie a partir d'une série de valeur. Bref, le classeur cherche lui même le chemin d'accès.

    Le problème se situe probablement ici :
    Chemin1 = Sheets("Prog").Range("H1").Value ' Valeur de H1 : U:\Badges\Photo\Aguis Ibtissem - Photo.jpg
    ActiveSheet.Pictures.Insert(Chemin1).Select

    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
    Sub Images() 
    'Sert à insérer 1 image
     
    Dim Chemin1$, 
     
    Chemin1 = Sheets("Prog").Range("H1").Value  ' Valeur de H1 : U:\Badges\Photo\Aguis Ibtissem - Photo.jpg
     
        Sheets("Gabari recto").Select
     
        ' Sert a insérer l'image 1
        Range("C7:C11").Select  
        ActiveSheet.Pictures.Insert(Chemin1).Select
        Selection.ShapeRange.ScaleHeight 0.2, msoFalse, msoScaleFromTopLeft 
     
    End Sub
    Merci de votre aide!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution un peu différente de la vôtre, nécessitant la référence Microsoft Windows Image Acquisition Library :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    Option Explicit
     
    Sub TesterLInsertImage2()
     
    Dim RepertoireImage As String
    Dim NomDeLImage As String
    Dim ImageLargeur As Single
    Dim ShImage As Worksheet
     
        With Sheets("Prog")
             RepertoireImage = .Range("H1")     ' Ne contient que le nom du répertoire
             NomDeLImage = .Range("I1")         ' Je dissocie le nom de l'image du chemin complet
        End With
     
        Set ShImage = Sheets("Gabari recto")
        With ShImage
             ImageLargeur = .Range("C7").Width  ' Pour fixer la largeur de l'image à la largeur de la colonne C
             ' ImageRatio est une fonction calculant la proportion Largeur / Hauteur pour respecter le format Paysage ou Portrait
             Insert_Image2 ShImage, ShImage.Range("C7"), RepertoireImage, NomDeLImage, ImageLargeur, ImageRatio(RepertoireImage & "\" & NomDeLImage)
        End With
        Set ShImage = Nothing
     
    End Sub
     
    Sub Insert_Image2(ByVal FeuilleImage As Worksheet, ByVal CelluleImage As Range, ByVal RepertoireImages As String, ByVal NomDuFichierImage As String, ByVal LargeurImage As Single, ByVal RatioImage As Single)
     
    Dim MonImage As Shape
     
        With FeuilleImage
     
             ' Suppression de l'image existante
             '---------------------------------
             For Each MonImage In .Shapes
                 If MonImage.Name = "ImageFeuille" Then MonImage.Delete
             Next MonImage
     
             ' Insertion de l'image
             '---------------------
             Set MonImage = .Shapes.AddShape(msoShapeRectangle, CelluleImage.Left, CelluleImage.Top, LargeurImage, LargeurImage / RatioImage)
             With MonImage
                  .Name = "ImageFeuille"
                  With .Fill
                       .Visible = msoTrue
                       .UserPicture RepertoireImages & "\" & NomDuFichierImage
                  End With
                  With .Line
                       .Visible = msoTrue
                       .Weight = 1
                  End With
             End With
             Set MonImage = Nothing
     
        End With
     
     End Sub
     
    Function ImageRatio(ByVal CheminEtNomDeLImage As String) As Single
     
    ' A partir du tuto "Utiliser la librairie Windows Image Acquisition en VBA" de SilkyRoad et Bbil
     
    Dim Img As WIA.ImageFile
     
        Set Img = CreateObject("WIA.ImageFile")
        With Img
             .LoadFile CheminEtNomDeLImage
             ImageRatio = .Width / .Height
        End With
        Set Img = Nothing
     
    End Function
    La fonction ImageRatio récupère la proportion largeur / hauteur de l'image importée. La largeur de l'image est fixée par la largeur de la colonne C. La procédure TesterLInsertImage2 fixe les paramètres, vous pouvez donc importer vos images sur d'autres onglets.


    Cordialement.

  3. #3
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132

  4. #4
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    @Eric KERGRESSE : Pour info Eric, tu peux te passer de la référence si tu fait directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Img As Object
    Set Img = CreateObject("WIA.ImageFile")

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par cerede2000 Voir le message
    @Eric KERGRESSE : Pour info Eric, tu peux te passer de la référence si tu fait directement :
    Bonjour Cerede2000,

    Effectivement.

    Cordialement.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Québec
    Inscrit en
    Avril 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Québec

    Informations forums :
    Inscription : Avril 2016
    Messages : 5
    Par défaut
    Bonjour,

    Merci pour la réponse. Cela dit je ne comprend pas une bonne partie du code... Quel section dois-je supprimer et remplacer pour me passer de la fonction référence?

    Il n'y aurait pas juste un moyen que le chemin d'accès se règle à partir de ActiveSheet.Pictures.Insert("").Select. Le code fonctionne quand on lui mette un chemin d'accès précis. Sachant que je doit le faire 8 fois, car j'insère 8 photos au même moment j'ai un peu peur que ce prenne 2 minutes à produire avec le code fourni... Déjà que là c'est un peu long...

    Merci!

Discussions similaires

  1. [XL-2019] MACRO VBA ajouter image en commentaires en choisissant la cellule
    Par maxime68excel dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/07/2021, 15h47
  2. [XL-2010] Envoi mail lotus notes via VBA (ajout image)
    Par Vincent554 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 02/11/2015, 16h37
  3. [VBA] Ajouter image avec lien
    Par Léponge85 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/06/2008, 15h38
  4. Réponses: 15
    Dernier message: 22/10/2007, 11h14
  5. [VBA] Retrouver le chemin d'accès de la base ouverte
    Par menguygw dans le forum Access
    Réponses: 3
    Dernier message: 26/04/2006, 11h05

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