XL 2019 générer un mot de 3 lettres suivant liste nommée alpha et colorier chaque caractère d'une couleur différente

dindin

XLDnaute Occasionnel
Bonjour le forum

En utilisant cette formule :

=INDEX(alpha;ALEA.ENTRE.BORNES(1;LIGNES(alpha)))&INDEX(alpha;ALEA.ENTRE.BORNES(1;LIGNES(alpha)))&INDEX(alpha;ALEA.ENTRE.BORNES(1;LIGNES(alpha)))

j'ai réussi à générer des mots composée de 3 lettres chacune depuis une liste nommée alpha

je souhaiterai ajouter un bouton qui fait le travail de cette formule, mais je bloque en VBA.


Merci pour votre aide
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Dindin,
Un essai en PJ avec :
VB:
Sub Essai()
    Application.ScreenUpdating = False
    N = Application.CountIf([alpha], "*")                               ' Nombre de mots dans la liste alpha
    Ligne = Int(N * Rnd)                                                ' Choix d'un mot au hasard
    If Ligne = 0 Then Ligne = 1                                         ' On évite l'index 0
    [B4] = [alpha].Offset(Ligne)(1, 1)                                  ' On écrit ce mot en B4
    For i = 1 To 3                                                      ' Pour les 3 lettres
        Couleur = 1 + Int(55 * Rnd)                                     ' On choisit une couleur au hasard
        [B4].Characters(Start:=i, Length:=1).Font.ColorIndex = Couleur  ' On met la lettre de cette couleur
    Next i
End Sub
J'ai fait le plus simple, avec des commentaires.
En l'absence de fichier test, à vous de l'adapter à votre contexte.
 

Pièces jointes

  • Mot.xlsm
    16.5 KB · Affichages: 3

dindin

XLDnaute Occasionnel
Bonjour Dindin,
Un essai en PJ avec :
VB:
Sub Essai()
    Application.ScreenUpdating = False
    N = Application.CountIf([alpha], "*")                               ' Nombre de mots dans la liste alpha
    Ligne = Int(N * Rnd)                                                ' Choix d'un mot au hasard
    If Ligne = 0 Then Ligne = 1                                         ' On évite l'index 0
    [B4] = [alpha].Offset(Ligne)(1, 1)                                  ' On écrit ce mot en B4
    For i = 1 To 3                                                      ' Pour les 3 lettres
        Couleur = 1 + Int(55 * Rnd)                                     ' On choisit une couleur au hasard
        [B4].Characters(Start:=i, Length:=1).Font.ColorIndex = Couleur  ' On met la lettre de cette couleur
    Next i
End Sub
J'ai fait le plus simple, avec des commentaires.
En l'absence de fichier test, à vous de l'adapter à votre contexte.
Bonjour sylvanu
le code est bon, sauf que ma liste de caractère contient une seule lette d'un alphabet étranger (l'arabe) dans chaque cellule soit (29 caractères en tout)
autrement dit, le code doit piocher 3 caractères à chaque fois sans doublon.
résultat souhaité :
1692698671392.png

Voici ton fichier avec la bonne liste
je n'arrive pas à l'adapter pour qu'il m'affiche 3 lettres au lieu 1

Merci pour ton aide​

 

Pièces jointes

  • Mot.xlsm
    23 KB · Affichages: 1
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 220
Membres
103 158
dernier inscrit
laufin