Fonction Characters(debut, long)

Résolu/Fermé
Gac51 Messages postés 7 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 21 mars 2017 - 15 mars 2017 à 19:38
Gac51 Messages postés 7 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 21 mars 2017 - 21 mars 2017 à 10:20
Bonjour,
voici mon souci
J'aimerais que quand je formate les données d'une cellule par vba avec characters, mon formatage s'arrête au "-"(tiret)
ex:[A1].Characters(de la 12ème lettre, au tiret).fontstyle ="gras"
sachant que la position du tiret est variable
ex valeur [A1]de ce que je veux :
COM/CHA DURANT Thibault - 0612345467 (0017654)
d'avance merci j'ai vu plusieurs choses mais pas réussi à mettre en place la variable.

A voir également:

4 réponses

yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 Ambassadeur 1 551
15 mars 2017 à 20:06
bonsoir, peut-ête ainsi?
[A1].Characters(12, InStr([A1], "-") - 12).Font.Bold = True
0
Gac51 Messages postés 7 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 21 mars 2017
16 mars 2017 à 10:47
Bonjour et merci a yg_be pour cette réponse rapide et performante.
Mais j'ai d'autres problèmes.
Dans un 1er temps plutôt que de commencer à la 12 lettre je veux mettre en gras ce que j'ai entre tiret
ex :COM/CHA - DURANT Thibault - 0612345467 (0017654)
j'ai essayé d'adapter le code mais cela n'a pas fonctionné.
Dans un 2ème temps j'ai besoin de mettre en gras les valeur entre parenthèses dans le cas ou il y a une valeur
ex : il peut y avoir deux codes
COM/CHA - DURANT Thibault - 0612345467 (0017654)
ou
COM/CHA - DURANT Thibault - 0612345467
Merci d'avance pour votre aide
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
16 mars 2017 à 11:29
Bonjour

Option Explicit
'------------------------------
Sub vvvv()
Dim derlig As Integer, Lig As Integer
Dim Cptr As Byte, xxx As String, separe, Debut As Byte, Fin As Byte
derlig = Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
For Lig = 1 To derlig
For Cptr = 1 To 2
xxx = Choose(Cptr, "-", "(")
separe = Split(Cells(Lig, "A"), xxx)
Debut = Len(separe(0)) + 1
Fin = Len(separe(1))
Cells(Lig, "A").Characters(Debut, Fin).Font.Bold = True
Next
Next
End Sub


peut-^tre à mettre en fonction ou macro paramétrée
0
Gac51 Messages postés 7 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 21 mars 2017
16 mars 2017 à 14:14
Merci Michel pour cette réponse mais je pensais qu'elle serait aussi simple que celle de YG_be du style
[A1].Characters(InStr([A1], "-"), InStr([A1], "-") ).Font.Bold = True
comme je le disait j'ai essayé quelque chose comme ça ma cela ne fonctionne pas !!!
ton code fonctionne surement très bien mais cela sera peut être dur (pour moi) pour l'incorporé dans mon code.
Private Sub transfert ()
Sheets ("pilotage").Select
Sheets ("pilotage").[b65000].(xlup).offset(1,0).select
ActiveCell.Offset (0,1).value = now
ActiveCell.Offset (0,2).value = Thisworbook.sheets("type").[ag7]
ActiveCell.Offset (0,2).Characters (12, InStr (ActiveCell.Offset (0,4),"-") -12) .Font.FontStyle="gars"
ActiveCell.Offset (0,3).value = Thisworbook.sheets("type").[ah7]
'etc..
end sub
Comme tu peux le constater j'ai bien incorporé le code de YG_be, mais le contenu de ma cellule " Thisworbook.sheets("type").[ag7] " a changé c'est pourquoi j'ai besoin de 2 codes bien distinct pour l'incorporé dans d'autre.
Mon problème étant bien de formaté le contenu de ma cellule après transfert comme suit :
COM/CHA - DURANT Thibault - 0612345467 (0017654)
en deux codes
d'abord ce qui entre les tirets dans ce cas nom et prénom et en suite ce qu'il y a entre parenthèses si il y a lieu. je n'ai pas forcement de code après le numéro de téléphone
ex: COM/CHA - DURANT Thibault - 0612345467
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
17 mars 2017 à 09:11
Bonjour,

d'abord ce qui entre les tirets dans ce cas nom et prénom et en suite ce qu'il y a entre parenthèses si il y a lieu. je n'ai pas forcement de code après le numéro de téléphone

--

c'est ce que je t"ai proposé
Excuse moi de t'avoir dérangé

 Michel
0
Gac51 Messages postés 7 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 21 mars 2017
17 mars 2017 à 11:20
Excuse moi Michel je ne voulais en aucun cas être désagréable, c'est juste que mon niveau en Vba est très limité et que je ne sais pas vraiment comment incorporé ton code au mien.
je vais travaillé dessus ce week-end je te tien au courant de mon avancé.
Encore mille pardons.
0
yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 1 551
Modifié par yg_be le 17/03/2017 à 15:01
tu peux simplement remplacer le code que je t'ai proposé par:
Dim Cptr As Byte, xxx As String, separe, Debut As Byte, Fin As Byte
    For Cptr = 1 To 2
        xxx = Choose(Cptr, "-", "(")
        If InStr([a1], xxx) Then
            separe = Split([a1], xxx)
            Debut = Len(separe(0)) + 2
            Fin = Len(separe(1)) + 1 - Cptr
            [a1].Characters(Debut, Fin).Font.Bold = True
        End If
    Next
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310 > yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024
17 mars 2017 à 15:05
Pourquoi pompes tu ?
0
Gac51 Messages postés 7 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 21 mars 2017
21 mars 2017 à 10:20
Merci a tout les deux pour vos réponses.
0