Sélectionner une partie d'un chaîne de caractère

Bonjour,

Je suis à la recherche d'un bout de code pour ne sélectionner qu'une partie des caractères d'une cellule.

A partir de la feuille "TEMP" (qui est la liste des référence que je souhaite sélectionner), je veux que ces valeurs passent en gras dans l'onglet "Listing" en colonne I.

Faire la boucle ou passer en gras les caractères n'est pas un problème mais je n'arrive pas à trouver le code qui permettrait de ne sélectionner que la chaîne de caractère que je veux et pas la cellule entière via une boucle.

J'ai placé une feuille pour illustrer le résultat que je souhaite dans le fichier.

Si quelqu'un à déjà connu cette situation....

Merci d'avance!!

9listemomo.xlsx (24.20 Ko)

Bonjour,

Jusqu'où va se nicher la sélectomanie !

Alors, imagine que devant donner une directive à un collaborateur, tu le saisis à bras le corps pour la lui hurler dans l'oreille !

Il commencera à s'interroger sérieusement !

Tu as des fragments de chaîne à mettre en gras. Ces fragments correspondent à des références. Très bien !

Si tu disais précisément comment déterminer les références à mettre en gras, on avancerait... car tu dis qu'elles sont consignées dans la feuille Temp, mais pour illustrer tu mets en gras une référence qui n'y figure pas !!!

Il convient donc que tu confirmes, infirmes ou précises ton propos... sans nouvelle sélection !!!!!

Cordialement.

Bonjour,

une tentative

P.

Option Explicit

Sub PartielGras()
Dim F1, F2 As Worksheet
Dim Cel, C
Dim Mlen, Dep ' longueur de la chaine - position de départ
Set F1 = Sheets("listing"): Set F2 = Sheets("temp")
For Each Cel In F2.[A2:A8]
   For Each C In F1.Range("I2:I5")
      If InStr(1, C.Value, Cel) > 1 Then
         Mlen = Len(Cel)
         Dep = InStr(1, C.Value, Cel)
         C.Characters(start:=Dep, Length:=Mlen).Font.Bold = True
      End If
   Next C
Next
End Sub
MFerrand a écrit :

Alors, imagine que devant donner une directive à un collaborateur, tu le saisis à bras le corps pour la lui hurler dans l'oreille !

Il commencera à s'interroger sérieusement ! .

Malheureusement c'est un peut comme cela que ça se passe de nos jours! Car je suis le collaborateur et ça rend sourd!

MFerrand a écrit :

mais pour illustrer tu mets en gras une référence qui n'y figure pas !!!.

C'est surement parce-que j'ai supprimé énormément de données pour envoyer un fichier allégé... et je pense avoir supprimer une valeur de trop dans la feuille listing.

TOUTES les valeurs qui sont dans la feuilles Temp sont à mettre en gras dans la feuille listing. J'espère que cela t'éclair.

Merci d'avance


patrick1957 a écrit :

Bonjour,

une tentative

P.

Dep = InStr(1, C.Value, Cel)

Superbe Patrick!!

J'ai plus qu'à adapter dans mon original! C'est vraiment top!

Je pense que c'était juste cette petite partie qui me bloquait!

Merci encore!

Voici une version 'light' :

Sub ActifEnGras()
    Dim actif, liste, gras, n%, i%, j%, itl%
    With Worksheets("Temp")
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        actif = .Range("A2:A" & n).Value
    End With
    With Worksheets("Listing")
        n = .Cells(.Rows.Count, 9).End(xlUp).Row
        For i = 2 To n
            liste = Split(.Cells(i, 9), " ~ ")
            For itl = 0 To UBound(liste)
                For j = 1 To UBound(actif)
                    If liste(itl) Like "*" & actif(j, 1) Then
                        gras = gras & ";" & 11 * itl + 1: Exit For
                    End If
                Next j
            Next itl
            If gras <> "" Then
                gras = Split(gras, ";")
                With .Cells(i, 9)
                    For j = 1 To UBound(gras)
                        .Characters(gras(j), 8).Font.Bold = True
                    Next j
                End With
                gras = ""
            End If
        Next i
    End With
End Sub

J'ai dit 'light', parce qu'on présuppose que tes références et la façon dont elles sont listées a une structure fixe.

Longueur d'une référence (dans le Listing) : 8 caractères.

Espacement entre 2 références dans le Listing : 11 caractères.

Parce que si ça varie il va falloir prévoir de compter pour chacune !

Bouton pour tester sur la feuille Temp (à toi d'adapter par la suite à ta configuration).

La plage de valeurs où sont listés les actifs à mettre en gras est affectée à la variable actif (en tant que valeurs), donc facile à adapter.

Pour le reste, une boucle sur la colonne I de Listing ne posera pas de problème d'adaptation, et les opérations à l'intérieur de la boucle n'ont nul besoin d'être adaptées...

Cordialement.

Rechercher des sujets similaires à "selectionner partie chaine caractere"