Bonjour,
Je souhaitais vous solliciter par rapport à l’une de mes problématiques en entreprise.
Pour remettre dans le contexte, nous générons des ordres de fabrication via un fichier EXCEL. Ce fichier va chercher les données de fabrication (notamment nomenclatures) dans notre système de gestion commerciale.
Afin de rendre plus « user friendly » le document distribué, mais aussi d’apporter tout de suite une information visuelle, je souhaite faire afficher une photo de l’article que les opérateurs vont devoir fabriquer.
Ces photos, au format JPEG, sont rangées dans un dossier unique nommé « Images Produits » et porte comme nom le numéro de référence de l’article. Dans une cellule du fichier Excel je vais afficher automatiquement le chemin menant à la photo du produit concerné, ex :
Z:\Images Produits\7018051.jpg
Ensuite je clique sur un bouton pour lancer une macro qui doit aller chercher la photo voulue puis l’insérer à un endroit précis du document et mettre en forme la dimension de la photo afin que le document soit directement imprimable. J’ai donc le programme suivant :
Le programme fonctionne bien mais uniquement sur le premier Ordre de fabrication. En effet la photo s’appelle « Picture 1 » dans mon programme. A chaque insertion de photo Excel incrémente leur nom, donc le sphotos deviennent picture 1, puis picture 3 etc. Or dans mon code, le nom de la photo reste fixe… Comment pourrais-je faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Sub TEST_PHOTO() 'sélectionner la cellule qui contient le lien vers la photo Range("H42:J45").Select 'insérer la photo du lien ActiveSheet.Pictures.Insert(ActiveCell.Value).Select Selection.Placement = xlMoveAndSize 'redimensionner la photo With ActiveSheet ActiveSheet.Shapes.Range(Array("Picture 1")).Left = Range("H42:J45").Left ActiveSheet.Shapes.Range(Array("Picture 1")).Top = Range("H42:J45").Top ActiveSheet.Shapes.Range(Array("Picture 1")).LockAspectRatio = msoFalse ActiveSheet.Shapes.Range(Array("Picture 1")).Height = Range("H42:J45").Height ActiveSheet.Shapes.Range(Array("Picture 1")).Width = Range("H42:J45").Width End With End Sub
Bien à vous
Partager