VBA: vider le presse-papiers (clipboard)

Si vous avez besoin d'utiliser le Presse-Papiers dans vos macros VBA, le code qui suit vous sera plus qu'utile. Il vous permettra de vider le presse-papiers et éviter ainsi des mauvaises surprises.

En fait, probablement sans vous en rendre compte, vous utilisez habituellement deux presse-papiers: celui de Windows mais aussi celui de Excel. En effet, Excel dispose de son propre Presse-Papiers.

Le Presse-Papiers est très pratique pour transférer des données entre différents classeurs Excel mais également entre différentes applications. Il peut aussi servir pour déplacer/copier des graphiques, captures d'écran etc.

Pour éviter des mauvaises surprises, il est utile de nettoyer le presse-papiers de temps en temps car il se peut qu'après un certain temps, il n'est plus clair ce qui peut s'y trouver.

Voici donc deux fonctions VBA qui feront l'affaire

Vider le Presse-Papiers Excel avec VBA

La particularité du presse-papiers Excel est qu'il n'écrase pas le contenu du presse-papiers Windows. Cela veut dire que vous pouvez être en train de faire des copier/coller du contenu d'une page internet dans Firefox, et cela n'impactera pas le copier/coller d'un tableau Excel.

Pour nettoyer le presse-papier Excel, une seule ligne de code VBA suffit:

Sub NettoyerPressPapiersExcel()
    Application.CutCopyMode = False
End Sub

Ce code-ci vous seras utile surtout si votre macro VBA ne "quitte" pas Excel – notamment si vous copiez les données entre différents Classeurs Excel.

Vider le Presse-Papiers de Windows avec VBA

Le code suivant est plus radical. Il va vider tous les presse-papiers – celui de Windows et celui de Excel. Peu importe donc dans quelle application vous avez fait le fameux Ctrl + C. Vous êtes sûrs qu'après avoir exécuté cette fonction, vous ne rencontrerez aucune "pollution" qui pourrait perturber le fonctionnement de votre macro VBA…

Vous devez copier tout le code VBA qui suit dans un Module (au début d'un Module pour être plus précis). La fonction VBA à utiliser est la fonction NettoyerPressePapiers()

Option Explicit
 
Public Declare Function OuvrirPressPapiers Lib "user32" Alias "OpenClipboard" (ByVal hwnd As Long) As Long
Public Declare Function ViderPressePapiers Lib "user32" Alias "EmptyClipboard" () As Long
Public Declare Function FermerPressePapiers Lib "user32" Alias "CloseClipboard" () As Long
 
Public Function NettoyerPressePapiers()
  OuvrirPressePapiers (0&)
  ViderPressePapiers
  FermerPressePapiers
End Function

Et voici un petit code pour montrer comment exécuter cette fonction – la procédure TestNettoyerPressePapiers()

Sub TestNettoyerPressePapiers()
  Call NettoyerPressePapiers
End Sub

Tester le comportement

Afin de mieux comprendre le fonctionnement des deux presse-papiers et l'impact des deux fonctions VBA que je vous propose plus haut, vous pouvez faire une série de tests. Vous verrez, c'est assez intéressant!

Ouvrez un Classeur Excel et ouvrez le bloc-notes de Windows. Remplissez quelques cellules dans le Classeur et écrivez quelque chose dans le bloc-notes. Maintenant, vous pouvez commencer à tester les différentes possibilités:

  • copier le texte dans le bloc-notes, lancer la fonction NettoyerPressePapiers() et essayer de coller le texte copié quelque part
  • la même chose mais en utilisant la fonction NettoyerPressePapiersExcel()
  • copiez  quelques cellules du Classeur, lancez la fonction NettoyerPressePapiersExcel() et essayez de coller le contenu du presse-papiers
  • etc.

Conclusion

Pour faire du travail correct, c'est toujours mieux de commencer avec des outils "propres" et de les "nettoyer" de temps en temps. Ce n'est pas seulement le cas des pioches, clés ou autres outils de bricolage et jardinage. c'est aussi le cas dans l'informatique.

Si vous devez faire des copier/coller dans vos macros, je vous conseille vivement de nettoyer les presse-papiers avant de commencer (grâce au code VBA sur cette page) mais aussi après. Imaginez que des données sensibles restent dans le presse-papiers – quelqu'un pourrait facilement les récupérer…

Si on suit le même principe, vous pouvez également Vider la mémoire cache des tableaux croisés dynamiques (TCD)

Et n'oubliez pas de jeter un coup d’œil à d'autres Codes sources VBA que je vous propose. Ils risquent de vous faciliter la vie!

Pour aller plus loin en VBA

Pour finir, voici quelques autres articles sur VBA qui pourraient vous intéresser…

 

18 0

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée.