XL 2016 Colorier chaque lettre d'une couleur différente

  • Initiateur de la discussion Initiateur de la discussion dindin
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

dindin

XLDnaute Occasionnel
Bonjour
J'ai 5000 mots dans la colonne A . Je voulu dans la colonne B les copier en coloriant chaque lettre d'une couleur différente de la lettre précédente.
Ex: maison m en bleu a en rouge i en vert ..... etc
Les mots varient de 2 à 15 lettres chacune.
Pouvez-vous m'aider svp. Merci.
 
Bonjour tout le monde
Je prépare des cours d'apprentissage de l'alphabet arabe.
Mon but c'est colorier la lettre de chaque mot vu que chaque lettre change de forme suivant sa position dans le mot.
- les couleurs aident beaucoup les enfants à mémoriser les différentes formes de chaque lettre.
En plus une présentation avec les couleurs est mieux suivie par des enfants de CP.
Après essai de différents code je me trouve avec des mots découpés.
Après réflexion, le problème vient de la spécificité de la langue elle-même.
Chaque lettre possède une voyelle.
Excel considère que chaque lettre avec sa voyelle vaut 2 caractères et non pas un seul.
Je vais essayer de modifier le code pour qu'il me donne le résultat voulu.
Merci à tous pour votre aide .
Je vous joint un exemple dans la matinée.
 
Bonjour dindin, le forum,

Pour éviter le message "mémoire insuffisante" il suffit d'utiliser DisplayAlerts :
VB:
Sub Couleurs()
Dim d As Object, c As Range, i%, coul
Set d = CreateObject("Scripting.Dictionary")
Randomize
With Application
    .ScreenUpdating = False
    .DisplayAlerts = False
    For Each c In [A1].CurrentRegion
        For i = 1 To Len(c)
            If Mid(c, i, 1) = " " Then d.RemoveAll: i = i + 1 'nouveau mot
            Do
                coul = .RandBetween(3, 56) 'palette des 56 couleurs
            Loop While d.exists(coul)
            d(coul) = ""
            c.Characters(i, 1).Font.ColorIndex = coul
    Next i, c
End With
End Sub
Fichier (2) avec 5580 mots.

Bonne journée.
 

Pièces jointes

Dernière édition:
De votre post #16 je comprends que vous voulez qu'une voyelle ait la même couleur que la lettre qui la précède alors voyez ce fichier (3) :
VB:
Sub Couleurs()
Dim voyelle$, d As Object, c As Range, i%, flag As Boolean, coul
voyelle = "AEIOUY"
Set d = CreateObject("Scripting.Dictionary")
Randomize
With Application
    .ScreenUpdating = False
    .DisplayAlerts = False
    For Each c In [A1].CurrentRegion
        For i = 1 To Len(c)
            If Mid(c, i, 1) = " " Then d.RemoveAll: i = i + 1 'nouveau mot
            flag = True
            If InStr(voyelle, UCase(Mid(c, i, 1))) Then If i > 1 Then If Mid(c, i - 1, 1) <> " " Then flag = False
            If flag Then
                Do
                    coul = .RandBetween(3, 56) 'palette des 56 couleurs
                Loop While d.exists(coul)
                d(coul) = ""
            End If
            c.Characters(i, 1).Font.ColorIndex = coul
    Next i, c
End With
End Sub
 

Pièces jointes

Dernière édition:
un travail très bien soigné.
Excellent
pour info voilà les voyelles de l'arabe : َ ً ُ ٌ ّ ْ ِ ٍ ِّ ُّ َّ
Pour les voyelles longues je cherche une nouvelle idée qui pourra aider à mieux présenter mes cours surtout que j'utilise la méthode syllabique.
Car les chaque voyelle longue fait partie d'une syllabe.
je reviendrai vers vous quand l'idée sera bien dessinée dans ma tête.
Pour le moment votre travail est plus que Formidable.
ça fait plus d'un an que je travaille sur ce grand projet.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour