Alors que ma recommandation est de profiter de l'automatisation disponible sur Doality.com spécifiquement Picture Manager pour Excel
Le code vba suivant devrait répondre à vos critères. Bonne chance!
Ce code insérera l'image dans la cellule choisie et la mettra à l'échelle pour s'adapter à la largeur et à la hauteur exactes de la cellule. Par exemple:
![]()
Instructions:
Ajoutez un contrôle de bouton à votre classeur Excel (cliquez sur l'onglet Développeur, Insérer, Contrôle ActiveX, Bouton de commande) puis double-cliquez sur le bouton pour accéder au code VBA -->
Sub Button1_Click()
Dim filePathCell As Range
Dim imageLocationCell As Range
Dim filePath As String
Set filePathCell = Application.InputBox(Prompt:= _
"Veuillez sélectionner la cellule contenant le chemin d'accès de référence à votre fichier image", _
Title:="Spécifiez le chemin d'accès au fichier", Type:=8)
Set imageLocationCell = Application.InputBox(Prompt:= _
"Veuillez sélectionner la cellule dans laquelle vous souhaitez insérer votre image.", _
Title:="Cellule image", Type:=8)
If filePathCell Is Nothing Then
MsgBox ("Veuillez faire une sélection pour le chemin d'accès au fichier")
Exit Sub
Else
If filePathCell.Cells.Count > 1 Then
MsgBox ("Veuillez sélectionner uniquement une cellule contenant l'emplacement du fichier")
Exit Sub
Else
filePath = Cells(filePathCell.Row, filePathCell.Column).Value
End If
End If
If imageLocationCell Is Nothing Then
MsgBox ("Veuillez faire une sélection pour l'emplacement de l'image")
Exit Sub
Else
If imageLocationCell.Cells.Count > 1 Then
MsgBox ("Veuillez sélectionner uniquement une cellule où vous souhaitez que l'image soit insérée")
Exit Sub
Else
InsertPic filePath, imageLocationCell
Exit Sub
End If
End If
End Sub
Créez ensuite votre méthode d'insertion comme suit (elle peut suivre le code du bouton ci-dessus):
Private Sub InsertPic(filePath As String, ByVal insertCell As Range)
Dim xlShapes As Shapes
Dim xlPic As Shape
Dim xlWorksheet As Worksheet
If IsEmpty(filePath) Or Len(Dir(filePath)) = 0 Then
MsgBox ("Chemin d'accès au fichier invalide")
Exit Sub
End If
Set xlWorksheet = ActiveSheet
Set xlPic = xlWorksheet.Shapes.AddPicture(filePath, msoFalse, msoCTrue, insertCell.Left, insertCell.Top, insertCell.Width, insertCell.Height)
xlPic.LockAspectRatio = msoCTrue
End Sub
0 votes
Combien d'images avez-vous besoin dans une seule cellule?
0 votes
J'ai besoin d'une image par cellule, et je viens d'essayer d'insérer une image et de coller spécialement.
5 votes
Vous ne pouvez pas mettre des images "dans" une cellule, seulement "au-dessus". Toutes les images "flottent" sur la feuille de calcul. Vous pouvez positionner une image au-dessus d'une cellule en définissant ses propriétés
Haut
etGauche
sur leHaut
et leGauche
de la cellule. Si vous éditez votre question avec le code que vous utilisez, il sera plus facile de suggérer une approche qui pourrait fonctionner pour vous.0 votes
En plus de ce que @TimWilliams a suggéré, vous pouvez également redimensionner la cellule pour correspondre à l'image si nécessaire (et ne pas changer trop horriblement le format de votre feuille)
0 votes
Merci pour votre aide. Pas étonnant que j'aie eu tant de problèmes, il n'est pas possible de faire ce que je voulais. Je viens juste de terminer mon rapport à la main et à l'oeil.
3 votes
Voir cette démonstration pour les méthodes "sur la cellule" et "commentaire".
0 votes
Microsoft, si vous nous écoutez... veuillez vous assurer qu'un redimensionnement d'une ligne ou d'une colonne respecte la taille de l'image!!! Très important!
0 votes
Face à un problème similaire, j'ai décidé de construire le rapport dans un tableau Microsoft Word. Ici, vous n'avez qu'à coller l'image dans la cellule du tableau.