Microsoft 365 Envoyer des informations dans le presse papiers windows 10

bonoboas

XLDnaute Occasionnel
Bonjour,

Tout est dans le titre je souhaiterais envoyer des informations de cellule par excel dans le presse papiers windows en utilisant le raccourci : touche windows + v

J'ai trouvé 2 macros mais elles ne fonctionnent pas je vous joins le fichier.

Pour information il y a 2 liens à coller dans le presse papier et doivent être accessible par le raccourci : windows + v

Merci d'avance pour votre aide
 

Pièces jointes

  • Presse papiers windows.xlsm
    14.5 KB · Affichages: 10
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonsoir.
En tout cas chez moi l'exécution de la 1ère Sub Test, déjà, a bien envoyé "lien" dans le presse-papier, simulant ainsi un Ctrl+C qui aurait été fait après sélection du texte de la A1 dans la barre de formule. Un Ctrl+V, le colle bien dans de nombreux contextes. Windows+V l'affiche aussi, mais je n'ai pas l'habitude d'utiliser ça ….
 

Dranreb

XLDnaute Barbatruc
Ah. Quelquefois en effet, mais c'est assez rare, ça ne marche plus et ça copie quelque chose comme ça, je ne sais pas à la suite de quelle manœuvre, ni quoi y faire. Pour l'instant mes outils qui utilisent un MSForms.DataObject fonctionnent toujours.
 
Dernière édition:

dysorthographie

XLDnaute Accro
Bonsoir,
moi j'ai rien compris!
VB:
Sub test()
PressePapier = "toto"
txt = PressePapier
End Sub
Public Property Let PressePapier(Value)
Const DATAOBJECT_BINDING As String = "new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"
    With CreateObject(DATAOBJECT_BINDING)
        .SetText Value
        .PutInClipboard
    End With
End Property
Public Property Get PressePapier()
Const DATAOBJECT_BINDING As String = "new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"
    With CreateObject(DATAOBJECT_BINDING)
        .GetFromClipboard
        PressePapier = .GetText
    End With
End Property
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour le fil, le forum

c'est pas plus simple comme ça ? si il y a plusieurs liens dans la cellule, on boucle dessus sinon on prend simplement le premier.
Dans tes deux macros, tu récupères la valeur de la cellule (et donc le TextoDisplay du lien) qui n'est pas forcément le lien si le texte par défaut du lien a été modifié.

Cordialement, @+
Code:
Sub Créer_Lien()
    Range("A10").Hyperlinks.Add Anchor:=Range("A10"), Address:= _
        "https://www.excel-downloads.com/threads/envoyer-des-informations-dans-le-presse-papiers-windows-10.20055413/" _
        , SubAddress:="post-20415980", TextToDisplay:="lien 3"
End Sub
Sub Test3()
    Dim Lien_en_Cours As DataObject
    If Not [A10].Hyperlinks.Count = 0 Then
        Set Lien_en_Cours = New DataObject
        Lien_en_Cours.SetText [A10].Hyperlinks(1).Address: Lien_en_Cours.PutInClipboard
        Set Lien_en_Cours = Nothing
    End If
End Sub
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
bonjour
attention quand on fait un CTR+C sur une cellule on copie la donnée + un saut de ligne
alors oui quand on le restitue sur un support on a la valeur mais sur certains support le saut de ligne est restitué aussi (parfois sous la forme d'un petit carré ou autre)
et si plusieur cellules copiées les séparations horizontales deviennent de tabulations
les saut de ligne de vbcrlf

quand vous mettez la cellules dans le dataobject ou au autre methode faite un replace vbcrlf

il faut faire attention aussi a la gestion du presse papier d'excel qui autorise plusieurs instances du presse papier

perso un qui m'a jamais fait defaut puisqu'il ne passe pas par la gestion d'excel
VB:
Public Property Get presse_papier_Window() As String
presse_papier_Window = CreateObject("htmlfile").parentwindow.clipboardData.GetData("TEXT")
End Property

Public Function putIn_presse_papier_Window(valeur)
With CreateObject("htmlfile").parentwindow.clipboardData.setData("Text", valeur): End With
End Function

Public Function clear_presse_papier_Window()
With CreateObject("htmlfile").parentwindow.clipboardData.clearData("Text"): End With
End Function


Sub testIN()
putIn_presse_papier_Window ("toto")
End Sub

Sub testOUT()
'donnera un message d'erreur null si le clip est vraiment vide  et non = à ""
MsgBox presse_papier_Window
End Sub

Sub test_clear_presse_papier()
clear_presse_papier_Window
End Sub

Sub test_copyCell()
[A1:B10].Copy
MsgBox "en laissant le tabulation " & vbCrLf & presse_papier_Window
MsgBox "en remplacant les tabulations par ""||""" & vbCrLf & Replace(presse_papier_Window, vbTab, "||")
End Sub
;)
et il y a meme moyen de convertir le text copié de plusieurs cellule en hcode html de base (sans css)
VB:
Sub test_copyCellHTMLouter()
[A1:B10].Copy
MsgBox "en laissant le tabulation " & vbCrLf & presse_papier_Window
cod = presse_papier_Window
cod = Replace(cod, vbTab, "</td><td>")
cod = Replace(cod, vbCrLf, "</td></tr>" & vbCrLf & "<td>")
cod = "<table>" & vbCrLf & "<tr><td>" & Replace(cod, vbCrLf, vbCrLf & "<tr>")
cod = Left(cod, Len(cod) - 10) & vbCrLf & "</table>"
MsgBox "converti en html simple" & vbCrLf & cod
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 487
Messages
2 110 121
Membres
110 677
dernier inscrit
volare