Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1302 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA Excel - evenements Copier Coller

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VBA Excel - evenements Copier Coller

n°1748101
jipo
Kamoulox !
Posté le 18-06-2008 à 13:08:31  profilanswer
 

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)
mood
Publicité
Posté le 18-06-2008 à 13:08:31  profilanswer
 

n°1748192
tegu
Posté le 18-06-2008 à 14:48:38  profilanswer
 

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.

n°1748224
jipo
Kamoulox !
Posté le 18-06-2008 à 15:17:41  profilanswer
 

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)
n°1748369
kiki29
Posté le 18-06-2008 à 16:42:08  profilanswer
 

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

n°1748449
jipo
Kamoulox !
Posté le 18-06-2008 à 17:36:59  profilanswer
 

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)
n°2213721
jpbauer
Posté le 16-12-2013 à 11:42:36  profilanswer
 

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

n°2218259
jpbauer
Posté le 31-01-2014 à 15:09:38  profilanswer
 

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

n°2218301
Marc L
Posté le 01-02-2014 à 12:22:43  profilanswer
 

 
           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 ‼
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA Excel - evenements Copier Coller

 

Sujets relatifs
Macro excel dans 1 nouveau fichier pour plusieurs fichiersVBA Word : supprimer les pages blanches
VBA problème de saisie dans Textbox[EXCEL] Comparaison bornée
Exécution d'une macro sans ouvrir les fichiers ExcelMappage XML sous Excel
Programme VBA qui insere un nom de colonneimporter un fichier csv dans un classeur excel 2003
[VBA] Recherche nom ou numero de feuille contenant un range[Access/VBA] Automatisation de tâches
Plus de sujets relatifs à : VBA Excel - evenements Copier Coller


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR