Bonjour à tous,
J'aimerais savoir comment dans le langage VBA indiquer à une macro de vider le presse papier.
Merci d'avance !
Bonjour à tous,
J'aimerais savoir comment dans le langage VBA indiquer à une macro de vider le presse papier.
Merci d'avance !
Bonjour Knecmotet
Cela peut sans doute t'aider :
La fonction EmptyClipboard permet de vider le presse-papierVoilà
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Option Compare Database Option Compare Database Option Explicit Private Declare Function CloseClipboard Lib "user32" () As Long Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function EmptyClipboard Lib "user32" () As Long Private Sub Commande0_Click() OpenClipboard Me.hwnd EmptyClipboard CloseClipboard End Sub![]()
Oui, on peut mettre 0 à la place, ça marche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Declare Function CloseClipboard Lib "user32" () As Long Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function EmptyClipboard Lib "user32" () As Long Private Sub Commande0_Click() OpenClipboard 0 EmptyClipboard CloseClipboard End Sub
Vient de me sauver la vie ce post :-)
noEnvoyé par méphistopheles
Bonsoir membres du forum,
Vraiment ce code ne marche pas.
Je l'ai essayé avec toutes ses déclarations.
Je vous signale que j'utilise Access 2013.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub viderlepressepapierVBA_Click() OpenClipboard 0 EmptyClipboard CloseClipboard End Sub
Pourriez vous nous donner le pourquoi ?
Cordialement.
Bonjour,
alors pour commencer morobaboumar quand cela ne fonctionne pas il serait bien de donner plus d'info que "Vraiment ce code ne marche pas."
on en fait quoi de ça ? c'est un peu comme :
-Docteur j'ai mal !
-vous avez mal ou ?
-ben j'ai mal !
...
bref plus d'info aide à aider !
Note que pour vider le presse papier ce n'est pas natif dans excel il faut passer par les API windows en l’occurrence ici la DLL USER32
A partir de Excel2010 (VB7) pour la compatibilité 32bits/64bits la déclaration des librairies changes
Essais ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Option Explicit #If VBA7 Then Private Declare PtrSafe Function OpenClipboard Lib "User32" (ByVal hwnd As Long) As LongPtr Private Declare PtrSafe Function CloseClipboard Lib "User32" () As LongPtr Private Declare PtrSafe Function EmptyClipboard Lib "User32" () As LongPtr #Else Private Declare Function OpenClipboard Lib "User32" (ByVal hwnd As Long) As Long Private Declare Function CloseClipboard Lib "User32" () As Long Private Declare Function EmptyClipboard Lib "User32" () As Long #End If '!!! Attention tout ce qui se trouve au dessus de cette ligne doit être placé en haut du module !!! Sub ViderPP() 'Ouverture du presse-papier OpenClipboard 0 'On vide le presse-papier EmptyClipboard 'Fermeture du presse-papier CloseClipboard End Sub
Bonsoir membres du forum,
bonsoir Phil Free,
Merci d'avoir pris un temps précieux pour donner suite à ma requête.
Je vous signale que j'utilise Access 2013 non pas Excel.
Encore une fois, il n'y a pas de réaction de la part de votre code ni message d'erreur.
Je suggère qu'il serait bon d'ajouter un code de message de confirmation indiquant que
le presse-papier a été vidé. On n'aperçoit pas non plus la fenêtre du presse-papier s'ouvrir et se refermer
après l'exécution du code.
Cordialement.
Pour excel ou access avec ce type de méthode c'est du pareil au même d'autan que j'ai bien précisé VB7 qui est commun au pack office 2013 encore une fois pour ce type de methode !
Ben y a plus qu'à vous retroussez les manches ! Quand à moi, je ne suis pas ici pour répondre à vos besoins, envies ou même suggestions mais pour aider,aiguiller et ce bénévolement ... pour les besoin,envies ou autre suggestions il faut payer !!!
Bonjour Phil Free,
Ça ne coûte pas cher d'aider les gens; surtout queBen y a plus qu'à vous retroussez les manches ! Quand à moi, je ne suis pas ici pour répondre à vos besoins, envies ou même suggestions mais pour aider,aiguiller et ce bénévolement ... pour les besoin,envies ou autre suggestions il faut payer !!!
17/07/2020, 19h50
morobaboumar
le site développez. net a cela comme but 1er.
Appelons la souris souris et chat chat.
Je dis que ton code n'est pas bon.
Et je ne suis pas le seul à avoir fait ce constat.
Soyons sage dans nos propos.
Comment payer ce qui n'est pas bon ?
Si tu veux être payé, produis du bon.
Cordialement.
Bonjour,
Ce code vide parfaitement bien le presse-papier.
C'est un appel API sur le User32 un appel système, je ne vois pas le rapport avec un Excel Access ou autre VBA-Like.
Cordialement,
Détecter les modifications formulaire Cloud storage et ACCESS
Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie
Bonjour loufab,
Merci pour la réponse!
Pourriez vous tenir compte de ce que je suggére ?Je suggère qu'il serait bon d'ajouter un code de message de confirmation indiquant que
le presse-papier a été vidé. On n'aperçoit pas non plus la fenêtre du presse-papier s'ouvrir et se refermer
après l'exécution du code.
Cordialement.
Bonjour morobaboumar,
Les contributions sont faites pour être améliorées cela peut-être fait par toute personne qui en éprouve le besoin.
N'hésites pas à nous faire partager ton code une fois le message ajouté.
Cordialement,
Détecter les modifications formulaire Cloud storage et ACCESS
Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie
Bonjour membres du forum,
Voici ma modeste contribution que laisse à votre appréciation.
Cordialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Sub VIDERPPAPIERS() On Error GoTo OUMAR Dim CANCEL As String If MsgBox("ATTENTION !!" & vbCrLf & "VOULEZ-VOUS OUVRIR " & vbCrLf & "LA BOITE DU PRESSE-PAPIER ?", vbQuestion + vbYesNo + vbDefaultButton2, "MODIFICATION") = vbNo Then CANCEL = True 'Ouverture du presse-papier OpenClipboard 0 ElseIf MsgBox("ATTENTION !!" & vbCrLf & "VOULEZ-VOUS VIDER " & vbCrLf & "LE PRESSE-PAPIER ?", vbQuestion + vbYesNo + vbDefaultButton2, "MODIFICATION") = vbNo Then 'On vide le presse-papier EmptyClipboard Else MsgBox "ATTENTION !" & vbCrLf & "LE PRESSE-PAPIER" & vbCrLf & " " & "EST VIDE.", vbExclamation + vbOKOnly, "VIDE" End If 'Fermeture du presse-papier CloseClipboard Exit Sub OUMAR: MsgBox "Erreur n° " & Err.Number & vbCrLf & Err.Description, vbCritical + vbOKOnly, "Une erreur est survenue" End Sub
Bonjour Olivier,
Merci pour ton tuyau. C'est valide en VBA Word 2003 sous W10 je présume ?
Si je veux seulement vider le presse papier, suis-je obligé de l'ouvrir avant et le fermer après ou EmptyClipboard tout seul marcherait-il ?
Merci à l'avance pour tes lumières,
iBenny
Je propose :
Salutations
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Declare Function OpenClipboard Lib "user32" (optional ByVal hwnd As Long=0) As Long Declare Function EmptyClipboard Lib "user32" () As Long Declare Function CloseClipboard Lib "user32" () As Long Sub MaProcédure() OpenClipboard doevents EmptyClipboard doevents CloseClipboard doevents End Sub
iBenny
Partager