Vba excel copier en gras dans le presse papier

Signaler
Messages postés
159
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2011
-
Messages postés
60
Date d'inscription
vendredi 26 octobre 2007
Statut
Membre
Dernière intervention
30 mars 2010
-
Bonsoir,

Je voudrais copier dans le presse papier les valeurs de 3 cellules et mettre l'une des trois (var3) en gras (alors qu'elle ne l'est pas forcemment dans le fichier excel...)

Voici mon code:
Dim MyData As DataObject
Dim var1 As String
Dim var2 As String
Dim var3 As String

var1 = ActiveCell.Value
var2 = ActiveCell.Offset(0, 1).Value
ActiveCell.Offset(0, 2).Font.Bold = True
var3 = ActiveCell.Offset(0, 2).Text

mvar = "Référence: " & var1 & vbNewLine & "Désignation: " & var2 & vbNewLine & "Emballage: " & var3

Set MyData = New DataObject

MyData.SetText mvar
MyData.PutInClipboard

MsgBox (mvar)
End Sub

Merci pour votre aide.
Liro

7 réponses

Messages postés
60
Date d'inscription
vendredi 26 octobre 2007
Statut
Membre
Dernière intervention
30 mars 2010

Bonsoir à tous
Bonsoir Liro
Je suppose que c'est sur Excel.
Je suppose aussi que "mvar" tu la mets dans une cellule.
Afin de contourner le pb, je te propose de traiter la cellule "recevante" avec un code comme celui-ci

Sub essai()
malongueur = Len(Var3)
malongueurtotale = Len(Range("b5"))
'tu traites la cellule recevante
With ActiveCell.Characters(Start:=malongueurtotale - malongueur + 1, Length:=malongueur).Font
        .FontStyle = "Gras"
End With
End Sub

Si toutefois j'ai bien compris

Frédéric
Messages postés
159
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2011

Merci Fréd pour ta réponse mais je copie dans le presse papier pour coller aileur (pas dans excel).

En fait j'utilise cette mini macro pour ouvrir un fichier copier des infos dans le pp sans la mise en forme pour coller dans un mail ou un doc word ou autre...

Je voudrais juste qu'une des lignes soit en gras.

Merci
Ludo
Messages postés
60
Date d'inscription
vendredi 26 octobre 2007
Statut
Membre
Dernière intervention
30 mars 2010

Bonsoir à tous
Bonsoir Liro

Une solution qui n'est peut être pas très "élégante", mais qui en apparence fonctionne :

Tu mets ton "mvar" dans une cellule excel, tu traites cette cellule comme je te l'ai indiquée dans le code proposé, et tu fais un copy de cette cellule vers word, par exemple....
Tirée par les cheuveux, je te le concède, mais le résultat est là

Frédéric
Messages postés
159
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2011

Avant je copiais en sélectionnant les cellule puis ctrl+C mais en collant j'avais le format tableau que je ne voulais pas.

Dans Word je pouvais faire édition>collage spécial>valeur mais dans mon Outlook le menu était grisé, j'ai donc créé cette petite macro.

Dans le code j'ai un ActiveCell.Value pour ne copier que la valeur donc si je copie mvar dans une cellule et qu'ensuite je fait un ActiveCell.Value je n'aurai pas non plus la mise en forme.

Ne peut-on pas manipuler la variable pour la mettre en gras?

Merci
Messages postés
159
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2011

Avant je copiais en sélectionnant les cellule puis ctrl+C mais en collant j'avais le format tableau que je ne voulais pas.

Dans Word je pouvais faire édition>collage spécial>valeur mais dans mon Outlook le menu était grisé, j'ai donc créé cette petite macro.

Dans le code j'ai un ActiveCell.Value pour ne copier que la valeur donc si je copie mvar dans une cellule et qu'ensuite je fait un ActiveCell.Value je n'aurai pas non plus la mise en forme.

Ne peut-on pas manipuler la variable pour la mettre en gras?

Merci
Messages postés
159
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2011

Oupss! Comment supprimer ce message?
Messages postés
60
Date d'inscription
vendredi 26 octobre 2007
Statut
Membre
Dernière intervention
30 mars 2010

Bonjour à tous
Bonjour Liro

Essaie ce code

Sub gras()

var1 = ActiveCell.Value
var2 = ActiveCell.Offset(0, 1).Value
Var3 = ActiveCell.Offset(0, 2).Text

mvar = "Référence: " & var1 & vbNewLine & "Désignation: " & var2 & vbNewLine & "Emballage: " & Var3
malongueur = Len(Var3)
malongueurtotale = Len(mvar)
'tu traites la cellule recevante B5 par exemple
Range(" B5 ") = mvar
Range(" B5 ").Select
With ActiveCell.Characters(Start:=malongueurtotale - malongueur + 1, Length:=malongueur).Font
        .FontStyle = "Gras"
End With
Selection.Copy
'.......et tu envoies
Selection.ClearContents ' efface B5
End Sub

Frédéric