function modifiant le format

  • Initiateur de la discussion Initiateur de la discussion imanuelga
  • 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 !

I

imanuelga

Guest
Bonjour à tous et toutes,

j'aimerais créé une function permettant de mettre en gras certains caractères d'une autre cellule. Est-ce possible ?

j'ai essay quelque chose du style :


Function gras(cellule, début, longueur)

gras = cellule.Characters(début, longueur).Font.FontStyle = "Gras"

End Function


Mais excel ne semble pas comprendre ce que je veux dire.....

Merci à tous pour ce super site !

Imanuelga
 
Bonjour

ça faisait longtemps qu'on s'était croisé

bon voici une macro qui devrait faire le taf sur la cellule active

Sub toto()

Dim cellule As String, debut As Integer, longueur As Integer

cellule = ActiveCell.Address
debut = InputBox(" debut")
longueur = InputBox("longueur")

Range(cellule).Characters(Start:=debut, Length:=longueur).Font.FontStyle = "Gras"

End Sub

Bon courage

Pascal
 
Bonjour Pascal76,

oui oui je me souviens bien de t'avoir croisé !
Pour tout dire, j'espérais bien te retrouver à nouveaux car comme je ne viens pas souvent ici (pas assez à mon goût mais...) cela fait plaisir de retrouver une connaissance !

Merci pour ta réactivité, c'est vraiment impressionnant et super sympa !

Bien, tu vas trouvé que je ne suis jamais totalement satisfait, mais j'aimerais plutôt passer par une fonction que par une macro car à l'intérieur de ma macro principale, je voudrais éviter de passer par une boucle pour remplir une colonne (un champ, en terme d'access ), ce fameux champ où je mets en forme du texte.

Bien qu'une function personalisée soit plus lente qu'une fonction excel d'origine, j'imagine que cela sera quand même plus rapide qu'une boucle...

Je remplirais donc mon champ au final comme ceci :

With range("x2:x"&nl)
.formular1c1="=gras(rc9;début;longueur)"
.value=.value
end with

Bien amicalement,
Manuel
 
Re

excuse de ne pas avoir répondu plus tôt

Ce que tu essaye de faire je ne vois pas comment tu puisses le fairavec une fonction comme tu l'appelles car c'est de la mise en forme

donc une boucle du style fera très bien l'affaire

for each cell in range("x2:x"&nl)
cell.Characters(Start:=debut, Length:=longueur).Font.FontStyle = "Gras"
next

Pascal
 
Merci Pascal,

effectivement, je pense que ce que j'avais demandé n'était pas possible pour la raison que tu donnes.

J'ai donc mis une boucle pour le format et ça va trés vite finalement.


For i = 2 To nl

L = Len(Cells(i, 14))

If L <> 0 Then

S = Len(Cells(i, 15)) - L
Cells(i, 15) = Left(Cells(i, 15), S) & Chr(10) & Right(Cells(i, 15),L)
Cells(i, 15).Characters(Start:=S + 1, Length:=L+1).Font.
FontStyle = "Gras"

End If

Next i

J'ai testé avec for each et pour une fois cela a marché ( j'ai tjrs eu des pblm avec for each ... :-( )

For Each cell In Range(Cells(2, nc + 1), Cells(nl, nc + 1))

L = Len(cell.Offset(0, -1))

If L <> 0 Then
S = Len(cell) - L
cell.Value = Left(cell, S) & Chr(10) & Right(cell, L)
cell.Characters(Start:=S + 1, Length:=L + 1).Font.FontStyle
= "Gras"
End If

Next

la boucle est lègèrement plus lente.

A bientôt, j'ai d'autres questions à poser ;-)
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
314
Réponses
1
Affichages
1 K
Retour