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 !
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".
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.
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
- 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