Vider le presse papier dans Excel

Résolu
Guiiggs Messages postés 30 Statut Membre -  
Guiiggs Messages postés 30 Statut Membre -
Bonjour,

Pour vider le presse papier dans Excel via les macros, j'utilise le code suivant :
Option Explicit
#If VBA7 Then
Private Declare PtrSafe Function OpenClipboard Lib "user32" (ByVal hWnd As LongPtr) As LongPtr
Private Declare PtrSafe Function EmptyClipboard Lib "user32" () As LongPtr
Private Declare PtrSafe Function CloseClipboard Lib "user32" () As LongPtr
Private Declare PtrSafe Function CountClipboardFormats Lib "user32" () As LongPtr
#Else
Private Declare PtrSafe Function OpenClipboard Lib "user32" (ByVal hWnd As Long) As Long
Private Declare PtrSafe Function EmptyClipboard Lib "user32" () As Long
Private Declare PtrSafe Function CloseClipboard Lib "user32" () As Long
Private Declare PtrSafe Function CountClipboardFormats Lib "user32" () As Long
#End If

Sub vide_presse_papier()
    
    Application.CutCopyMode = False
    OpenClipboard 0
    EmptyClipboard
    CloseClipboard
    
End Sub



La macro s'exécute correctement mais le presse papier d'Excel ne se vide pas.

Auriez-vous des idées sur pourquoi le presse papier ne se vide pas s'il vous plaît ?

Cordialement,
Guiiggs

4 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    0
    1. Guiiggs Messages postés 30 Statut Membre 1
       
      Bonjour,

      Merci pour la réponse mais le presse papier ne se vide pas.

      Je comprend pas la macro s'exécute sans erreur (test effectué pas à pas) et malgré cela le presse papier se vide pas.

      Cordialement,
      Guiiggs
      0
    2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Après essai avec ce code, le presse papier est vide!

      Option Explicit
      Private Sub CommandButton1_Click()
      ViderPressePapier
      End Sub
      Sub ViderPressePapier()
      'Nécéssite d'activer la référence "Microsoft Forms 2.0 Object Library."
      Dim Cible As DataObject
       
      Set Cible = New DataObject
      Cible.SetText ""
      Cible.PutInClipboard
       
      Set Cible = Nothing
      End Sub
      Private Sub CommandButton2_Click()
      recupererTextePressePapier
      End Sub
      Sub recupererTextePressePapier()
      'nécéssite d'activer la référence "Microsoft Forms 2.0 Object Library."
      Dim Resultat As String
       
      With New DataObject
          .GetFromClipboard
          Resultat = .GetText(1)
      End With
       
      MsgBox Resultat
      End Sub
      


      @+
      0
  2. BERNARD476 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour,
    N'y a-t-il pas une propriété qui les supprime directement sur Excel ?
    0
  3. Kalissi Messages postés 221 Statut Membre 20
     
    Bonjour,

    Sous Excel 2013 W2010 ta macro fonctionne bien ...

    As-tu essayer :

    Public Sub vide_presse_papier()
        
        Application.DisplayAlerts = False
        
        Application.CutCopyMode = False
        OpenClipboard 0
        EmptyClipboard
        CloseClipboard
        
        Application.DisplayAlerts = True
        
    End Sub
    


    K
    0
  4. Guiiggs Messages postés 30 Statut Membre 1
     
    Bonjour,

    Merci à Kalissi et cs_Le Pivert pour leur aide.

    Cordialement,
    Guiiggs
    0