Afficher une couleur tout les 6 ans

Bonour,

Je voudrais mettre en place un code couleur assez complexe

Je voudrais adapter ceci dans un userfform

code couleur

Pour la mise en service d'un nouvel outil nous collons une étiquette de la couleur correspondante a l année de ce tableau

le marron est la couleur attribué tout les 6 ans depuis 2016 le bleu tout les 6 ans depuis 2017....

cet année nous sommes bleu

Idéalement le code doit calculer depuis 2016 et au delà des 10 ans a venir

Dans mon userform

la textbox 2 affiche la date du jour - Est il possible de colorer le fond de cette textbox de la couleur correspondante a l année en cour (bleu)

la textbox 3 affiche la date de mise en service de l objet (2016) - est il possible de colorer en marron cette textbox ?

Donc en 2024 l'userform affichera marron en textbox3 et jaune en tetbox2

Je n'ai pas de fichier a vous passer désolé

Merci pour votre aide

Bonjour Anarium,

Faire la soustraction de l'année du textbox avec 2010. Puis le modulo par 6 du résultat obtenu.

Exemple: 2016 - 2010 = 6. Le modulo de 6 est 0 puisque si l'on divisé par 6, il n'y a pas de reliquat.

Pour un tableau de couleur débutant en A2 il suffit de cibler la cellule de la colonne A puis (2 + 0) soit la case A2. Puis de récupérer sa couleur.

Réalise un mini fichier avec un Usf comportant deux textbox et une feuille avec le tableau de couleurs. Puis poste le.

Merci

Voila un exemple créé

4a-adapter.xlsm (237.35 Ko)

A nouveau,

En retour le fichier modifié pour coloriser les textbox

Voir la macro Colori

5a-adaptermodif.xlsm (231.36 Ko)

Merci beaucoup je test toutca

C'est parfait merci

Est il possible d adapter votre code a celui ci uniquement pour la textbox3 ?

Private Sub UserForm_Initialize() 'prérempli les textbox DATE ET UTILISATEUR a l'ouverture

TextBox3.Value = DateValue(Date) 'date du jour

TextBox4.Value = DateAdd("Y", 365, CDate(Me.TextBox3.Text)) 'Date de validité date textbox3 +12 mois  ********pk Y et pas D ?******

Me.TextBox2.Value = ActiveWorkbook.Sheets("ACCUEIL").Range("Vérificateur").Text 'nom de l utilisateur cellule vérificateur sur "acceuil"

TextBox13.Value = Right(TextBox3.Value, 4) 'Récupère l 'année pour afficher la couleur rizlan *** a suivre

CheckBox1.Value = False 'décoche la checkbox

'vide les textbox pour chargement nouveau matricule

  TextBox12.Value = ""

  TextBox5.Value = ""

  TextBox6.Value = ""

  TextBox7.Value = ""

  TextBox8.Value = ""

  TextBox9.Value = ""

  TextBox10.Value = ""

  TextBox11.Value = ""

If CheckBox1.Value = True Then   'Si coché ...

        Me.CommandButton2.Enabled = True

                               OK = False

    Else

        Me.CommandButton2.Enabled = False

                               OK = True

    End If

  End Sub

pour que lors de l initialisation juste la date du jour de l userform s affiche avec la bonne couleur ?

Bonjour,

Pour cela, il faut connaître l'index de ce contrôle. C'est à dire son rang d'insertion dans le formulaire. Dans l'exemple posté je fais référence à cet index pour cibler le bon contrôle.

Ensuite il suffit de faire appel à la macro Colori pour teinter les Textbox.

Danns ton dernier exemple insère le Call Colori après la ligne du textbox4

j'ai bien essayé de l'insérer de plusieurs façons mais j'ai toujours une erreur d'exécution 13 incompatibilité de type

A nouveau,

Cela t'indique incompatibilité de type car il faut convertir l'année en type "integer" et non le laisser en type date. Puisque la macro Colori réalise la soustraction entre l'année convertie et le nombre 2010.

On ne peut faire la différence entre une date et un nombre.

Je ne peux changer la date elle fait partie de la colonne vertébrale de mon fichier pour tout les userform

Suite,

Voici la macro d'initialisation par rapport au fichier posté.

Private Sub Userform_Initialize()
TextBox1.Value = Sheets("Feuil1").Range("A6").Text 'nom de l'objet
TextBox2.Value = DateValue(Date) 'date du jour
TextBox3.Value = DateAdd("Y", 365, CDate(Me.TextBox2.Text))
'Me.TextBox3.Value = Sheets("Feuil1").Range("B6").Text 'nom de l'objet
Call Colori
End Sub

Et la macro Colori

Private Sub Colori()
'Marron = 16512 ,Bleu = 16711680, Jaune = 65535, Rouge = 255, Noir = 0, Vert = 32768
'Boucle sur les 2 contrôles de date. Controls(C).Value
For C = 1 To 2
If C = 1 Then An = Year(TextBox2.Value) Else An = CInt(Right(TextBox3, 4))
'Position = 1 + Reliquat par 6
Pos = 1 + (An - 2010) Mod 6
'Sélection de la couleur selon la position
Controls(C).BackColor = Choose(Pos, 16512, 16711680, 65535, 255, 0, 32768)
Next C
End Sub

Tu dois cibler un ou deux mauvais contrôles. Si tu as le message d'erreur indiqué.

Vérifie les index de tes contrôles Date. Par la propriété TabIndex de ces contrôles.

Pour le textbox2 sn index est 1 et pour le textbox3 c'est l'index 2 dans le fichier posté

image

Regarde pour tes texbox3 et textbox4. Et modifie la macro en conséquence.

Suite,

Et le résultat sur l'Userform suite aux dernières modifications.

image

c'est parfait merci

Rechercher des sujets similaires à "afficher couleur tout ans"