Fonction Characters(debut, long) [Résolu]

Gac51 7 Messages postés mardi 18 août 2015Date d'inscription 21 mars 2017 Dernière intervention - 15 mars 2017 à 19:38 - Dernière réponse : Gac51 7 Messages postés mardi 18 août 2015Date d'inscription 21 mars 2017 Dernière intervention
- 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.

Afficher la suite 

9 réponses

Répondre au sujet
yg_be 4381 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 16 janvier 2018 Dernière intervention - 15 mars 2017 à 20:06
0
Utile
1
bonsoir, peut-ête ainsi?
[A1].Characters(12, InStr([A1], "-") - 12).Font.Bold = True
Gac51 7 Messages postés mardi 18 août 2015Date d'inscription 21 mars 2017 Dernière intervention - 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
Commenter la réponse de yg_be
michel_m 14970 Messages postés lundi 12 septembre 2005Date d'inscriptionContributeurStatut 16 janvier 2018 Dernière intervention - 16 mars 2017 à 11:29
0
Utile
1
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
Gac51 7 Messages postés mardi 18 août 2015Date d'inscription 21 mars 2017 Dernière intervention - 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
Commenter la réponse de michel_m
michel_m 14970 Messages postés lundi 12 septembre 2005Date d'inscriptionContributeurStatut 16 janvier 2018 Dernière intervention - 17 mars 2017 à 09:11
0
Utile
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
Commenter la réponse de michel_m
Gac51 7 Messages postés mardi 18 août 2015Date d'inscription 21 mars 2017 Dernière intervention - 17 mars 2017 à 11:20
0
Utile
3
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.
yg_be 4381 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 16 janvier 2018 Dernière intervention - 17 mars 2017 à 14:56
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
michel_m 14970 Messages postés lundi 12 septembre 2005Date d'inscriptionContributeurStatut 16 janvier 2018 Dernière intervention > yg_be 4381 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 16 janvier 2018 Dernière intervention - 17 mars 2017 à 15:05
Pourquoi pompes tu ?
Gac51 7 Messages postés mardi 18 août 2015Date d'inscription 21 mars 2017 Dernière intervention - 21 mars 2017 à 10:20
Merci a tout les deux pour vos réponses.
Commenter la réponse de Gac51