Import image selon nom de la cellule et de l'image

Bonjour à tous,

à nouveau besoin d'un petit coup de main svp

Dans mon fichier Excel, j'ai une colonne contenant des gencods (1 gencod par ligne et par cellule).

Je souhaite que dans la colonne d'à côté, les images d'un dossier choisi et dont le nom correspond au gencod de chaque cellule s'importent automatiquement.

Exemple :

Colonne A; cellule 1 : J'ai mon gencod 1234567891234

Dans un dossier de mon PC, j'ai un fichier image nommé 1234567891234.jpg

Je souhaite que dans B1, l'image s'importe automatiquement.

A savoir que je peux avoir beaucoup de ligne.

Est-ce possible svp ?

Version d'Excel : Famille et petite entreprise 2016 WINDOWS

Salut,

personne pour m'aider svp ?

A moins que ce soit impossible à réaliser

Bonjour,

Avant toute chose, sur le principe .... 'Oui' ... c'est possible ...

D'un point de vue pratique, je te conseille de mettre en route ton enregistreur de macros et de faire un test avec un cas ...

Cela te permettra d'avoir une 'traduction' en macro de tes actions .... et un point de départ ...

Oula je pense que je ne suis pas assez calé pour ça

Si j'enregistre une macro, je vais aller sur la cellule qui m'intéresse et je vais insérer mon visuel mais ça ne va pas me mettre de condition dans ma macro.

J'imagine qu'il y a une condition genre "Si cellule A1 = 1234567891234 alors B2 import image C:/dossier/1234567891234.jpg"

Mais je ne sais pas retranscrire ça sur Excel

Re,

Ma main au feu .... que tu es capable de franchir la première étape du test ...avec l'enregistreur de macros ...

Je ne te demande pas de créér l'instruction pour gérer les conditions ...

On pourra toujours la greffer par la suite ...

Hum... alors... lol

voilà ce que ça me donne :

Sub Macro1()
'
' Macro1 Macro
'

'
    Range("B2").Select
    ActiveSheet.Pictures.Insert("5450248530015.JPG").Select
    Rows("2:2").RowHeight = 60
    Selection.ShapeRange.ScaleWidth 0.1652777838, msoFalse, msoScaleFromTopLeft
    Selection.ShapeRange.ScaleHeight 0.1652778622, msoFalse, msoScaleFromTopLeft
    Selection.ShapeRange.IncrementLeft 1
    Selection.ShapeRange.IncrementLeft 1
    Selection.ShapeRange.IncrementLeft 1
    Selection.ShapeRange.IncrementLeft 1
    Selection.ShapeRange.IncrementLeft 1
    Selection.ShapeRange.IncrementLeft 1
    Selection.ShapeRange.IncrementTop 1
    Selection.ShapeRange.IncrementTop 1
    Selection.ShapeRange.IncrementTop 1
    Selection.ShapeRange.IncrementTop 1
    Selection.ShapeRange.IncrementTop 1
    Selection.ShapeRange.IncrementLeft 1
    Selection.ShapeRange.IncrementLeft 1
    Range("A3").Select
    ActiveCell.FormulaR1C1 = "6111252830131"
    Range("B3").Select
    ActiveSheet.Pictures.Insert("6111252830131.jpg").Select
    Rows("3:3").RowHeight = 60
    ActiveWindow.SmallScroll Down:=8
    Selection.ShapeRange.ScaleWidth 0.2935251969, msoFalse, msoScaleFromTopLeft
    Selection.ShapeRange.ScaleHeight 0.2935251799, msoFalse, msoScaleFromTopLeft
    ActiveWindow.SmallScroll Down:=-13
    Selection.ShapeRange.ScaleWidth 0.2530812178, msoFalse, msoScaleFromTopLeft
    Selection.ShapeRange.ScaleHeight 0.2530812876, msoFalse, msoScaleFromTopLeft
    Selection.ShapeRange.IncrementLeft 1
    Selection.ShapeRange.IncrementLeft 1
    Selection.ShapeRange.IncrementLeft 1
    Selection.ShapeRange.IncrementLeft 1
    Selection.ShapeRange.IncrementLeft 1
    Selection.ShapeRange.IncrementLeft 1
    Selection.ShapeRange.IncrementLeft 1
    Selection.ShapeRange.IncrementTop 1
    Selection.ShapeRange.IncrementTop 1
    Selection.ShapeRange.IncrementTop 1
    Selection.ShapeRange.IncrementTop 1
    ActiveWindow.SmallScroll ToRight:=-95
End Sub

Re,

Avant toute chose ... je souhaite te féliciter d'avoir franchi le cap ...

Je vais rapidement améliorer ton code ...


Re,

Dans la mesure où je ne vois pas ce qui se trouve en face de tes yeux ... difficile de deviner le résultat final ...

Mais tu vas très vite comprendre la logique ... en testant la macro suivante ...

Tu trouveras en vert des commentaires explicatifs ...

Sub InsererPic1()
Dim snom As String
Dim i As Long
' Boucle pour balayer les lignes 2 à 4
  For i = 2 To 4
' Définir le nom de l'image à insérer
    snom = Range("A" & i).Value
' Se placer dans la cellule
    Range("B" & i).Select
' Insérer l'image
    ActiveSheet.Pictures.Insert(snom & ".JPG").Select
    ' Modification de la hauteur de la ligne
    Rows(i & ":" & i).RowHeight = 60
    ' Modification Position de Image
      Selection.ShapeRange.ScaleWidth 0.1652777838, msoFalse, msoScaleFromTopLeft
      Selection.ShapeRange.ScaleHeight 0.1652778622, msoFalse, msoScaleFromTopLeft
      Selection.ShapeRange.IncrementLeft 8
      Selection.ShapeRange.IncrementTop 5
  Next i
End Sub

Re,

Merci James, ça fonctionne ! C'est top !

Maintenant, peut-on ajouter d'autres extensions genre .png, .jpg etc... stp ?

Aussi, comment puis-je choisir la hauteur/largeur des visuels stp ?

Ravi que ce la fonctionne ...

Tu avoueras .. avec moi ... que la difficulté n'était pas ... comment dirais-je ... insurmontable ....

En ce qui concerne d'autres formats, il n'y a pas de raison que cela ne fonctionne pas ... la meilleure solution reste de faire des tests ...

Merci ...pour tes remerciements ...

Je fais des essais pour que les visuels prennent toute la hauteur de la cellule (tout en respectant le ratio largeur/hauteur) mais mes essais ne sont pas vraiment concluants :/

Bonjour,

Dans la mesure où il semblerait que tu manipules des images qui sont de tailles différentes ... tant que tu n'auras pas standardisé:

1. La taille de tes images

2. Les Hauteur et Largeur de tes cellules ...

Tu ne pourras faire que des approximations ... et travailler à tâtons ... en répétant les essais ...

Bon Courage pour la suite ...

Rechercher des sujets similaires à "import image nom"