Connaitre la plage de cellule copiée dans le presse-papiers

  • Initiateur de la discussion Initiateur de la discussion piratman
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

piratman

XLDnaute Nouveau
Bonjour,

je souhaiterai mémoriser (en VBA) la plage de cellule copiée dans le presse-papiers.

J'explique la but final de ma question :
Sur une feuille j'ai des évènements déclenchés sur modification de cellules.
Les actions réalisées me font perdre le contenu du presse-papiers.
Je souhaiterai à la fin de ma procédure évènementielle remettre dans le presse-papier son contenu,
spécialement quand il s'agit de cellules qui viennent d'être copiées.

Est-ce possible ?

Je me suis bien entendu penché sur le sujet,
j'arrive à ce code :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

'--- Déclaration des variables
Dim Memo_Clipboard As Range

'--- Test si le contenu du presse-papiers est une plage de cellules
'--- et enregistre la plage
If CountClipboardFormats = 29 Then
    Set Memo_Clipboard = Selection
End If

'--- Code de l'évènement
Application.CutCopyMode = False

'--- Restaure le contenu du presse-papiers
If Not Memo_Clipboard Is Nothing Then
    Memo_Clipboard.Copy
End If

End Sub

Il faut aussi mettre dans un module :
Code:
Declare Function CountClipboardFormats Lib "user32" () As Long

Ce code fonctionne, mais avec comme "bidouille" la ligne "Set Memo_Clipboard = Selection" :
Je mémorise la sélection actuelle, donc la sélection correspondante à la zone "collée",
qui n'est pas forcément la même que le zone "copiée".

Je recherche donc à mémorisée la zone copiée...

Merci d'avance de vous pencher sur mon cas !
 
Re : Connaitre la plage de cellule copiée dans le presse-papiers

Bonjour,

A-priori le bloc-note ne contient plus que les valeurs...

Peut-être te pencher sur le clipboard office qui mémorise peut-être les propriétés du copier (?)
Le pb c'est que l'accès ne se fait que par fonctions API.
Voir un exemple ici

Ou sinon plus simple (mais dépend des utilisateurs) : gérer le copier par Worksheet_BeforeRightClick qui te permettra de mémoriser la plage.

eric
 
Re : Connaitre la plage de cellule copiée dans le presse-papiers

Ou sinon plus simple (mais dépend des utilisateurs) : gérer le copier par Worksheet_BeforeRightClick qui te permettra de mémoriser la plage.

Bonjour Eriiic,
on est bien d'accord qu'avec cette méthode, l'utilisation des raccourcis clavier CTRL+C ne déclenchera pas l'évènement ?

Sinon, je ne sais pas ce que sont les fonctions API, vu l'exemple que tu as donné pour vider le presse papier, ça parait un peu compliqué pour pas grand chose !
Je n'ai pas réussi à trouver les propriétés et possibilités avec le clipboard office.
En général, les gens cherchent plutot à le vider qu'à le mémoriser...
 
Re : Connaitre la plage de cellule copiée dans le presse-papiers

Re,

on est bien d'accord qu'avec cette méthode, l'utilisation des raccourcis clavier CTRL+C ne déclenchera pas l'évènement ?

Tout à fait.

La copie n'est pas un évènement....
Le principe serait que l'utilisateur fasse un clic-droit sur sa sélection lorsqu'il veut copier.
Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    MsgBox ("La sélection est " & Target.Address)
    Target.Copy
End Sub

eric
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
449
Retour