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!!
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.