VBA : comment vider le presse-papiers (Excel et Windows)

VBA: vider le presse-papiers (clipboard)

Si vous manipulez souvent des données avec copier/coller dans vos macros, vider le presse-papiers au bon moment évite pas mal d'ennuis: collages involontaires, contenu obsolète, données sensibles qui traînent… Ci-dessous, plusieurs méthodes simples selon le besoin: presse-papiers Excel uniquement, presse-papiers Windows, et deux alternatives rapides.

Petit rappel utile;: il y a deux presse-papiers dans votre quotidien Excel – celui de Windows et celui intégré à Excel. Ils ne se comportent pas de la même façon, d'où l'intérêt de choisir la bonne approche.

Pourquoi vider le presse-papiers dans vos macros?

  • Propreté du flux: enlever les "fourmis" (sélection en surbrillance) et repartir de zéro
  • Prévisibilité: éviter qu'un vieux contenu vienne perturber un collage
  • Confidentialité: ne pas laisser des valeurs sensibles accessibles après l'exécution
  • UX: un fichier qui se "nettoie" tout seul est plus agréable à utiliser

Méthode 1 – Vider le presse-papiers d'Excel (simple et immédiat)

Cette commande ne touche qu'à Excel. Elle enlève le mode copie (les pointillés) et remet Excel au calme, mais ne vide pas le presse-papiers Windows.

À utiliser dès que votre macro reste dans Excel (copie entre feuilles/classeurs, collage de formules, etc.).

Méthode 2 – Vider le presse-papiers Windows (API Win32, 32/64 bits)

Ici on vide tout: presse-papiers Windows et Excel. C'est ce qu'il faut si vous voulez être sûr qu'il ne reste rien, quelle que soit l'application qui a fait Ctrl+C.

Collez le bloc ci-dessous en haut d'un Module standard. J'ai ajouté un petit mécanisme de retry au cas où le presse-papiers est momentanément verrouillé par une autre appli.

Remarques: si vous voyez parfois une erreur "OpenClipboard failed", c'est souvent juste le temps que Windows libère la ressource. Le retry gère ce cas.

Méthode 3 – Écraser le presse-papiers avec du vide (DataObject)

Solution pratique: on remplace le contenu par une chaîne vide. Ça revient au même que "vider" pour la majorité des scénarios.

Note: MSForms.DataObject fait partie de "Microsoft Forms 2.0 Object Library". Sur la plupart des postes avec Office, c'est disponible. En environnement verrouillé, préférez la Méthode 2.

Méthode 4 – Petite astuce Excel (copier une cellule vide)

En dernier recours, vous pouvez copier une cellule vide pour écraser le contenu courant:

Ce n'est pas aussi propre ni universel que les méthodes ci-dessus, mais ça dépanne.

Bonnes pratiques pour vous éviter de mauvaises surprises

  • Avant un enchaînement de collages (= plusieurs copier/coller successifs), nettoyez pour partir sur une base claire.
  • Après traitement, nettoyez pour ne rien laisser traîner (surtout s'il s'agit des informations sensibles).
  • Si votre macro reste 100% dans Excel: Méthode 1 suffit la plupart du temps.
  • Si votre macro interagit avec d'autres applis: préférez la Méthode 2.

Tester le comportement (mini-scénarios)

Voici quelques opérations pour rapidement tester les différents codes dans les conditions réelles.

  1. Copiez du texte dans le Bloc-notes, lancez NettoyerPressePapiers(), essayez de coller.
  2. Copiez quelques cellules, lancez NettoyerPressePapiersExcel(), regardez les "fourmis" disparaître.
  3. Alternez copies depuis Excel et depuis le navigateur puis videz avec la Méthode 2.

FAQ

FAQ: la gestion de presse-papiers
Application.CutCopyMode = False vide-t-il Windows?

Non. Ça coupe juste le mode copie d’Excel. Pour Windows, utilisez la Méthode 2 ou la Méthode 3.

Pourquoi j’ai une erreur “OpenClipboard failed” ?

Le presse-papiers est sans doute verrouillé. Le code ci-dessus réessaie plusieurs fois. Augmentez Tentatives ou AttenteMs si besoin.

Compatibilité 32/64 bits?

Le bloc propose les déclarations 32 et 64 bits via #If VBA7 Then .... Cela couvre les versions Office 2010 à 365, Windows 10/11.

Peut-on “vider” le presse-papiers sans recours à l’API?

Oui, en écrasant avec une chaîne vide (DataObject). C’est simple et efficace dans la majorité des cas.

Conclusion

Pour des macros fiables, nettoyez le presse-papiers au moment opportun. Gardez Application.CutCopyMode = False sous la main pour Excel, et la fonction API pour un grand coup de balai côté Windows.

Dans la même idée, vous pouvez aussi vider la mémoire cache des tableaux croisés dynamiques (TCD) et jeter un œil à d'autres codes sources VBA.

Pour aller plus loin en VBA

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

 


Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

10 commentaires sur “VBA : comment vider le presse-papiers (Excel et Windows)”