Problème possible en relation avec la réponse de "user3616725":
Im sous Windows 8.1 et il semble y avoir un problème avec le code VBA lié de la réponse acceptée de "user3616725":
Sub CopyCellContents()
' !!! IMPORTANT !!!:
' CREATE A REFERENCE IN THE VBE TO "Microsft Forms 2.0 Library" OR "Microsft Forms 2.0 Object Library"
' DO THIS BY (IN VBA EDITOR) CLICKING TOOLS -> REFERENCES & THEN TICKING "Microsoft Forms 2.0 Library" OR "Microsft Forms 2.0 Object Library"
Dim objData As New DataObject
Dim strTemp As String
strTemp = ActiveCell.Value
objData.SetText (strTemp)
objData.PutInClipboard
End Sub
Détails:
En cours d'exécution au-dessus du code et en collant le presse-papiers dans une cellule dans Excel, j'obtiens deux symboles composés de carrés avec un point d'interrogation à l'intérieur, comme ceci: ⍰⍰. Coller dans le Bloc-notes ne montre même rien.
Solution:
Après avoir cherché pendant un certain temps, j'ai trouvé un autre script VBA de l'utilisateur "Nepumuk" qui utilise l'API Windows . Voici son code qui a finalement fonctionné pour moi:
Option Explicit
Private Declare Function OpenClipboard Lib "user32.dll" ( _
ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32.dll" () As Long
Private Declare Function EmptyClipboard Lib "user32.dll" () As Long
Private Declare Function SetClipboardData Lib "user32.dll" ( _
ByVal wFormat As Long, _
ByVal hMem As Long) As Long
Private Declare Function GlobalAlloc Lib "kernel32.dll" ( _
ByVal wFlags As Long, _
ByVal dwBytes As Long) As Long
Private Declare Function GlobalLock Lib "kernel32.dll" ( _
ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32.dll" ( _
ByVal hMem As Long) As Long
Private Declare Function GlobalFree Lib "kernel32.dll" ( _
ByVal hMem As Long) As Long
Private Declare Function lstrcpy Lib "kernel32.dll" ( _
ByVal lpStr1 As Any, _
ByVal lpStr2 As Any) As Long
Private Const CF_TEXT As Long = 1&
Private Const GMEM_MOVEABLE As Long = 2
Public Sub Beispiel()
Call StringToClipboard("Hallo ...")
End Sub
Private Sub StringToClipboard(strText As String)
Dim lngIdentifier As Long, lngPointer As Long
lngIdentifier = GlobalAlloc(GMEM_MOVEABLE, Len(strText) + 1)
lngPointer = GlobalLock(lngIdentifier)
Call lstrcpy(ByVal lngPointer, strText)
Call GlobalUnlock(lngIdentifier)
Call OpenClipboard(0&)
Call EmptyClipboard
Call SetClipboardData(CF_TEXT, lngIdentifier)
Call CloseClipboard
Call GlobalFree(lngIdentifier)
End Sub
Pour l'utiliser de la même manière que le premier code VBA ci-dessus, changez le sous "Beispiel ()" de:
Public Sub Beispiel()
Call StringToClipboard("Hallo ...")
End Sub
À:
Sub CopyCellContents()
Call StringToClipboard(ActiveCell.Value)
End Sub
Et exécutez-le via le menu macro Excel comme suggéré par "user3616725" de la réponse acceptée:
De retour dans Excel, allez dans Outils> Macro> Macros et sélectionnez la macro appelée "CopyCellContents", puis choisissez Options dans la boîte de dialogue. Ici, vous pouvez affecter la macro à une touche de raccourci (par exemple, comme Ctrl + c pour une copie normale) - J'ai utilisé Ctrl + q.
Ensuite, lorsque vous souhaitez copier une seule cellule dans le Bloc-notes / où que vous soyez, faites simplement Ctrl + q (ou ce que vous avez choisi), puis faites Ctrl + v ou Édition> Coller dans la destination choisie.
Edit (21 novembre 2015):
@ commentaire de "dotctor":
Non, ce n'est sérieusement pas une nouvelle question! À mon avis, c'est un bon ajout pour la réponse acceptée car ma réponse traite des problèmes auxquels vous pouvez faire face lorsque vous utilisez le code de la réponse acceptée. Si j'avais plus de réputation, j'aurais créé un commentaire.
@ commentaire de "Teepeemm":
Oui, vous avez raison, les réponses commençant par le titre "Problème:" sont trompeuses. Remplacé par: "Problème possible en relation avec la réponse de" user3616725 ":". En guise de commentaire, j'aurais certainement écrit beaucoup plus compact.