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.

4 réponses

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