Comment intégrer l'image directement à excel

lea.legrand

XLDnaute Nouveau
Bonjour,

J'ai un petit problème avec excel. J'ai ajouté les images à l'aide d'une macro que j'ai récupéré sur internet. Ces images sont insérées grâce à un répertoire que j'ai installé sur le disque C:

Le problème c'est que lorsque je supprime ce répertoire, les images ne sont plus affichés. J'ai un exemple sous les yeux qui me prouve qu'il est possible d'ajouter une image à Excel sans passer par un répertoire. Cette image est donc intégrée à Excel et n'est plus relié au répertoire. De sorte qu'il est possible d'envoyer le fichier excel seulement sur un autre ordinateur qui ne possède pas ce répertoire.

J'aimerais pouvoir faire pareil sachant que les images sont insérés dans Excel de façon automatique car j'ai plus de 2000 insertions.

Me suis-je bien fait comprendre ? Avez vous des solutions à mon problème ?

Je vous remercie d'avance pour l'aide que vous me fournirez.

Lea legrand
 

lea.legrand

XLDnaute Nouveau
Re : Comment intégrer l'image directement à excel

@MJ13

Désolé de t'avoir fait bosser pour rien. Finalement j'ai réussi à faire ce que je voulais sauf un petit détail :

Je voudrais que l'image soit centrer dans la cellule, as-tu une solution à ce problème ? (en VBA ou alors de façon automatique pour toutes les images)

Merci pour ton aide, ça fait vraiment plaisir.
 

MJ13

XLDnaute Barbatruc
Re : Comment intégrer l'image directement à excel

Re

Désolé de t'avoir fait bosser pour rien.

Pas de problèmes, je travaille surtout pour moi :).

Voic un code que j'ai retrouvé dans mon pense bête (genre MDG :eek:).

Code:
Sub Centre_Images_Cellules_22_avril_2015()
 
    Nimg = ActiveSheet.Pictures.Count
 
    'MsgBox (Nimg)
 
    For npict = Nimg To 1 Step -1
 
        ActiveSheet.Pictures(npict).Select
 
        adr = Selection.TopLeftCell.Address
 
        'MsgBox adr
 
        Largcell = Range(adr).Width
        Hautcell = Range(adr).Height
 
        LargImg = Selection.Width: A = LargImg
        HautImg = Selection.Height: B = HautImg
 
        PositionX = (Largcell - LargImg) / 2
        PositionY = (Hautcell - HautImg) / 2
 
        Selection.Cut
        Range(adr).Select
        ActiveSheet.Paste
        'Remet l'image en position 0 par rapport à la cellule
        Selection.ShapeRange.IncrementLeft 0
        Selection.ShapeRange.IncrementTop 0
 
 
        Selection.ShapeRange.IncrementLeft PositionX
        Selection.ShapeRange.IncrementTop PositionY
 
        'A revoir si on veut agrandir l'image par rapport à la cellule
        'MsgBox ActiveSheet.Shapes(10).TopLeftCell.Address
        'ActiveSheet.Pictures(npict).Width = (Largcell - 4) - 2
        'If A <= B Then ActiveSheet.Pictures(npict).Height = ((Largcell - 4) * ((HautImg - 4) / (LargImg - 4))) - 2 * Hautcell ' - 5
        'If B < A Then ActiveSheet.Pictures(npict).Height = ((Largcell - 4) * ((LargImg - 4) / (HautImg - 4))) - 2 '* Hautcell ' - 5
 
    Next
 
End Sub
 

angoul

XLDnaute Impliqué
Re : Comment intégrer l'image directement à excel

Je revient sur le sujet
j'ai pris le code de herdet que je trouve super, mais j'aimerai une petite modif
que le fichier importe qu'une seul image selectionner
et que celle image tombe sur la cellule M2
voici le code

Option Explicit
Option Base 1

Private Sub BTN_Importer_Click()
Dim ii As Integer, Pic As Object
Application.ScreenUpdating = False
With Sh_Images
.Select
' suppression des objets Images de la feuille
For Each Pic In .Pictures
Pic.Delete
Next Pic

' transfert des images dans feuille Sh_Images
For ii = 1 To UBound(Temp)
Call IMAGES_Insertion(Sh_Images.Name, Temp(ii), 20 + ii * 10, 20 + ii * 10)
Next ii
Range("M2").Select
End With

Application.ScreenUpdating = True
Unload Me
MsgBox "Import des images effectué dans la feuille " & Sh_Images.Name
End Sub

Private Sub BTN_quitter_Click()
End
End Sub

Private Sub UserForm_Initialize()
Dim ii As Integer
Rep = "P:\"
LAB_Rep = Rep

' lister les fichiers .jpg, .gif
On Error GoTo ERR_REP
On Error GoTo 0
T = Dir(Rep & "\*.jpg") ' Extrait le 1er fichier
If T <> "" Then
ii = 0: Erase Temp
Do While T <> ""
ii = ii + 1: ReDim Preserve Temp(1 To ii)
Temp(ii) = T: T = Dir
Loop
LBX_fichiers.List() = Temp
End If
Exit Sub
ERR_REP:
' erreur de répertoire
On Error GoTo 0
End Sub

quelqu'un peut t'il m'aider???
 

Herdet

Nous a quitté
Repose en paix
Re : Comment intégrer l'image directement à excel

Bonjour angoul,
Ci-jointe une version améliorée avec une possibilité de sélection multiple dans la liste des images.

L'insertion se fait dans la cellule active de la feuille IMAGES mais tu peux adapter le code VBA dans Private Sub BTN_Importer_Click() pour une cellule définie par son Range
Set Dest = ActiveCell 'Range("M2") ou toute autre cellule

Cordialement
Robert
 

Pièces jointes

  • RD_Images_Import_dans_feuille.xlsm
    32.1 KB · Affichages: 59
  • RD_Images_Import_dans_feuille.xlsm
    32.1 KB · Affichages: 51
  • RD_Images_Import_dans_feuille.xlsm
    32.1 KB · Affichages: 58

Herdet

Nous a quitté
Repose en paix
Re : Comment intégrer l'image directement à excel

Bonjour angoul,
Suivant tes demandes en MP, j'ai repris les fonctionnalités de l'application et même un peu plus.

Je me suis un peu lâché sur ce développement et pas mal amélioré.
Fonctionnalités :
- sélection de plusieurs formats d'images JPG, BMP, GIF, WMF, ICO, CUR
- sélection d'un répertoire quelconque ou du répertoire de l'application
- visualisation des images sélectionnées dans un control image
- sélection d'une feuille et d'une cellule de destination ( active ou quelconque)
- liste des images présentes sur la feuille sélectionnée
- option de suppression des images présentes sur la feuille sélectionnée

Le lancement de l' Userform se fait par le bouton de la feuille ACCUEIL ou par un double clic dans une des feuilles.

Bon travail d'adaptation

Cordialement
Robert
 

Pièces jointes

  • RD_Images_Import_dans_feuille_V1.xlsm
    56.6 KB · Affichages: 92

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote