Créer un Visionneuse d’Image avec un UserForm, Excel VBA

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ôle imgDisplay.
  • 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.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x