Microsoft 365 Envoyer des informations dans le presse papiers windows 10

  • Initiateur de la discussion Initiateur de la discussion bonoboas
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

Dernière édition:
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 ….
 
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:
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
 
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:
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Pb avec Windows
Réponses
47
Affichages
3 K
Réponses
26
Affichages
1 K
Retour