Vider le presse papier dans Excel

Résolu
Guiiggs Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   -  
Guiiggs Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

4 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
0
Guiiggs Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   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
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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
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
Kalissi Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   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
Guiiggs Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour,

Merci à Kalissi et cs_Le Pivert pour leur aide.

Cordialement,
Guiiggs
0