Fonction Characters(debut, long)

Résolu
Gac51 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
Gac51 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonsoir, peut-ête ainsi?
[A1].Characters(12, InStr([A1], "-") - 12).Font.Bold = True
0
Gac51 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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   Statut Membre Dernière intervention  
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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   Statut Membre Dernière intervention  
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Pourquoi pompes tu ?
0
Gac51 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Merci a tout les deux pour vos réponses.
0