Rajout d'un test sur un évènement Change

Bonjour à tous,

J'utilise déjà ce code pour mettre en couleur de police rouge mon TextBox s'il contient le mot Echec ou Ajourné.

Private Sub Note_AFFIM_Change()
    If Me.Note_AFFIM.Value = "Echec" Or Me.Note_AFFIM.Value = "Ajourné" Then
    Me.Note_AFFIM.ForeColor = RGB(255, 0, 0)
    Else
    Me.Note_AFFIM.ForeColor = RGB(0, 0, 0)
    End If

End Sub

Je voudrais rajouter à ce code un test supplémentaire : si je saisi une note dans ce Textbox du style 10.25 par exemple, il faut tester si mon deuxième Textbox (Note_FSI) est numérique et si cette condition est vraie faire la moyenne de Note_AFFIM et Note_FSI dans mon Textbox Note_CP sinon la valeur du Textbox Note_CP est égale à "Non attribuable".

J'ai pensé également à remplacer le point par la virgule avec cette ligne de code mais je ne sais pas comment la placer :

Me.Note_AFFIM.Text = Replace(Me.Note_AFFIM.Text, ".", ",")

Merci à ceux qui voudront bien m'aiguiller sur la bonne marche à suivre.

Bon week-end à tous.

@+.

Bonjour

Sans connaitre ton fichier

Testes

Private Sub Note_AFFIM_Change()
Dim Tot_AFFIM As Double, Tot_FSI As Double

  Tot_AFFIM = Val(Replace(Me.Note_AFFIM.Text, ".", ","))
  Tot_FSI = Val(Replace(Me.Note_FSI.Text, ".", ","))

  If Me.Note_AFFIM.Value = "Echec" Or Me.Note_AFFIM.Value = "Ajourné" Then
    Me.Note_AFFIM.ForeColor = RGB(255, 0, 0)
  ElseIf Tot_AFFIM <> 0 And Tot_FSI <> 0 Then
    Me.Note_CP = (Tot_AFFIM + Tot_FSI) / 2
  Else
    Me.Note_AFFIM.ForeColor = RGB(0, 0, 0)
  End If
End Sub
criscris11 a écrit :

J'ai pensé également à remplacer le point par la virgule avec cette ligne de code mais je ne sais pas comment la placer :

A mon avis inutile à faire

Sinon voir l'événement Exit

Salut Banzai,

Merci pour ta réponse. Je vais tester et en attendant, je te souhaite une bonne soirée.

@+.

Bonjour Banzai, le forum,

J'ai essayé ta proposition mais cela ne me donne pas l'effet escompté.

Soit, je n'ai pas su adapter ton code ou alors tu n'avais pas tous les éléments. Je postes mon fichier avec le formulaire qui doit recevoir le code sur l'évènement Change avec ce que je souhaite obtenir : si cela n'est pas assez clair, n'hésites-pas.

Merci d'avance et bonne journée.

26tests-vba.xlsm (67.06 Ko)

Bonjour

Inversion entre le . (point) et la , (virgule) dans le Replace

A tester

Bonsoir banzai, à tous,

Merci pour ton retour : le calcul se fait bien maintenant.

En attendant ta réponse éventuelle, j'ai procédé comme suit (code un peu plus long que le tien mais à priori fonctionnel) :

Private Sub Note_AFFIM_Change()
    If Me.Note_AFFIM.Value = "Echec" Or Me.Note_AFFIM.Value = "Ajourné" Then
    Me.Note_AFFIM.ForeColor = RGB(255, 0, 0)
    ElseIf Not IsNumeric(Me.Note_AFFIM) And IsNumeric(Me.Note_FSI) Then
    Me.Note_CP = "Non attribuable"
    Me.Note_CP.ForeColor = RGB(255, 0, 0)
    ElseIf IsNumeric(Me.Note_AFFIM) And Me.Note_FSI = "" Then
    Me.Note_CP = ""
    ElseIf IsNumeric(Me.Note_AFFIM) And IsNumeric(Me.Note_FSI) Then
    Me.Note_CP = (CDbl(Me.Note_AFFIM) + CDbl(Me.Note_FSI)) / 2
    Me.Note_CP.Value = Format(Me.Note_CP, "0.00")
    Else
    Me.Note_AFFIM.ForeColor = RGB(0, 0, 0)
    End If

End Sub

Private Sub Note_AFFIM_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 46 Then KeyAscii = 44
End Sub

Peux-tu me dire si tu vois quelque chose qui te paraît incorrect (je n'ai pas encore finalisé tous mes tests)

Merci encore et bonne soirée.

Bonjour

A première vue je ne vois pas d'erreur

Tout ce que je vois c'est beaucoup de tests, il faut s'y retrouver

Une macro supplémentaire

Mais c'est surtout toi qui va tester tout ça

Le principal c'est que tu obtiennes le bon résultat

Merci pour ton retour encore une fois.

Beaucoup de tests : oui, je dois envisager tous les ces de figures car c'est un USF de modification et donc une fois les changements effectués, ils vont aller impacter mes données présentes sur la feuille.

Une macro supplémentaire ? Tu veux parler de Private Sub Note_AFFIM_KeyPress ?

Je vais certainement voir pour adapter mes différentes conditions à ton code pour plus de clarté.

En attendant, je te souhaite une bonne soirée.

@+.

Rechercher des sujets similaires à "rajout test evenement change"