Repérer un "CTRL+C" de Cellule puis donner une instruction pour copier

Bonjour à Tous !!!

Bon, sujet un peu tordu, ^^

je voudrais savoir si il est possible avec Excel de repérer une manip de copie de l'utilisateur, soit clic droit copier, soit CTRL+C ?

En fait j'ai une cellule qui contient un numéro et une autre du texte, je veux que quand la personne fasse un CTRL+C sur la cellule contenant le texte.

Excel copie dans le presse papier une concaténation du numéro + le texte.

Alors pour la concaténation c'est bon pas de soucis c'est fait, pour limiter la plage d'action aussi.

Je cherche vraiment à savoir comment exprimer.

"Si utilisateur fait l'action CTRL+C ou Clic Droit + Copié"

'limitation de la plage
    If Not Intersect(Target, Range("T5:T" & DL)) Is Nothing Then

'insertion instruction SI "CTRL+C" ou COPIE demandé par utilisateur

'Copie dans le presse papier avec concaténation   
       Call Copie_Concat

     End If
    

J'avais pensé à quelque chose du genre:

If Range("T" & Target.row).copy = true then 
Mais bien sur ça ne marche pas

Bonjour,

Il faudrait :

if application.cutcopymode = true then 'ou = xlcopy pour ne s'occuper que des "copier" et non des "couper"

Cdlt,

Salut Mickou,
Salut 3GB,

sujet tordu, pas tant que ça mais j'ai du creuser un peu...

Il faut d'abord t'assurer que la référence "Microsoft Forms 2.0" est bien cochée. Perso, elle n'était même pas disponible dans la liste.
Dans ce cas, dans la fenêtre 'Outils-Références-Parcourir' -> WINDOWS/SYSTEM32 : FM20.DLL : 'Ouvrir'

Dans 'ThisWorkbook'

Private Sub Workbook_Open()
'
Application.OnKey "^c", "ConcatCOPY"
'
End Sub

Dans 'Module1'

Public Sub ConcatCOPY()
'
Dim obj As DataObject, sData$
'
If Selection.Column = 20 And Selection.Row > 4 And Selection <> "" Then _
    iRow = Selection.Row: _
    sData = Range("T" & iRow).Value & Range("U" & iRow).Value: _
    Set obj = New DataObject: _
    obj.SetText sData: _
    obj.PutInClipboard
'
End Sub
3mickou.xlsm (19.83 Ko)


A+

Salut Curulis !

Ca marche Nickel !

Par contre le fait de placer le Application.OnKey "^c", "ConcatCOPY" dans l'ouverture du classeur, ça dit a excel, "a chaque fois que ctrl+c alors concat copy ... et donc impossible de copier les valeurs en dehors des plages voulues sans que ça bug vu que la condition se trouve dans la fonction concatcopy, donc après la procédure on key !

J'ai juste modifié un peu j'ai mis ça dans l'évenement Workbook_SheetSelectionChange

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

'Copie_concat_ref

If Selection.Column = 13 And Selection.Row > 4 And Selection.Cells.Count = 1 Then

Application.OnKey "^c", "ConcatCOPY"

Else

Application.OnKey "^c"

End If

End Sub

avec un ELSE qui remet par défaut la procédure CTRL+C si la sélection n'est pas dans la plage.

et du coup ta fonction mais sans condition

Public Sub ConcatCOPY()

'

Dim obj As DataObject, sData$

iRow = Selection.Row:

sData = Range("A" & iRow).Value & " - " & Range("M" & iRow).Value

Set obj = New DataObject

obj.SetText sData

obj.PutInClipboard

End Sub

tout est bon du coup, Un grand merci cette macro va m'être très utile.

Par contre j'ai une petite question, car pour moi la procédure OnKey à fonctionné correctement, mais si c'est pas le cas j'ai pas compris quoi faire...

quand tu dis:

Il faut d'abord t'assurer que la référence "Microsoft Forms 2.0" est bien cochée.

C'est ou qu'il faut vérifier ça ?

Salut Romain,

si ça fonctionne... d'après mes lectures, c'est que la référence en question est bien cochée!
Quand tu es dans le code, menu 'Outils-Références' et tu as la liste des références cochées et celles disponibles.

Bonne continuation!


A+

J'ai bien fait de demander je n'aurais jamais trouvé tout seul

Merci Curulis57

Rechercher des sujets similaires à "reperer ctrl puis donner instruction copier"