Vider le presse papier excel/windows avec une macro

Anonyme
2024-05-28T08:38:35+00:00

Bonjour à tous,

J'ai cherché sur internet des macros pour vider le presse papier excel / windows, j'en ai trouvé trois : les trois ne fonctionnent pas (ou je n'arrive pas à les faire fonctionner).

J'ai essayé Application.CutCopyMode = False

Qui devrait "juste" vider le presse papier excel, je l'ai mise dans un bouton mais le clic du bouton ne fait pas fonctionner la macro ... (le presse papier est toujours plein) .

J'ai essayé :

Option Explicit

Public Declare Function OuvrirPressePapiers 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

____________________________________________________________________________________________________

Sub Bouton11_Cliquer()

Call NettoyerPressePapiers

End Sub

et

Option Explicit

Public Declare PtrSafe Function OuvrirPressePapiers Lib "user32" Alias "OpenClipboard" (ByVal hwnd As Long) As LongPtrPublic Declare PtrSafe Function ViderPressePapiers Lib "user32" Alias "EmptyClipboard" () As LongPtrPublic Declare PtrSafe Function FermerPressePapiers Lib "user32" Alias "CloseClipboard" () As LongPtr

Public Function NettoyerPressePapiers()

____________________________________________________________________________________________________ OuvrirPressePapiers (0&)ViderPressePapiersFermerPressePapiers End Function

____________________________________________________________________________________________________

Sub Bouton11_Cliquer()

Call NettoyerPressePapiers

End Sub

Mais le presse papier est toujours plein.

Comment puis-je faire pour vider mon presse papier excel (car ma macro utilise uniquement excel) en priorité ?

Meri d'avoir lu,

Baptiste

Microsoft 365 et Office | Excel | Autres | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

6 réponses

  1. DanielCo 107.7K Points de réputation
    2024-05-28T14:55:21+00:00

    Effectivement, rien ne semble fonctionner.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2024-05-28T13:27:10+00:00

    C'est ce que j'avais mais ça ne vide pas le presse papier excel.

    Je ne peux plus coller mais j'ai toujours mes x entrées dans le presse-papiers.

    Est-ce possible de vider le presse papier ou pas ?

    De plus j'ai essayé ça :

    Dim x As New DataObject x.SetText "" x.PutInClipboard Mais dataobject n'est pas reconnu ...

    Mais vous quand vous utilisez la macro de votre premier message ça vide le presse papier ou ça vous empêche de coller ? illustration une fois la macro exécutée :

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. DanielCo 107.7K Points de réputation
    2024-05-28T13:05:05+00:00

    En 32 bits, ça devrait être :

    Private Declare Function OpenClipboard Lib "user32" _
    (ByVal hwnd As Long) As Long
    Private Declare Function EmptyClipboard Lib "user32" () As Long
    Private Declare Function CloseClipboard Lib "user32" () As Long

    Sub ViderPresse_PapierA()
    OpenClipboard 0
    EmptyClipboard
    CloseClipboard
    End Sub

    Source : https://excel-downloads.com/threads/vider-presse-papier-excel-2003-a-2010-32-et-64b.181860/

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2024-05-28T11:04:35+00:00

    Bonjour Daniel merci pour votre réponse,

    Je viens de vérifier, j'utilise un excel 32 bits donc ça serait :

    Option Explicit

    Public Declare Function OuvrirPressePapiers 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

    Sub Bouton1_Cliquer()

    Call NettoyerPressePapiers

    End Sub

    Mais ça ne fonctionne pas comme je l'entends. ça bloque le copier coller mais ça ne vide pas le presse papier ...

    J'ai activer la références Microsoft Office 16.0 Object library également ...

    Est-ce que pour vous ça vide le presse papier ou ça empêche "juste" de coller ?

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. DanielCo 107.7K Points de réputation
    2024-05-28T10:32:10+00:00

    Bonjour,

    Ce code (emprunté sur stackoverflow à Christian) fonctionne pour moi (Excel 64 bits) :

    Public Declare PtrSafe Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As LongPtr
    Public Declare PtrSafe Function EmptyClipboard Lib "user32" () As LongPtr
    Public Declare PtrSafe Function CloseClipboard Lib "user32" () As LongPtr

    Public Function ClearClipboard()
    OpenClipboard (0&)
    EmptyClipboard
    CloseClipboard
    End Function

    Sub test()
    Call ClearClipboard
    End Sub

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire