![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
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 |
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#3 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#4 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#5 (permalink) |
|
Guest
Messages: n/a
|
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 ;-) |
| ANNONCES | |
| Liens sociaux |
| Outils de la discussion | |
|
|