Attacher automatiquement un fichier image à une cellule

Bonjour,

je cherche une solution pour attacher automatiquement un fichier image qui se trouve sur le disque dur de mon PC. Chaque jour, je garde le même nom de fichier, mais l'image change.

Je voudrais que cette image se charge automatiquement à chaque ouverture du fichier excel dans une cellule que j'aurai dimensionnée au préalable en utilisant le "fusionner et centrer".

Comment est-il possible de réaliser cela. Je ne trouve sur le net que des solutions où je dois au préalable charger les images dans un autre classeur pour les faire apparaître dans un autre. Ce n'est pas ce que je cherche à faire.

Merci d'avance pour votre aide.

Bonjour Patton966,

Pour cela il faut que tes images soit dans le même répertoire/dossier. Afin que ton fichier ait une indication du chemin ou les trouver.

Ensuite si l'image change chaque jour, elle doit auparavant être présente dans le répertoire/dossier avant que le fichier soit ouvert et qu'il sache aussi son nom.

Exemple : s'il y a 30 images dans un dossier An2021 au début du mois de mars et qu'elle se nomme mars01 jusqu'à mars31. Il sera possible de choisir l'image du jour à afficher.

Autre exemple: Si l'image est téléchargée seulement le jour où tu ouvres le fichier. Excel devra choisir l'image la plus récente dans le dossier.

Donc tout va dépendre de ta préférence, de la provenance des images...

Ok, merci pour l'info. Pas de problème, je peux mettre les images dans le même fichier chaque jour.

La question est de savoir maintenant comment faire pour paramétrer la cellule et lui indiquer l'image à afficher automatiquement dès l'ouverture.

Merci d'avance pour ton aide.

suite,

Quelle préférence as tu?

Tu nommes tes images avec mois + jour (mars13) ou autrement?

Dans l'exemple ci-dessus, dans ta cellule il sera inscrit mars13.

Et un code vba dans le Workbook (classeur), donc de ton fichier va aller examiner si le 13 mars une cellule s'appelle mars13 et il posera l'image dans cette case.

Que veux tu ensuite? Garder un ensemble d'images dans ton fichier jour par jour ou ne garder que celle du jour, celle du 13 mars donc.

Désolé pour la réponse tardive, j'étais au tél.

En fait, je n'aurai que 2 (ou 3) images à afficher chaque jour dans 2 cellules différentes. Les images à ouvrir auront toujours le même nom (pas de précision de date).

Et je n'ai pas besoin de conserver les feuilles du jour. Je vais juste faire une impression chaque jour. Je voudrais simplement me simplifier la vie pour ne pas avoir à insérer / redimensionner à chaque fois que j'ouvre le fichier xls.

A nouveau,

Bon, si elle porte toujours le même nom, cela sera plus simplifié.

Je te laisse ici un exemple de code. Ci-dessous fait pour des images provenant du dossier Images(Pictures) et se plaçant dans la feuille Pose en case E10.

Sub PlaceImg()
Dim Cel As Range, Img As String
'Nom de l'image à chercher et placer dans le fichier
Img = "Mars13"
'Colonne de pose = E
Set Cel = Sheets("Pose").Range("E1:E200").Find(Img, , , xlWhole, xlNext)
If Not Cel Is Nothing Then C = Cel.Row Else MsgBox "Image non trouvée", vbCritical, "ATTENTION": Exit Sub
'Image de type png
Image = "Mars13.png"
Chemin = Environ("HOMEDRIVE") & Environ("HOMEPATH") & "\Pictures\"
Cells(C, "E").Select
ActiveSheet.Pictures.Insert (Chemin & Image)
End Sub

Tout autre nom d'image, type et de colonne à adapter,

Ok , j'essaye ce soir ou demain. Pas d'urgence.

Merci beaucoup en tout cas pour ton aide.

Bonne soirée.

Rappel,

Voir mon message de 19h01.

Le code doit être placé dans le Workbook. Donc en utilsant Workbook_Open.

Private Sub Workbook_Open()

'ici le code transmis sans la 1ière ligne ni la dernière
'sauf si tu places entièrement le code dans un module (donc avec sa 1ière ligne et dernière ligne et 
'que tu l'appelles d'ici par un
'call PlaceImg

End Sub

Ne pas oublier de sauver ton fichier en extension xlsm (ne pas sauver en xls) afin de faire fonctionner les macros.

Faire ALT + F11 pour ouvrir l'éditeur VBA et CTRL + R pour l'explorateur d'objets dont ThisWorkbook ou le code doit être tapé par clic droit sur ThisWorkbook.

Bonjour,

comme je l'ai dit au départ, je n'ai jamais programmé de ma vie, mais je trouve ça très intéressant de chercher à comprendre les codes. J'ai déjà regardé plusieurs vidéos à ce sujet.

Finalement, j'ai décidé de placer un bouton activeX (à la place d'une macro) pour lui demander de m'afficher un graphique.

Je lui demande d'afficher le fichier NQXXXX 15 minutes (image en png) dont le chemin d'accès est D:\Bourse\Graphiques PRT\Méthode Treeve.

Le fichier excel s'appelle Graphiques NQ avec la feuille de destination par défaut "Feuil1". La cellule de destination est A9. Je l'ai dimensionnée pour qu'elle couvre plusieurs colonnes et lignes.

1. Quand je lance l'activeX, je reçois le message "Image non trouvée" - Je ne trouve pas l'erreur

2. question subsidiaire - Comment préciser dans le code que la dimension de l'image doit s'ajuster à la dimension de la cellule A9 fusionnée

Merci d'avance.

Patrice

Private Sub Cmdimage_Click()

Dim Cel As Range, Img As String

'Nom de l'image à chercher et placer dans le fichier

Img = "NQXXXX 15 minutes"

'Colonne de pose = A

Set Cel = Sheets("Feuil1").Range("A9:A26").Find(Img, , , xlWhole, xlNext)

If Not Cel Is Nothing Then C = Cel.Row Else MsgBox "Image non trouvée", vbCritical, "ATTENTION": Exit Sub

'Image de type png

image = "NQXXXX 15 minutes.png"

Chemin = Environ("BOURSE") & Environ("Graphiques PRT") & "\Méthode Treeve\"

Cells(C, "A").Select

ActiveSheet.Pictures.Insert (Chemin & image)

End Sub

Bonsoir Patton966,

Je reprends mon dernier code pour l'adapter à ton récent message.

Car tu n'as pas besoin de trouver (Find) le nom de l'image puisque tu le connais ainsi que la cellule de destination.

Par contre il est préférable que la cellule A9 ne soit pas fusionnée. Il vaut mieux placer une forme (carré de couleur) à la taille de l'image ou un cadre.

Tu a bien renseigner l'extension de l'image, donc ici, png. Seulement c'est le chemin qui est mal précisé.

Car la méthode Environ va cibler le disque principal de l'utilisateur, donc le disque C (méthode directe) alors que tu cherches dans le disque D.

Sub PlaceImg()
  'Nom de l'image à chercher et placer dans le fichier
  'Colonne et ligne de pose = A9
  'Set Cel = Sheets("Pose").Range("E1:E200").Find(Img, , , xlWhole, xlNext)
  'If Not Cel Is Nothing Then C = Cel.Row Else MsgBox "Image non trouvée", vbCritical, "ATTENTION": Exit Sub
   'Image de type png
Image = "NQXXXX 15 minutes.png"
Chemin = "D:\Bourse\Graphiques PRT\Méthode Treeve\"
Range("A9").Select
ActiveSheet.Pictures.Insert (Chemin & Image)
End Sub

Note: Tu peux passer par un bouton simple (non-Activex) pour utiliser cette macro. Il suffit d'affecter (par clic droit) le bouton à la macro présente dans un module.

Le bouton Activex est plus utilisé pour les formulaires.

Une fois que tu auras bien réussi à insérer ton image. Je te laisserais le code pour la rendre de taille conforme à la cellule

Super, j'ai réussi !

La macro est créée. J'ai supprimé le contrôle ActiveX. J'ai rajouté un icône à la barre d'accès rapide.

Le graphique s'importe bien sur la cellule A9.

Peux-tu maintenant stp m'indiquer comment faire en sorte qu'elle se dimensionne automatiquement au carré de la cellule A9.

Je dois ensuite importée une autre image du même répertoire à un autre endroit. Je verrai si je suis capable d'écrire et modifier le code.

Merci d'avance.

Bonsoir Patton966,

Je reprends des lignes de mon code précédent et en ajoute d'autres.

En nommant surtout l'image png importée sur la feuille. Voir le Name = "EssaiJour"

Note: On peut faire une différence entre le nom de l'image dans ton dossier et le nom de l'image sur la feuille.

Le but est que si l'image dans ton dossier change mais garde toujours le même nom.

On doit pouvoir distinguer toujours les images sur la feuille. Donc elle ne porte jamais le même nom.

Ici, je l'ai appelé EssaiJour0316" pour un import fais ce jour.

Sub PlaceImg()
'Dimension de la forme. Ici un rectangle nommé Rect
'Dont le coin gauche haut est collé avec le coin haut gauche de la cellule A9
Lg = ActiveSheet.Shapes("Rect").Width
Ht = ActiveSheet.Shapes("Rect").Height
'Recherche de l'image a importer dans la feuille, placement et nommage
Image = "NQXXXX 15 minutes.png"
Chemin = "D:\Bourse\Graphiques PRT\Méthode Treeve\"
Range("A9").Select
ActiveSheet.Pictures.Insert (Chemin & Image).Name = "EssaiJour0316"
ActiveSheet.Shapes("EssaiJour0316").select
'Redimensionnement au format du rectangle
    With selection
    .shapeRange.LockAspectRatio = msoFalse
    .Width = Lg
    .Height = Ht
    .Top = Range("A9").Top + 2 ' ici le 2 est pour ajuster à minima le haut de l'image
    End With
End sub

Bonjour,

c'est ok pour moi. Tout est bon. J'importe mes 2 graphiques directement en 2 clics.

Merci beaucoup.

OK,

Ne pas oublier de clôre le sujet.

Merci.

Bonjour,

je cherche sur le site, mais je ne trouve pas la manip à faire pour clôturer le sujet.

Peux-tu stp me l'indiquer.

Merci.

Bonne journée.

Rechercher des sujets similaires à "attacher automatiquement fichier image"