De temps en temps, on a besoin de supprimer d'un coup toutes les images qui se trouvent sur une Feuille ou même dans tout le Classeur Excel. On connaît tous le moment ou vous collez dans Excel le contenu d'une page web et sans le vouloir, tous les imagent "viennent avec"! Il peut être très fastidieux d'effacer les images manuellement. Voici donc le code VBA pour supprimer les images automatiquement.
Que vous ayez besoin de nettoyer votre Feuille ou votre Classeur, ou que votre fichier soit envahi par les images après un copier/coller d'une page web, le code suivant (prêt à l'utilisation tel quel) va résoudre votre problème. D'un seul coup…
Je vous propose 3 versions de ce code VBA:
- la procédure (Sub) qui supprime les images de la Feuille active
- la procédure (Sub) qui supprime TOUTES les image du Classeur entier
- la fonction (Function) qui supprime les images de la Feuille déterminée (le nom de la Feuille est le paramètre de cette fonction)
Attention: cette opération est irréversible. Si vous voulez annuler la suppression des images, vous devez fermer le fichier sans le sauvegarder et le rouvrir. Une fois que vous aurez sauvegarder le fichier, plus moyen de récupérer les images effacées!
Voici dons les différents codes VBA prêts à l'emploi. Il vous suffit de les copier/coller dans votre projet VBA.
Le code VBA pour supprimer les images de la Feuille active
Un code assez simple qui fait la boucle dans tous les Objets de type image (Picture
) dans la Feuille active et les supprime…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Sub SupprimerLesImages_Feuille_Active() 'par: Excel-Malin.com ( https://excel-malin.com ) Application.ScreenUpdating = False On Error GoTo SupprimerLesImagesErreur Dim Img As Object For Each Img In ActiveSheet.Pictures Img.Delete Next Img Exit Sub SupprimerLesImagesErreur: MsgBox "Une erreur est survenue..." Application.ScreenUpdating = True End Sub |
Le code VBA pour supprimer les images de toutes les Feuilles du Classeur
Ici, on utilise le même principe que dans le code précédent mais on ajoute une seconde boucle qui va répéter le code pour chaque Feuille du Classeur actif…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Sub SupprimerLesImages_Classeur_Entier() 'par: Excel-Malin.com ( https://excel-malin.com ) Application.ScreenUpdating = False On Error GoTo SupprimerLesImagesErreur Dim Img As Object Dim Feuille As Worksheet For Each Feuille In ActiveWorkbook.Worksheets For Each Img In Feuille.Pictures Img.Delete Next Img Next Feuille Application.ScreenUpdating = True Exit Sub SupprimerLesImagesErreur: MsgBox "Une erreur est survenue..." Application.ScreenUpdating = True End Sub |
La fonction VBA pour supprimer les images de la Feuille déterminée
Cette fonction vous permet, via son argument "MaFeuille" (de type String
) de lancer le nettoyage pour une Feuille dont le nom correspond à la valeur dans "MaFeuille".
Si la Feuille n'existe pas dans le Classeur, la fonction va afficher un message d'erreur. Vous pouvez bien sûr modifier le comportent de la fonction dans ce cas-là selon vos besoins.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Public Function SupprimerLesImages_Feuille(MaFeuille As String) 'par: Excel-Malin.com ( https://excel-malin.com ) Application.ScreenUpdating = False On Error GoTo SupprimerLesImagesErreur Dim Img As Object For Each Img In Sheets(MaFeuille).Pictures Img.Delete Next Img Application.ScreenUpdating = True Exit Function SupprimerLesImagesErreur: MsgBox "Une erreur est survenue..." Application.ScreenUpdating = True End Function |
et l'exemple de l'utilisation de cette fonction en pratique:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub ExempleSuppressionImage() 'par: Excel-Malin.com ( https://excel-malin.com ) Application.ScreenUpdating = False On Error GoTo SupprimerLesImagesErreur Dim MaFeuilleANettoyer As String MaFeuilleANettoyer = "Feuil1" MonNetoyage = SupprimerLesImages_Feuille(MaFeuilleANettoyer) Application.ScreenUpdating = True Exit Sub SupprimerLesImagesErreur: MsgBox "Une erreur est survenue..." Application.ScreenUpdating = True End Sub |
Remarque: Effacer les images peut également être utile du point de vue de la taille de votre fichier. Car les images peuvent facilement être plus volumineux que les données mêmes qui se trouvent dans le fichier Excel…
Pour aller plus loin en VBA
Et pour terminer, voici quelques articles qui pourraient vous servir dans la conception de vos macros Excel…
- Liste de toutes les fonctions VBA
- Cours VBA en ligne gratuit
- Manipulation basique des fichiers en VBA
- Utiliser facilement RECHERCHEV en VBA (tutoriel)
- Calculer la SOMME en VBA de différentes manières
- Débloquer VBA dans les fichiers en provenance d'Internet ou de courriel