Créer un Visionneuse d’Image avec un UserForm, Excel VBA
Voici un guide détaillé pour créer un Visionneuse d’Image avec un UserForm dans Excel VBA.
Étape 1 : Créer le UserForm
1. Créer un nouveau UserForm :
- Dans l’éditeur VBA, allez dans Insertion > UserForm pour ajouter un nouveau UserForm à votre projet.
- Renommez le UserForm en
ImageViewerForm
(c’est facultatif, mais recommandé pour plus de clarté).
2. Ajouter des contrôles au UserForm :
- Ouvrez la Boîte à outils (si elle n’est pas visible, allez dans Affichage > Boîte à outils).
- Depuis la boîte à outils, vous aurez besoin des contrôles suivants :
- Contrôle Image : Pour afficher l’image.
- Bouton de Commande : Pour charger l’image.
- Zone de texte : (facultatif) Pour afficher le chemin du fichier de l’image sélectionnée.
- Étiquette : Pour afficher une légende ou des informations supplémentaires (facultatif).
Voici comment les organiser :
- Ajoutez un Bouton de Commande et renommez-le en
cmdLoadImage
(pour charger l’image). - Ajoutez un Contrôle Image et renommez-le en
imgDisplay
(ce contrôle affichera l’image). - Optionnellement, ajoutez une Zone de texte et une Étiquette pour afficher le chemin de l’image.
Étape 2 : Écrire le code VBA
Maintenant, nous allons écrire le code VBA pour faire fonctionner cette Visionneuse d’Image.
1. Charger l’image : La première chose à faire est de créer un événement pour charger l’image dans le contrôle Image
lorsque l’on clique sur le bouton Charger l’image.
Private Sub cmdLoadImage_Click() Dim imgPath As String ' Ouvrir la boîte de dialogue pour sélectionner une image With Application.FileDialog(msoFileDialogFilePicker) .Title = "Sélectionner une image" .Filters.Clear .Filters.Add "Fichiers image", "*.jpg;*.jpeg;*.png;*.gif;*.bmp;*.tiff" If .Show = -1 Then ' Si un fichier est sélectionné imgPath = .SelectedItems(1) ' Récupérer le chemin de l'image ' Afficher l'image dans le contrôle Image imgDisplay.Picture = LoadPicture(imgPath) ' Optionnellement, afficher le chemin dans la zone de texte TextBox1.Value = imgPath End If End With End Sub
- Explication :
- La
FileDialog
permet à l’utilisateur de sélectionner un fichier image. Elle filtre les types de fichiers pour ne montrer que les formats d’image courants. - Une fois qu’une image est sélectionnée, le chemin du fichier est transmis à la fonction
LoadPicture
, qui charge l’image dans le contrôleimgDisplay
. - Le chemin de l’image est affiché dans la
TextBox1
, afin que l’utilisateur puisse voir l’emplacement du fichier image.
2. Redimensionner l’image (facultatif) : Il peut être utile de redimensionner l’image pour qu’elle s’ajuste à la taille du contrôle Image
. Vous pouvez utiliser ce code pour redimensionner l’image à la taille du contrôle :
Private Sub imgDisplay_AfterUpdate() ' Assurez-vous que l'image s'adapte dans le contrôle Image With imgDisplay .ShapeRange.LockAspectRatio = msoFalse ' Déverrouiller le ratio d’aspect pour le redimensionnement .ShapeRange.Width = imgDisplay.Width .ShapeRange.Height = imgDisplay.Height End With End Sub
Étape 3 : Fonctionnalités supplémentaires (facultatif)
-
- Ajouter une légende : Vous pouvez ajouter un contrôle Label pour afficher une légende ou des informations supplémentaires sur l’image.
Private Sub cmdLoadImage_Click() ' Après avoir sélectionné l'image Label1.Caption = "Affichage : " & imgPath ' Afficher le nom du fichier de l'image End Sub
-
- Effacer l’image : Ajoutez un bouton pour effacer l’image affichée.
Private Sub cmdClearImage_Click() imgDisplay.Picture = Nothing ' Effacer l'image du contrôle Image TextBox1.Value = "" ' Effacer le chemin de la zone de texte Label1.Caption = "" ' Effacer la légende End Sub
Code complet du UserForm
Voici le code complet pour le UserForm :
Private Sub cmdLoadImage_Click() Dim imgPath As String ' Ouvrir la boîte de dialogue pour sélectionner une image With Application.FileDialog(msoFileDialogFilePicker) .Title = "Sélectionner une image" .Filters.Clear .Filters.Add "Fichiers image", "*.jpg;*.jpeg;*.png;*.gif;*.bmp;*.tiff" If .Show = -1 Then imgPath = .SelectedItems(1) ' Récupérer le chemin de l'image imgDisplay.Picture = LoadPicture(imgPath) ' Afficher l'image TextBox1.Value = imgPath ' Afficher le chemin dans la zone de texte Label1.Caption = "Affichage : " & Dir(imgPath) ' Afficher le nom du fichier dans l'étiquette End If End With End Sub Private Sub cmdClearImage_Click() imgDisplay.Picture = Nothing ' Effacer l'image TextBox1.Value = "" ' Effacer le chemin Label1.Caption = "" ' Effacer l'étiquette End Sub Private Sub imgDisplay_AfterUpdate() ' Redimensionner l'image pour s'adapter au contrôle With imgDisplay .ShapeRange.LockAspectRatio = msoFalse .ShapeRange.Width = imgDisplay.Width .ShapeRange.Height = imgDisplay.Height End With End Sub
Explication du code :
1. cmdLoadImage_Click : Cette subroutine ouvre une boîte de dialogue pour que l’utilisateur sélectionne un fichier image. Une fois l’image sélectionnée, elle est affichée dans le contrôle imgDisplay
, et le chemin du fichier est affiché dans la TextBox1
. Le nom du fichier est affiché dans l’étiquette Label1
.
2. cmdClearImage_Click : Cette subroutine permet de supprimer l’image du contrôle Image
, ainsi que le chemin de l’image dans la TextBox1
et la légende dans Label1
.
3. imgDisplay_AfterUpdate : Cet événement assure que l’image est redimensionnée pour s’adapter au contrôle Image
. Cette partie peut être ajustée en fonction des besoins spécifiques de gestion des images.
Résultat :
- Le UserForm affichera une visionneuse d’images avec un contrôle Image qui pourra afficher les images.
- Un bouton permettra à l’utilisateur de charger une image, et un autre bouton pourra effacer l’image.
- Le chemin du fichier de l’image et le nom du fichier seront affichés dans une zone de texte et une étiquette.
Cette approche vous permet de créer une visionneuse d’images dynamique et flexible à l’intérieur d’un UserForm Excel, où l’utilisateur peut facilement charger et effacer des images.