IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

Vider le presse papier en VBA [FAQ]


Sujet :

VBA

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 39
    Points : 35
    Points
    35
    Par défaut Vider le presse papier en VBA
    Bonjour à tous,

    J'aimerais savoir comment dans le langage VBA indiquer à une macro de vider le presse papier.

    Merci d'avance !

  2. #2
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bonjour Knecmotet

    Cela peut sans doute t'aider :

    La fonction EmptyClipboard permet de vider le presse-papier
    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
    Voilà
    .Olivier

  3. #3
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Me.hwnd en VBA, ca risque de tousser
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  4. #4
    Rédacteur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 608
    Points : 1 561
    Points
    1 561
    Par défaut
    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

  5. #5
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Vient de me sauver la vie ce post :-)

  6. #6
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    la clipboard.clear ne marche pas en VBA?
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  7. #7
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Citation Envoyé par méphistopheles
    la clipboard.clear ne marche pas en VBA?
    no

  8. #8
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par Nightfall Voir le message
    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
    Bonsoir membres du forum,
    Vraiment ce code ne marche pas.
    Je l'ai essayé avec toutes ses déclarations.

    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
    Je vous signale que j'utilise Access 2013.

    Pourriez vous nous donner le pourquoi ?
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Points : 378
    Points
    378
    Par défaut
    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

  10. #10
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par Phil Free Voir le message
    Bonjour,
    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.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Points : 378
    Points
    378
    Par défaut
    Citation Envoyé par morobaboumar Voir le message
    Bonsoir membres du forum,
    Je vous signale que j'utilise Access 2013 non pas Excel.
    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 !

    Citation Envoyé par morobaboumar Voir le message
    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.
    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 !!!

  12. #12
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Bonjour Phil Free,
    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 !!!
    17/07/2020, 19h50
    morobaboumar
    Ça ne coûte pas cher d'aider les gens; surtout que
    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.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  13. #13
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 593
    Points
    24 593
    Par défaut
    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

  14. #14
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Bonjour loufab,
    Merci pour la réponse!
    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.
    Pourriez vous tenir compte de ce que je suggére ?
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  15. #15
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 593
    Points
    24 593
    Par défaut
    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

  16. #16
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par loufab Voir le message
    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,
    Bonjour membres du forum,
    Voici ma modeste contribution que laisse à votre appréciation.
    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
    Cordialement.
    Fichiers attachés Fichiers attachés
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  17. #17
    Membre du Club Avatar de iBenny
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2012
    Messages : 133
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par Olivier Regnier Voir le message
    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
    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

  18. #18
    Membre du Club Avatar de iBenny
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2012
    Messages : 133
    Points : 68
    Points
    68
    Par défaut
    Je propose :
    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
    Salutations
    iBenny

Discussions similaires

  1. vider le presse papier avant utilisation en vba
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/04/2009, 07h43
  2. VBA - Vider le presse-papier
    Par ftcalvados dans le forum Général VBA
    Réponses: 10
    Dernier message: 21/12/2006, 11h38
  3. [VBA] Vider le presse papier
    Par Kelyane dans le forum VBA Access
    Réponses: 7
    Dernier message: 07/10/2003, 12h05
  4. [VBA-E] Vider le presse-papier
    Par tinej dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/12/2002, 09h33
  5. [Système] Vider le Presse Papier
    Par babe dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/09/2002, 17h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo