Signaler

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

Posez votre question Gac51 7Messages postés mardi 18 août 2015Date d'inscription 21 mars 2017 Dernière intervention - Dernière réponse le 21 mars 2017 à 10:20 par Gac51
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 
Utile
+0
plus moins
bonsoir, peut-ête ainsi?
[A1].Characters(12, InStr([A1], "-") - 12).Font.Bold = True
Gac51 7Messages 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
Répondre
Donnez votre avis
Utile
+0
plus moins
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 7Messages 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
Répondre
Donnez votre avis
Utile
+0
plus moins
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
Donnez votre avis
Utile
+0
plus moins
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 1938Messages postés lundi 9 juin 2008Date d'inscription 22 mars 2017 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
Répondre
michel_m 14553Messages postés lundi 12 septembre 2005Date d'inscription ContributeurStatut 22 mars 2017 Dernière intervention - 17 mars 2017 à 15:05
Pourquoi pompes tu ?
Répondre
Gac51 7Messages 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.
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !