Contenu de l'articleune question posée par mail : comment importer des photos dans Excel !
Dans un fichier Excel, la colonne E nommée “Nom des Photos”, contient 50 textes alphanumériques avec l’extension .jpg (ex : PUkQ5O7Ew.jpg) correspondant au nom de 50 photos qui se trouve dans un autre dossier. Dans cet autre dossier nommé “Photos”, il y a les 50 photos correspondantes, nommées de la même façon que dans la colonne E “Nom des Photos”.
Comment faire pour que chaque photo du dossier “Photos” soit importée automatiquement dans la colonne F “Photos” en face du nom qui lui correspond (colonne E) ?
Pour associer chaque photo de votre dossier avec son nom correspondant dans la colonne “Photos” de la feuille de calcul Excel, vous pouvez suivre ces étapes :
- Insérer des images via une macro VBA :
- Ouvrez votre classeur Excel et appuyez sur
Alt
+F11
pour ouvrir l’éditeur VBA. - Allez dans
Insertion
>Module
pour créer un nouveau module. - Copiez et collez le code suivant dans le module :
- Ouvrez votre classeur Excel et appuyez sur
Sub InsertPhotos() Dim ws As Worksheet Dim lastRow As Long Dim photoPath As String Dim photoName As String Dim photoFullName As String Dim currentRow As Long ' Modifier avec le chemin du dossier contenant vos photos photoPath = "C:\Chemin\Dossier\Photos\" Set ws = ThisWorkbook.Sheets("NomDeLaFeuille") ' Remplacer par le nom réel de votre feuille lastRow = ws.Cells(ws.Rows.Count, "J").End(xlUp).Row For currentRow = 2 To lastRow ' Commence à la ligne 2 pour ignorer l'en-tête de colonne photoName = ws.Cells(currentRow, "E").Value ' Nom de la photo dans la colonne J photoFullName = photoPath & photoName If Dir(photoFullName) <> "" Then ' Vérifie que la photo existe With ws.Pictures.Insert(photoFullName) .ShapeRange.LockAspectRatio = msoFalse .Width = ws.Columns("K").Width ' Ajustez si nécessaire .Height = ws.Rows(currentRow).Height ' Ajustez si nécessaire .Top = ws.Rows(currentRow).Top .Left = ws.Cells(currentRow, "F").Left .Placement = xlMoveAndSize End With End If Next currentRow End Sub
- Modifiez
C:\Chemin\Dossier\Photos\
avec le chemin d’accès de votre dossier contenant les photos. - Changez
"NomDeLaFeuille"
par le nom réel de la feuille dans laquelle vous voulez insérer les images. - Ajustez les propriétés
.Width
et.Height
si vous voulez redimensionner les images pour qu’elles s’adaptent aux cellules. - Exécutez la macro en appuyant sur
F5
ou viaExécuter
>Exécuter Sub/UserForm
.
- Sécurité des macros :
- Assurez-vous que les paramètres de sécurité des macros sont réglés pour permettre l’exécution des macros. Cela se trouve dans
Outils
>Options
>Centre de gestion de la confidentialité
>Paramètres du Centre de gestion de la confidentialité
>Paramètres des macros
.
- Assurez-vous que les paramètres de sécurité des macros sont réglés pour permettre l’exécution des macros. Cela se trouve dans
- Images liées à des cellules :
- Les images insérées seront liées aux cellules de la colonne “K”, ce qui signifie qu’elles se déplaceront et changeront de taille avec les cellules.
- Sauvegarde et tests :
- Avant de lancer la macro, il est conseillé de sauvegarder votre fichier. Testez d’abord la macro sur quelques images pour vous assurer que tout fonctionne comme prévu.
N’oubliez pas que l’exécution de macros, surtout celles téléchargées ou copiées d’Internet, peut présenter des risques de sécurité. Assurez-vous de comprendre ce que fait le code ou faites-le vérifier par quelqu’un qui le comprend avant de l’exécuter.
Le fichier doit-il rester ouvert ou fermé pour exécuter la macro VBA ?
Vous devez garder le fichier Excel ouvert pour exécuter la macro VBA. La macro agira directement sur le classeur ouvert pour insérer les photos dans la feuille de calcul spécifiée. Voici les étapes à suivre une fois que vous avez le fichier ouvert :
- Appuyez sur
Alt
+F11
pour ouvrir l’éditeur VBA. - Insérez un nouveau module si vous n’avez pas déjà le code prêt.
- Copiez et collez ou écrivez votre macro dans le module.
- Fermez l’éditeur VBA et revenez à Excel.
- Assurez-vous que la sécurité des macros est configurée pour permettre l’exécution des macros.
- Exécutez la macro en appuyant sur
Alt
+F8
, en sélectionnant la macro, puis en cliquant sur “Exécuter”.
Si vous suivez ces étapes avec le fichier Excel ouvert, la macro devrait fonctionner correctement. Assurez-vous d’avoir sauvegardé vos données avant d’exécuter la macro, au cas où vous auriez besoin de revenir à une version précédente de votre fichier.
Comment ajuster les propriétés .Width et .Height ?
Les propriétés .Width
et .Height
dans le code VBA déterminent la largeur et la hauteur de l’image insérée. Voici comment vous pouvez les ajuster :
- Pour ajuster à la taille de la cellule : Si vous souhaitez que l’image s’ajuste exactement à la taille de la cellule, vous pouvez définir la largeur et la hauteur de l’image pour qu’elles soient égales à la largeur et à la hauteur de la cellule, respectivement.
.Width = ws.Columns("K").Width ' Ajustez la largeur à celle de la colonne K .Height = ws.Rows(currentRow).Height ' Ajustez la hauteur à celle de la ligne
- Pour ajuster proportionnellement : Si vous souhaitez maintenir le rapport largeur/hauteur original de l’image tout en s’assurant qu’elle s’insère dans la cellule :
With ws.Pictures.Insert(photoFullName) ' Maintenir le rapport hauteur/largeur .ShapeRange.LockAspectRatio = msoTrue ' Calculer le ratio de la cellule Dim cellWidth As Double, cellHeight As Double, ratio As Double cellWidth = ws.Columns("K").Width cellHeight = ws.Rows(currentRow).Height ratio = cellWidth / cellHeight ' Ajuster l'image If .Width > cellWidth Then .Width = cellWidth If .Height > cellHeight Then .Height = cellHeight ' Ajuster si l'image est trop grande pour la cellule après le premier ajustement If .Width / .Height > ratio Then .Width = cellHeight * ratio Else .Height = cellWidth / ratio End If ' Positionner l'image dans la cellule .Top = ws.Rows(currentRow).Top .Left = ws.Cells(currentRow, "K").Left .Placement = xlMoveAndSize End With
Dans le code ci-dessus, l’image est d’abord ajustée pour s’assurer qu’elle n’est pas plus grande que la largeur ou la hauteur de la cellule Excel. Ensuite, un second ajustement est fait pour maintenir le ratio en vérifiant si l’image dépasse la cellule après le premier ajustement.
- Pour ajuster avec des valeurs spécifiques : Si vous avez des dimensions spécifiques en pixels, vous pouvez les attribuer directement :
.Width = 100 ' Mettez ici la largeur souhaitée en points .Height = 50 ' Mettez ici la hauteur souhaitée en points
Gardez à l’esprit que les dimensions sont en points, pas en pixels, et que le nombre de points par pouce (ppi) dans Excel est normalement de 72. Cela signifie que si vous voulez une image de, par exemple, 100 pixels de large, et que votre affichage est à 96 ppi, vous devriez définir .Width
à 100 * 72 / 96
.