Tri par couleur VBA

ascarter

XLDnaute Junior
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.
 

Pièces jointes

  • Classeur1.xls
    20.5 KB · Affichages: 89
  • Classeur1.xls
    20.5 KB · Affichages: 94
  • Classeur1.xls
    20.5 KB · Affichages: 92

Matheop

XLDnaute Occasionnel
Re : Tri par couleur VBA

Salut ascarter.

Je te propose ce début de piste. A toi de voir si cela te convient.

Code:
Sub triCouleurs()

  Range("A2").Select
  For x = 1 To Len(ActiveCell.Value)
    If ActiveCell.Characters(Start:=x, Length:=1).Font.ColorIndex = xlAutomatic Then
       Range("B2").Value = Range("B2").Value + _
       ActiveCell.Characters(Start:=x, Length:=1).Caption
    End If
        
    If ActiveCell.Characters(Start:=x, Length:=1).Font.ColorIndex = 44 Then
       Range("D2").Value = Range("D2").Value + _
       ActiveCell.Characters(Start:=x, Length:=1).Caption
    End If
        
    If ActiveCell.Characters(Start:=x, Length:=1).Font.ColorIndex = 5 Then
       Range("C2").Value = Range("C2").Value + _
       ActiveCell.Characters(Start:=x, Length:=1).Caption
    End If

  Next x
    
  Range("B2").Value = Range("B2").Value & " "
  Range("C2").Value = Range("C2").Value & " "
  Range("D2").Value = Range("D2").Value & " "

End Sub

Bonne continuation.
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Tri par couleur VBA

Bonjour,

Voir PJ

Code:
Function extraitCoul(c, noCoul)
   Application.Volatile
   For i = 1 To Len(c)
       If c.Characters(Start:=i, Length:=1).Font.ColorIndex = noCoul Then
         temp = temp & Mid(c, i, 1)
       End If
    Next i
    extraitCoul = temp
End Function

JB
 

Pièces jointes

  • FonctionExtraitCouleur.xls
    24.5 KB · Affichages: 101

ascarter

XLDnaute Junior
Re : Tri par couleur VBA

Parfait,c'est ce que je voulais. Autre petite question, pourquoi dans le programme ci dessous,il ne prend en compte que les deux dernières conditions?
If Cells(3, 2) = "" Then
Range("E55:E85").Value = ""
Else
Range("E55").Value = Sheets("Données CR").Cells(3, 3).Value
End If
If Cells(3, 2) = FAUX Then
Range("E55:E85").Value = ""
End If

If Cells(4, 2) = "" Then
Range("E55:E85").Value = ""
Else
Range("E55").Value = Sheets("Données CR").Cells(4, 3).Value
End If
If Cells(4, 2) = FAUX Then
Range("E55:E85").Value = ""
End If

Merci d'avance
 

Efgé

XLDnaute Barbatruc
Re : Tri par couleur VBA

Bonjour ascarter, MatiChoux Bonjour J. BOISGONTIER_ Très tard mais j'avais préparé ceci...Sans connaitre le nombre final de couleurs. _ Cordialement _EDIT _Version (2) plus rapide (environ 10X)_Cordialement
 

Pièces jointes

  • Classeur1(2).xls
    42 KB · Affichages: 95
  • Classeur1(2).xls
    42 KB · Affichages: 118
  • Classeur1(2).xls
    42 KB · Affichages: 124
Dernière édition:

Discussions similaires

Réponses
16
Affichages
367