XL 2016 copier le contenu d'une cellule à partir de la barre de formule

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous et à tous,

Je reviens vers vous car j'ai nouveau souci que je ne parviens pas à coder et pourtant c'est peut-être simple LOL.

Pour envoyer des sms à mes destinataires, je copie dans mon utilitaire d'envoi de sms :
1 - le numéro de tel qui est dans une cellule,
2 - le texte qui est dans une autre cellule.

= clique droit /copier et CTRL V dans mon utilitaire d'envoi de sms

En ce qui concerne le texte = pas de souci
Pour le n° ça ne marche pas.
En revanche, si je vais copier le n° directement dans la barre de formule = ça marche !


Je cherche à coder pour que soit copié le contenu dans la barre de formule pour la cellule (et pas en cliquant droit sur la cellule)
Mais je ne trouve pas et mes recherches ne donnent rien.

Pourriez-vous m'aider ?
Il ne me semble pas indispensable de joindre un fichier test pour cette question, mais si nécessaire, je le ferai.

Merci à toutes et à tous,
Je vous souhaite une belle journée,
Amicalement,
lionel ;)
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonsoir danielco, le Forum,

Merci pour m'avoir répondu :)
"Quelle différence y-a-t-il entre la barre de formule et la cellule ? Est-ce que tu peux donner un exemple de ce que tu as dans la cellule et dans la barre de formule ? "

Moi je n'en connais pas mais apparemment, mon logiciel d'envoi de sms en voit une lui (le chiant).
Je joins
test.gif
un fichier gif, je l'espère, sera plus explicite
lionel,
 

danielco

XLDnaute Accro
En recopiant bêtement le code de la page :

https://wellsr.com/vba/2015/tutorials/vba-copy-to-clipboard-paste-clear/

Pour copier la cellule E1 (exécuter la macro "Copier", le code doit être au début d'un module; la référence :
Microsoft Forms 2.0 Object Library
doit être cochée.
Code:
#If Mac Then
    ' do nothing
#Else
    #If VBA7 Then
        Declare PtrSafe Function GlobalUnlock Lib "kernel32" (ByVal hMem As LongPtr) As LongPtr
        Declare PtrSafe Function GlobalLock Lib "kernel32" (ByVal hMem As LongPtr) As LongPtr
        Declare PtrSafe Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, _
                                                             ByVal dwBytes As LongPtr) As LongPtr

        Declare PtrSafe Function CloseClipboard Lib "User32" () As Long
        Declare PtrSafe Function OpenClipboard Lib "User32" (ByVal hwnd As LongPtr) As LongPtr
        Declare PtrSafe Function EmptyClipboard Lib "User32" () As Long

        Declare PtrSafe Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, _
                                                         ByVal lpString2 As Any) As LongPtr

        Declare PtrSafe Function SetClipboardData Lib "User32" (ByVal wFormat _
                                                                As Long, ByVal hMem As LongPtr) As LongPtr
    #Else
        Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
        Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
        Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, _
                                                     ByVal dwBytes As Long) As Long

        Declare Function CloseClipboard Lib "User32" () As Long
        Declare Function OpenClipboard Lib "User32" (ByVal hwnd As Long) As Long
        Declare Function EmptyClipboard Lib "User32" () As Long

        Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, _
                                                 ByVal lpString2 As Any) As Long

        Declare Function SetClipboardData Lib "User32" (ByVal wFormat _
                                                        As Long, ByVal hMem As Long) As Long
    #End If
#End If
Public Const GHND = &H42
Public Const CF_TEXT = 1
Public Const MAXSIZE = 4096

Sub ClipBoard_SetData(MyString As String)
    #If Mac Then
        With New MSForms.DataObject
            .SetText MyString
            .PutInClipboard
        End With
    #Else
        #If VBA7 Then
            Dim hGlobalMemory As LongPtr
            Dim hClipMemory   As LongPtr
            Dim lpGlobalMemory    As LongPtr
        #Else
            Dim hGlobalMemory As Long
            Dim hClipMemory   As Long
            Dim lpGlobalMemory    As Long
        #End If

        Dim x                 As Long

        ' Allocate moveable global memory.
       '-------------------------------------------
       hGlobalMemory = GlobalAlloc(GHND, Len(MyString) + 1)

        ' Lock the block to get a far pointer
       ' to this memory.
       lpGlobalMemory = GlobalLock(hGlobalMemory)

        ' Copy the string to this global memory.
       lpGlobalMemory = lstrcpy(lpGlobalMemory, MyString)

        ' Unlock the memory.
       If GlobalUnlock(hGlobalMemory) <> 0 Then
            MsgBox "Could not unlock memory location. Copy aborted."
            GoTo PrepareToClose
        End If

        ' Open the Clipboard to copy data to.
       If OpenClipboard(0&) = 0 Then
            MsgBox "Could not open the Clipboard. Copy aborted."
            Exit Sub
        End If

        ' Clear the Clipboard.
       x = EmptyClipboard()

        ' Copy the data to the Clipboard.
       hClipMemory = SetClipboardData(CF_TEXT, hGlobalMemory)

PrepareToClose:

        If CloseClipboard() = 0 Then
            MsgBox "Could not close Clipboard."
        End If
    #End If

End Sub


Sub Copier()
ClipBoard_SetData [E1].Value
End Sub
Pour coller dans la variable Var :

Code:
Sub Coller()
  Dim Clipboard As MSForms.DataObject
  Dim str1 As String
  Set Clipboard = New MSForms.DataObject
  Clipboard.GetFromClipboard
  Var = Clipboard.GetText
End Sub

Daniel
 

Discussions similaires

Réponses
26
Affichages
387

Statistiques des forums

Discussions
312 248
Messages
2 086 596
Membres
103 252
dernier inscrit
Ersar