Glenn prépare un catalogue de toutes ses photos numériques dans Excel. Toutes les photos (environ 5000 d’entre elles) sont dans un seul dossier. Il aimerait insérer les photos à droite de la description de la photo, puis mettre un hyperlien vers toutes les photos pour agrandir la vignette à une photo plus grande.

En ce moment, Glenn le fait un par un et cela le rend fou, alors il cherche des moyens d’accélérer le processus.

La bonne nouvelle est que vous n’avez pas à devenir fou aussi vite; Excel fournit des macros qui peuvent rendre le travail plus rapide et plus facile. Avant de vous lancer dans cette discussion, cependant, vous voudrez peut-être réfléchir longuement avant de mettre toutes vos photos dans un classeur Excel.

Lorsque vous insérez une photo dans Excel, la taille de fichier de votre classeur est augmentée d’au moins la taille de fichier de la photo en cours d’insertion. Ainsi, si votre photo moyenne est de 1 Mo (assez petite avec les appareils photo d’aujourd’hui)

et vous insérez 5000 de ces photos, puis vous vous retrouvez avec un classeur contenant au moins 5 Go de photos. C’est un énorme classeur, et Excel pourrait avoir du mal à travailler avec autant d’informations. (La difficulté dépend de votre version d’Excel, de la quantité de mémoire dans votre système, de la vitesse de votre processeur, etc.)

Vous pourriez penser que la solution consiste à mettre à l’échelle les images lorsque vous les placez dans votre feuille de calcul, afin qu’elles soient plus petites. Bien que le redimensionnement d’une image la fasse paraître plus petite (elle semble plus petite dans la feuille de calcul), elle n’est pas vraiment plus petite. L’image en taille réelle est toujours là dans Excel.

Ainsi, vous ne réduisez pas du tout la taille du fichier de votre classeur en redimensionnant les photos.

La façon dont vous pouvez réduire la taille du fichier consiste à mettre à l’échelle les photos en dehors d’Excel, à l’aide d’un logiciel de retouche photo, avant qu’elles ne soient insérées dans Excel. En d’autres termes, vous devrez charger chacune des photos dans le logiciel de retouche photo, redimensionner les photos à la taille de vignette souhaitée, puis enregistrer la photo redimensionnée dans un nouveau fichier d’image miniature. (Vous ne voudriez généralement pas enregistrer l’image redimensionnée sur le dessus de votre photo d’origine.) Vous pouvez ensuite insérer chaque vignette dans votre feuille de calcul Excel et la taille de votre classeur résultant serait plus petite, bien qu’elle soit toujours directement liée à la taille globale de les photos miniatures que vous ajoutez à la feuille de calcul.

Si vous souhaitez toujours insérer toutes les photos dans votre feuille de calcul, vous pouvez le faire à l’aide d’une macro. L’exemple suivant, PhotoCatalog, peut rechercher toutes les photos miniatures et les insérer dans la feuille de calcul, avec un lien hypertexte vers la photo complète. Il suppose quatre choses: (1) vos photos et miniatures sont toutes des images JPG, (2) les photos sont dans le répertoire c: \ Photos \, (3) les miniatures sont dans le répertoire c: \ Photos \ Thumbnails \, et (4) les miniatures ont les mêmes noms de fichier que les photos en taille réelle.

Sub PhotoCatalog()

Dim i As Double     Dim xPhoto As String     Dim sLocT As String     Dim sLocP As String     Dim sPattern As String

sLocT = "c:\Photos\Thumbnails\"

sLocP = "c:\Photos\"

sPattern = sLocT & "*.jpg"



Application.EnableEvents = False     Application.ScreenUpdating = False

Range("A1").Select     ActiveCell.FormulaR1C1 = "Description"

Range("B1").Select     ActiveCell.FormulaR1C1 = "Thumbnail"

Range("C1").Select     ActiveCell.FormulaR1C1 = "Hyperlink"

Range("A1:C1").Select     With Selection.Font         .Name = "Arial"

.FontStyle = "Bold"

.Size = 12         .ColorIndex = xlAutomatic     End With     With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous         .Weight = xlMedium         .ColorIndex = xlAutomatic     End With

i = 1     On Error GoTo 0     xPhoto = Dir(sPattern, vbNormal)

Do While xPhoto <> ""

i = i + 1         Range("B" & i).Select         ActiveSheet.Pictures.Insert(sLocT & xPhoto).Select         With Selection.ShapeRange             .LockAspectRatio = msoTrue             .Height = 54#             .PictureFormat.Brightness = 0.5             .PictureFormat.Contrast = 0.5             .PictureFormat.ColorType = msoPictureAutomatic         End With         Range("C" & i).Select         ActiveSheet.Hyperlinks.Add Anchor:=Selection, _           Address:= sLocP & xPhoto, TextToDisplay:=xPhoto         xPhoto = Dir     Loop

Application.EnableEvents = True     Application.ScreenUpdating = True End Sub

L’exécution de cette macro peut prendre un certain temps, selon le type de système que vous utilisez et le nombre de photos que vous cataloguez.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (7484) s’applique à Microsoft Excel 97, 2000, 2002 et 2003.