Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Copie du contenu d'une cellule dans le Presse-Papiers en fin de code + formule

Shinpi

XLDnaute Nouveau
Bonjour,

Il y a quelques jours, j'ai ouvert une discussion concernant l'insertion d'un saut de ligne à chaque retour à la ligne automatique et j'ai fini par trouver une solution dans une ancienne discussion.

Ce code me permet de faire en sorte qu'en collant du texte dans la cellule B3, celui-ci soit automatiquement distribué sur des lignes de 45*caractères max. et qu'entre ces lignes soit inséré le caractère du saut de ligne, tout ça dans la même cellule B3. J'ai ensuite ajouté dans la cellule adjacente (C3) une formule qui remplace le caractère de saut de ligne par un gros carré noir. J'ai besoin de ça pour coller ensuite le résultat dans une autre application qui ne reconnaît malheureusement pas le caractère des sauts de ligne et dans laquelle je remplace manuellement les gros carrés par une balise interne au logiciel.

Ce que je souhaiterais obtenir, c'est qu'à la fin du code qui réorganise mon texte en B3, le contenu de ma cellule C3 soit copié dans le Presse-Papiers directement. Je ne sais pas si c'est possible, mais ce serait vraiment très pratique.

Je vous ai mis en pièce jointe mon fichier d'exemple et voici le code que j'utilise :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim n%, P As Range, r As Range, s, i%, x$, t$
n = 45 'nombre maximum de caractères par ligne, paramétrable
Set P = Range("B3:B" & Rows.Count) 'à adapter
Set r = Intersect(Target, P, Me.UsedRange)
If r Is Nothing Then Exit Sub
Application.ScreenUpdating = False = False
Application.EnableEvents = False 'désactive les événements
For Each r In r 'si entrées multiples (copier-coller)
s = Split(RTrim(Replace(r, vbLf, " "))) 'tableau des mots
For i = 0 To UBound(s)
x = t & IIf(i, " ", "") & Left(s(i), n)
t = t & vbLf & Left(s(i), n)
t = IIf(Len(x) - InStrRev(x, vbLf) > n, t, x)
Next
r = t
Next
'---ajustement des lignes et colonnes---
P.WrapText = False
P.RowHeight = 10
P.ColumnWidth = 70
P.WrapText = True
P.Rows.AutoFit
P.Columns.AutoFit
Application.EnableEvents = True 'réactive les événements
End Sub


Merci d'avance pour votre aide,


AL
 

Pièces jointes

  • AJOUT CELLULE AU PRESSE-PAPIERS.xlsm
    24.8 KB · Affichages: 29

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Copie du contenu d'une cellule dans le Presse-Papiers en fin de code + formule

Bonjour,

...................... Ce que je souhaiterais obtenir, c'est qu'à la fin du code qui réorganise mon texte en B3, le contenu de ma cellule C3 soit copié dans le Presse-Papiers directement

Range("C3").Copy

à+
Philippe
 

Pierrot93

XLDnaute Barbatruc
Re : Copie du contenu d'une cellule dans le Presse-Papiers en fin de code + formule

Bonjour,

une autre approche :
Code:
Sub test()
Dim x As New DataObject
'activer la reference Microsoft Forms 2.0 Object Library
x.SetText Range("C3")
x.PutInClipboard
End Sub

bonne journée
@+
 

Shinpi

XLDnaute Nouveau
Re : Copie du contenu d'une cellule dans le Presse-Papiers en fin de code + formule

Merci à tous les deux pour vos réponses ultra-rapides.

J'ai essayé la solution de Pierrot93, mais (même en activant la référence MF 2.0 au préalable) rien ne se passe.

Du coup, j'ai simplement ajouté la petite ligne de code de phlaurent55 à la fin de mon code d'origine et ça a fonctionné.

Merci encore, je vais gagner du temps avec ça !


AL
 

Pierrot93

XLDnaute Barbatruc
Re : Copie du contenu d'une cellule dans le Presse-Papiers en fin de code + formule

Re,

J'ai essayé la solution de Pierrot93, mais (même en activant la référence MF 2.0 au préalable) rien ne se passe.

bah... chez moi les données de la cellule C3 sont dans le presse papier... faut bien sur ensuite les coller...
 

Shinpi

XLDnaute Nouveau
Re : Copie du contenu d'une cellule dans le Presse-Papiers en fin de code + formule

Je vous rassure, j'ai ben essayé de les coller par la suite.

Je ne remets pas en cause votre solution, je dis juste que dans mon cas, je n'ai pas réussi à la faire fonctionner.

Pour information, j'ai collée votre code dans l'éditeur VBA à la suite de mon code d'origine, soit après le «*End Sub*». Peut-être n'aurai-je pas dû faire comme ça, je ne suis pas un expert non plus... Si je ne l'utilise pas correctement, ça peut expliquer pourquoi ça ne fonctionne pas pour mon fichier.

Merci en tout cas pour votre aide !

AL
 

Pierrot93

XLDnaute Barbatruc
Re : Copie du contenu d'une cellule dans le Presse-Papiers en fin de code + formule

Re,

il aurait fallu coller juste ceci :
Code:
Dim x As New DataObject
'activer la reference Microsoft Forms 2.0 Object Library
x.SetText Range("C3")
x.PutInClipboard

avant le "end sub" de ta procédure.... le code proposé étant une procédure à part entière.... ou bien l'éxécuté également avant ton "end sub" en l'appelant...
 

Shinpi

XLDnaute Nouveau
Re : Copie du contenu d'une cellule dans le Presse-Papiers en fin de code + formule

Ah bah, voilà, c'est donc pour ça.* J'aurai appris quelque chose (en plus de tout le reste…).

Merci pour l'explication.


AL
 

Discussions similaires

Réponses
7
Affichages
330
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…