Tri par couleur VBA
r
Bonjour à tous,
Dans une même cellule,j'ai du texte avec différentes couleurs. J'aimerais trier ce texte par couleur. Dans le fichier exemple,dans la case A2,j'ai 3 couleurs.J'aimerais que le texte en noir se copie dans la case B2,le texte en bleu se copie en C2....
Merci d'avance pour vos réponses.
Invité
Bonjour rugnum10
Tu trouveras ci-joint ton fichier avec un petit code pour faire ce que tu souhaites
Le code est :
Sub TriSelonCouleur()
Dim Ind As Integer, TabVal() As String, MaCel As Range
Dim vStart As Integer, vLen As Integer
' Définir la cellule contenant le texte
Set MaCel = Range("A2")
' Eclater la cellule dans un tableau pour avoir les dimensions de chaque mots
TabVal = Split(MaCel, Chr(10))
' Pour chaque ligne du tableau
For Ind = 0 To UBound(TabVal)
If Ind = 0 Then
vStart = 1 ' Position de départ du mot
vLen = Len(TabVal(Ind)) ' Longueur du mot
Else
vStart = vStart + Len(TabVal(Ind - 1)) + 1 ' Position de départ du mot
vLen = Len(TabVal(Ind)) ' Longueur du mot
End If
' Avec les caractères de la cellule
With MaCel.Characters(Start:=vStart, Length:=vLen)
' Selon la couleur des caractères, classer dans la colonne correspondante
Select Case .Font.ColorIndex
Case xlAutomatic
Range("B2").Value = TabVal(Ind)
Range("B2").Font.ColorIndex = xlAutomatic
Case 5
Range("C2").Value = TabVal(Ind)
Range("C2").Font.ColorIndex = 5
Case 44
Range("D2").Value = TabVal(Ind)
Range("D2").Font.ColorIndex = 44
End Select
End With
Next Ind
End SubA+
r
Merci beaucoup BrunoM45, c'est exactement ce qu'il me fallait