Je sais pas si je suis le bienvenu pour vous aider. Je débute moi aussi mais j'ai planché de nombreuses heures sur un problème similaire. Notamment avec changement de couleur pseudo aléatoire.
Mes solutions ont été :
- de refaire la userform pour la faire de façon académique (il y avait des textbox en plus qui s'étaient cachées sous d'autres ! C'est pas sympa de leur part.) Ca ne changeait rien directement mais on ne sais jamais !
- ensuite, j'ai effectivement utilisé initialize() qui est très pratique puis les fonctions exit() et afterupdate() sur les texbox et ça ça marche bien. J'ai retrouvé toute la stabilité de mon fichier (ça plantait aussi...). Seul particularité de taille : pense bien à faire attention aux priorités entre exit, beforeupdate et afterupdate
Code:
Option Explicit
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Dans les TextBox de DATE, autorise uniquement les touches numériques et /
KeyAscii = AutoriseFrappe(KeyAscii)
End Sub
Private Sub UserForm_Initialize()
' Limitation des
' Initialisation des couleurs de la fenêtre Données Pilote (Echéances...)
With DonnéesPilote
.Caption = Range('C1').Value
.TextBox1.BackColor = Range('A6').Interior.Color
.TextBox1.MaxLength = 10
End With
End Sub
Private Sub TextBox1_Change()
' Mettre le fond blanc pour que la couleur ne soit plus valable : une MAJ s'impose
TextBox1.BackColor = 16777215
End Sub
Private Sub TextBox1_AfterUpdate()
' Mise à jour de la couleur dans la feuille ainsi que dans le textbox
' dès que le focus quitte le textbox
' C'est la seule façon de faire que j'ai trouvée qui fonctionne
' mais ça ne vérifie pas encore complètement le format de la saisie
Call Couleurs.InitPiloteCouleur(DonnéesPilote.Caption)
TextBox1.BackColor = Range('A6').Interior.Color
End Sub

inch: Bon, en gros, je gère une équipe de personnes et j'ai dans une userform 9 textboxes qui affichent des dates. Initialize donne le nombre de caractères et la couleur de fond déjà attirbuée.
Si je saisis une nouvelle date, je ne peux mettre que des chiffres et / (fonction keypress et surtout autorisefrappe bien connue sur ce forum)
puis, qd le focus quitte la textbox, afterupdate relance la fonction qui code les couleurs, avec un case... comme vous avez fait, sur la feuille de calcul et je reporte la couleur dans la texbox.
J'espère que ça pourra vous aider ne serait-ce qu'un peu. Si je suis hors sujet, je suis désolé de vous avoir pris votre temps.
Bon courage et bonne journée :whistle: