Transformer un lien image en image

polska_diane

XLDnaute Nouveau
Bonjour,

J'ai utilisé excel afin de mettre page un rapport avec graphiques. Dans certaines cellules le rédacteur peut insérer un lien correspondant à une image sur son PC. Je souhaiterai mettre un bouton de commande pour imprimer le rapport correspondant à mon onglet "Rapport Fusion" mais avant je souhaiterai un code VBA pour transformer les liens en images en précisant dans quelle cellule la positionner.
J'espère avoir été clair car pas évident d'expliquer. Merci d'avance pour votre aide.
 

Lone-wolf

XLDnaute Barbatruc
Bonjour polska_diane, le Forum :)

@polska_diane

Bein non, ce n'est pas claire du tout. Sommes-nous sencés savoir dans quelle cellule tu veux inserer une image, si tu nous le dit pas?? :rolleyes:
Et quel est le chemin du dossier où le rédacteur à son image? Programmeurs oui, mais on est pas devins.
Pour le chemin, à la place du nom du rédacteur, tu met Toto par exemple. Sans oublier un fichier sans données confidentielles,
en montrant dans quelle cellule tu veut mettre l'image.

Edit: sinon voici un exemple à adapter

VB:
Option Explicit

Private Sub Workbook_Open()
Dim sp As Shape

  'À adapter
  Sheets(1).Activate
  For Each sp In ActiveSheet.Shapes
  If sp.Type <> 8 And sp.Type <> 12 Then sp.Delete
  Next sp
  ActiveSheet.Range("h2").ClearContents
End Sub

VB:
Option Explicit

Sub Imprimer()
Dim lig&, rep$, nom$, cel As Range, img As Picture, sp As Shape, pos, prenom

    Application.ScreenUpdating = False
   
   
    On Error Resume Next
   
    For Each sp In ActiveSheet.Shapes
      If sp.Type <> 8 And sp.Type <> 12 Then sp.Delete
    Next sp

   
    With ActiveSheet
                'lig - nom et rep sont à adapter
        lig = .Range("b" & Rows.Count).End(xlUp).Row + 1
        nom = .Range("j2") & ".jpg" '  'lien de l'image
        Set img = .Pictures.Insert(nom)
        Set cel = Range("j2")
        prenom = Split(Dir(nom), ".jpg")(0)
        img.Name = prenom
        .Range("h2") = .Range("l2") & " " & img.Name
        Set pos = cel
        img.Select
        With Selection
            .Left = pos.Left
            .Top = pos.Top
            .Height = pos.Height
            .Width = pos.Width
            .Placement = xlMove
            If .ShapeRange.Height <> pos.Height Then
                .ShapeRange.Height = pos.Height:
                .ShapeRange.LockAspectRatio = msoFalse
            End If

            If .ShapeRange.Width <> pos.Width Then
                .ShapeRange.Width = pos.Width:
                .ShapeRange.LockAspectRatio = msoTrue
            End If
        End With
        .PageSetup.PrintArea = "a1:j" & lig
        .PrintPreview
        Application.Goto .Range("a1")
    End With
   
End Sub
 
Dernière édition:

polska_diane

XLDnaute Nouveau
Bonjour,
Merci pour votre réponse. Ci joint un exemple de mon problème c'est plus clair! Le principe est de télécharger les images via l'onglet "saisie" et quand on clique sur "impression rapport sur l'onglet "tableau de bord" les images fusionnent sur l'onglet rapport pour pouvoir imprimer mon rapport avec photos.
 

Pièces jointes

  • exemple image.xlsm
    63.6 KB · Affichages: 40

Lone-wolf

XLDnaute Barbatruc
@polska_diane

Edit: désolé, j'aurais dû le dire avant.

Dans une feuille à part, il faut que tu liste les chemins des images avec leurs extensions. Exemple

C: \Toto\Tata\planA.jpg
C: \Toto\Tete\planB.gif
C: \Toto\Tutu\planC.bmp

Et dans quelle cellule de l'onglet Rapport tu veux afficher l'image? Nous on est pas censés deviner.
 

Discussions similaires

Statistiques des forums

Discussions
312 182
Messages
2 086 003
Membres
103 084
dernier inscrit
Hervé30120