VBA Excel - evenements Copier Coller

VBA Excel - evenements Copier Coller - VB/VBA/VBS - Programmation

Marsh Posté le 18-06-2008 à 13:08:31    

Salut,
 
Sous Excel 2002 / 2003.
 
Je cherche à controler via VBA une action de copier / coller entre deux feuilles.
Je souhaite soit :  
* Obliger l'action de coller à ne coller que les valeurs (sans le format, formules, etc ...)
* Contrôler l'action de coller via un évènement (genre BeforePaste () qui n'existe pas)
 
Si quelqu'un a une idée même exotique  :D  
 
Merci


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
Reply

Marsh Posté le 18-06-2008 à 13:08:31   

Reply

Marsh Posté le 18-06-2008 à 14:48:38    

Tu enregistres une macro en faisant l'opération de copier-coller manuellement.
Ensuite tu modifies cette macro dont le squelette te donnera presque toute la syntaxe.

Reply

Marsh Posté le 18-06-2008 à 15:17:41    

Merci.
 
Le problème n'est pas exactement celui-ci.
 
Je veux juste contrôler n'importe quelle action de type "coller" que l'utilisateur pourrait effectuer sur la feuille. Autrement dit si un utilisateur fait un Ctrl-C (copier) puis un Ctrl-V (coller), je voudrais pouvoir intercepter le coller pour restreindre l'action uniquement aux valeurs.
 
Pour résumer je voudrais faire en sorte que le coller réagisse comme un collage spécial des valeurs uniquement. Idéalement, il me faudrait un évènement du type Worksheet_BeforePaste( SourceRange as range, DestinationRange as range, byref Cancel as boolean)
 
Quelqu'un connait-il une méthode pour effectuer cette sorte de tour de magie ?


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
Reply

Marsh Posté le 18-06-2008 à 16:42:08    

Salut, si cela te convient, à toi de l'améliorer et de l'adapter à ton contexte


Option Explicit
 
Dim mbCut As Boolean
Dim mRngSource As Range
 
Public Sub InitCutCopyPaste()
    Application.OnKey "^X", "DoCut"
    Application.OnKey "^x", "DoCut"
    Application.OnKey "+{DEL}", "DoCut"
     
    Application.OnKey "^C", "DoCopy"
    Application.OnKey "^c", "DoCopy"
    Application.OnKey "^{INSERT}", "DoCopy"
     
    Application.OnKey "^V", "DoPaste"
    Application.OnKey "^v", "DoPaste"
    Application.OnKey "+{INSERT}", "DoPaste"
     
    Application.OnKey "{ENTER}", "DoPaste"
    Application.OnKey "~", "DoPaste"
     
    Application.CellDragAndDrop = False
End Sub
 
Public Sub DoCut()
    If TypeOf Selection Is Range Then
        mbCut = True
        Set mRngSource = Selection
        Selection.Copy
    Else
        Set mRngSource = Nothing
        Selection.Cut
    End If
End Sub
 
Public Sub DoCopy()
    If TypeOf Selection Is Range Then
        mbCut = False
        Set mRngSource = Selection
        Selection.Copy
    Else
        Set mRngSource = Nothing
    End If
    Selection.Copy
End Sub
 
Public Sub DoPaste()
    If Application.CutCopyMode And Not mRngSource Is Nothing Then
        Selection.PasteSpecial xlValues
        If mbCut Then mRngSource.ClearContents
        Application.CutCopyMode = False
    Else
        ActiveSheet.Paste
    End If
End Sub

Reply

Marsh Posté le 18-06-2008 à 17:36:59    

kiki29 a écrit :

Salut, si cela te convient, à toi de l'améliorer et de l'adapter à ton contexte


...



 
Excellent ... cela devrait résoudre une partie de mon problème ...
je vais tester cela
Merci
 ;)


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
Reply

Marsh Posté le 16-12-2013 à 11:42:36    

Bonjour
 
  Je déterre ce vieux sujet car j'ai à peu près le même problème sauf que je ne voudrais pas que cela se limite à CtrlC/CtrlV mais aussi à clic droit copier / clic droit insérer les cellules copiées.
 
  N'existerait-il pas un évènement généré lorsque l'on colle quelque chose que l'on puisse dire "faire le traitement normal" mais dire aussi "faire ceci en plus" (mise en forme particulière, vider certaine cellules...)
 
Merci de votre aide
 
Cordialement

Reply

Marsh Posté le 31-01-2014 à 15:09:38    

jpbauer a écrit :

Bonjour
 
  Je déterre ce vieux sujet car j'ai à peu près le même problème sauf que je ne voudrais pas que cela se limite à CtrlC/CtrlV mais aussi à clic droit copier / clic droit insérer les cellules copiées.
 
  N'existerait-il pas un évènement généré lorsque l'on colle quelque chose que l'on puisse dire "faire le traitement normal" mais dire aussi "faire ceci en plus" (mise en forme particulière, vider certaine cellules...)
 
Merci de votre aide
 
Cordialement


 
Un petit up

Reply

Marsh Posté le 01-02-2014 à 12:22:43    

 
           Bonjour,
 
           pas de déterrage de post, cf règles du forum, surtout quand ce n'est pas exactement le même besoin !
 
           Sinon rien qu'en regardant les évènements existants au niveau d'une feuille ou d'un classeur  :sarcastic:  : non, y a pas ‼
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed