TextBox actif/inactif si

Bonjour à tous,

J'ai codé ainsi pour rendre inactif mon TextBox (Date_CP) si mon TextBox (Note_CP) est égal à "Non attribuable" ou quand la note de mon TextBox (Note_CP) est inférieur à 10 : quand la note est inférieure à 10, le TextBox (Date_CP) est bien rendu inactif mais pas quand mon TextBox (Note_CP) prend la valeur "Non attribuable". Pourquoi ?

Private Sub Note_CP_Change()
    If Me.Note_CP.Value = "Non attribuable" Then
    Me.Note_CP.ForeColor = RGB(255, 0, 0)
    Me.Date_CP.Enabled = False
    Me.Date_CP = ""
    Else
    Me.Note_CP.ForeColor = RGB(0, 0, 0)
    Me.Date_CP.Enabled = True
    End If

    If Me.Note_CP.Value < 10 Then
    Me.Note_CP.BackColor = RGB(255, 0, 0)
    Me.Note_CP.ForeColor = RGB(0, 0, 0)
    Me.Date_CP.Enabled = False
    Else
    Me.Note_CP.BackColor = RGB(217, 217, 217)
    Me.Date_CP.Enabled = True
    End If

End Sub

Question subsidiaire : qui aurait dans son grenier où qui saurait où je peux trouver des boutons de commandes personnalisés pour mettre dans mes formulaires du style bouton sortie (avec une petite porte), un bouton enregistrement (avec une petite disquette)... ?

Merci et bon après-midi.

Bonjour

Juste une idée (non testée)

Inverses les 2 If

    Private Sub Note_CP_Change()

        If Me.Note_CP.Value < 10 Then
        Me.Note_CP.BackColor = RGB(255, 0, 0)
        Me.Note_CP.ForeColor = RGB(0, 0, 0)
        Me.Date_CP.Enabled = False
        Else
        Me.Note_CP.BackColor = RGB(217, 217, 217)
        Me.Date_CP.Enabled = True
        End If

        If Me.Note_CP.Value = "Non attribuable" Then
        Me.Note_CP.ForeColor = RGB(255, 0, 0)
        Me.Date_CP.Enabled = False
        Me.Date_CP = ""
        Else
        Me.Note_CP.ForeColor = RGB(0, 0, 0)
        Me.Date_CP.Enabled = True
        End If
   End Sub

Sinon un fichier c'est bien

Bonjour Banzai,

Ta solution me renvoie à l'inverse : le TextBox est rendu inactif si Note_CP est égal à "Non attribuable" mais pas quand la moyenne est inférieure à 10.

Le fichier est le même que précédemment utilisé mais je te le renvoie.

Merci d'avance.

Bonjour

Mais non cela ne doit pas être le même fichier il n'y a pas cette procédure

Re,

Mauvais fichier posté : désolé.

La procédure se trouve à la fin du code.

Pour tester, tu peux juste saisir dans Note_CP soit une note ou Non attribuable en saisie libre : ce sera plus rapide que de modifier les valeurs des autres TextBox.

Merci encore.

Bonjour

J'ai inséré tant bien que mal le code dans l'autre fichier

A tester

Private Sub Note_CP_Change()
  If Me.Note_CP.Value = "Non attribuable" Then
    Me.Note_CP.ForeColor = RGB(255, 0, 0)
    Me.Date_CP.Enabled = False
    Me.Date_CP = ""
  ElseIf Me.Note_CP.Value < 10 Then
    Me.Note_CP.BackColor = RGB(255, 0, 0)
    Me.Note_CP.ForeColor = RGB(0, 0, 0)
    Me.Date_CP.Enabled = False
  Else
    If IsNumeric(Me.Note_CP) Then
      Me.Note_CP.BackColor = RGB(217, 217, 217)
    Else
        Me.Note_CP.ForeColor = RGB(0, 0, 0)
    End If
    Me.Date_CP.Enabled = True
  End If
End Sub

Merci Banzai pour la correction : cela fonctionne dans les 2 cas maintenant.

Bonne soirée et bon week-end prolongé.

@+.

Bonjour à tous, Banzai,

Prochaine et dernière étape de mon projet avant d'écrire les procédures pour retranscrire les modifications faites dans le formulaire dans ma feuille.

Je voudrais insérer dans ton dernier code, une procédure pour calculer la date d'attribution (si la note est supérieure ou égal à 10 bien sûr, c'est pour cela que je pense que le test doit être mis après :

If IsNumeric (Me.Note_CP) Then

Le test, je l'ai écris comme ceci (tu m’arrêteras si je me trompe) :

If Me.Fin_PPI < CDate(Date) Then 
Me.Date_CP.Value = Me.Fin_FSI.Value 'la date d'attribution est égale à Fin_FSI car Fin_PPI est inférieure à aujourd'hui
ElseIf Me.Fin_PPI > CDate(Date) Then
Me.Date_CP.Value = Me.Fin_PPI + 1 'la date d'attribution est égale à Fin_PPI  + 1 jour car Fin_PPI est supérieure à aujourd'hui
Else
Me.Date_CP = "" 'sinon on vide Date_CP et on donne le focus pour saisir une date manuellement
Me.Date_CP.SetFocus
End If

Voir les commentaires dans le code. Si besoin impératif, je posterai le fichier.

Merci et bon après-midi.

Bonjour

Pour essayer des macros le mieux c'est de fournir le fichier dans la dernière version en cours, cela évite de reprendre un ancien fichier, d'y mettre la macro qui à été faite et approuvée, et ensuite ajouter ta macro à l'emplacement adéquat (au risque de se tromper)

Sinon normalement les Cdate cela seraient pour les TexBox

If CDate(Me.Fin_PPI) < Date Then 

Ensuite si la date dans la TextBox est égale à la date du jour tu fais quoi ?

Si je me suis planté fournis ton fichier à jour

Re Banzai,

Je poste mon fichier : effectivement cela sera plus simple.

Pour ta question concernant si la date dans le TextBox est égale à aujourd'hui, je te répondrai que cela est très improbable mais on peut envisager de le rajouter si Fin_PPI est supérieure ou égale.

Code à insérer dans Private Sub Note_CP_Change. Afin de ne pas interférer, je n'y ai pas intégrer ma dernière demande.

Merci d'avance.

Bonjour

Je ne comprends pas tout ce que tu veux faire, car je n'imagine pas bien ton programme

Alors désolé si je répond à côté

A voir

Private Sub Note_CP_Change()
  If Me.Note_CP.Value = "Non attribuable" Then
    Me.Note_CP.ForeColor = RGB(255, 0, 0)
    Me.Date_CP.Enabled = False
    Me.Date_CP = ""
    Me.Libellé_CP = ""
  ElseIf Me.Note_CP.Value < 10 Then
    Me.Note_CP.BackColor = RGB(255, 0, 0)
    Me.Note_CP.ForeColor = RGB(0, 0, 0)
    Me.Date_CP.Enabled = False
    Me.Date_CP = ""
    Me.Libellé_CP = ""
  Else
    If IsNumeric(Me.Note_CP) Then
      If IsDate(Me.Fin_PPI) Then                  ' Une date
        If Me.Fin_PPI < CDate(Date) Then          ' Date Fin_PPI inférieure à aujourd'hui
          Me.Date_CP = Me.Fin_FSI                 ' Date d'attribution est égale à Fin_FSI
        Else                                      ' Date Fin_PPI supérieure ou égale à aujourd'hui
          Me.Date_CP = CDate(Me.Fin_PPI) + 1      ' Date d'attribution est égale à Fin_PPI  + 1 jour
        End If
      Else                                        ' Dans Fin_PPI pas de date
        Me.Date_CP = ""                           ' On vide Date_CP et on donne le focus pour saisir une date manuellement
        Me.Date_CP.SetFocus
      End If
      Me.Note_CP.BackColor = RGB(217, 217, 217)
      Me.Note_CP.ForeColor = RGB(0, 0, 0)
    Else
      Me.Note_CP.ForeColor = RGB(0, 0, 0)
    End If
    Me.Date_CP.Enabled = True
    Me.Libellé_CP = Me.Libellé_FSI
  End If
End Sub

Re,

Merci pour ton retour.

Même si tu n'as pas tout compris, tu m'as mis sur la bonne voie : encore quelques réglages à effectuer et cela devrait le faire.

Merci pour ta patience et ton partage.

Bon week-end.

Rechercher des sujets similaires à "textbox actif inactif"