Control TEXTBOX
Bonjour,
Dans le code suivant, j'ai placé un controle au niveau de la TEXTBOX1 qui veut dire ceci :
Si le code que je saisie dans ma textbox1 contient les lettres "DRH" alors il me place systématiquement "OUWAGES" au niveau de la TEXTBOX4 lors de la validation et place ma saisie dans la LISTBOX.
Or, quand je valide, si le code que j'ai saisie dans ma TEXTBOX1 contient "DRH", il me convertit bien le code de la TEXBOX4 mais la validation ne se fait pas correctement car rien ne s'affiche dans ma LISTBOX.
Quelqu'un peut m'aider?
Merci.
Private Sub validation_Click()
Dim i As Integer
Dim k As Integer
Dim j As Integer
Dim p As Integer
Dim q As Integer
Dim cell As Integer
i = 1
j = ListBox1.ListCount
k = 1
ThisWorkbook.Activate
Worksheets("Prévisions").Select
For k = 1 To 5
Controls("TextBox" & k).Value = UCase(Controls("TextBox" & k).Value)
TextBox1 = UCase(TextBox1)
TextBox4 = UCase(TextBox4)
TextBox6 = UCase(TextBox5)
Next k
k = 1
For k = 1 To 5
If k = 1 Or k = 2 Or k = 3 Or k = 4 Or k = 5 Then
k = k + 1
Else:
If IsNull(Controls("TextBox" & k).Value) Or Controls("TextBox" & k) = "" Then
MsgBox "Veuillez remplir tous les champs obligatoires *.", vbCritical
Exit Sub
End If
End If
Next k
'Test sur le champ des comptes
With Sheets("Liste_comptes")
Set Cel = .Columns("B").Find(what:=Me.TextBox1, LookIn:=xlValues, lookat:=xlWhole)
If Cel Is Nothing Then
Set Cel = .Columns("A").Find(what:=Me.TextBox1, LookIn:=xlValues, lookat:=xlWhole)
If Not Cel Is Nothing Then
Me.TextBox1 = Cel.Offset(0, 1)
Else
MsgBox "Le compte est inconnu"
Exit Sub
End If
End If
End With
'Test sur le pavé numérique
If Not IsNumeric(Replace(TextBox2.Value, ".", ",")) Then
MsgBox "Veuillez saisir une valeur numérique", vbCritical
Exit Sub
End If
'Test sur la date de valeur de l'opération
If CDate(TextBox3) < Date + 1 Then
MsgBox "La date doit être supérieure de 24H à la date du jour", vbCritical
Exit Sub
End If
'Test pour le format de date
If TextBox3 <> Format(TextBox3, "dd/mm/yyyy") Then
MsgBox "Le format de date doit être JJ/MM/AAAA", vbCritical
Exit Sub
End If
'Test pour dimanche
If Weekday(TextBox3) = 1 Then
MsgBox "Impossible de saisir une prévision un dimanche", vbCritical
Exit Sub
End If
'Test pour samedi
If Weekday(TextBox3) = 7 Then
MsgBox "Impossible de saisir une prévision un samedi", vbCritical
Exit Sub
End If
'Test pour l'utilisation du code OUWAGES
If InStr(TextBox1.Value, "DRH") Then
TextBox4 = "OUWAGES"
Exit Sub
End If
'Test sur la présence d'une description ou pas
If Len(TextBox5) = 0 Then
MsgBox "Veuillez renseigner une description de l'opération", vbCritical
Exit Sub
End If
'Alimentation des champs
i = Range("A65536").End(xlUp).Row
Cells((i + 1), 1) = TextBox1
Cells((i + 1), 2) = TextBox2
Cells((i + 1), 3) = "EUR"
Cells((i + 1), 4) = TextBox3
Cells((i + 1), 5) = TextBox4
Cells((i + 1), 6) = ""
Cells((i + 1), 7) = Application.UserName & "/" & TextBox5
Cells((i + 1), 8) = "i"
Cells((i + 1), 9) = "forecasted"
Cells((i + 1), 10) = "PRLD"
Cells((i + 1), 11) = "0"
Cells((i + 1), 12) = TextBox3
Cells((i + 1), 13) = "1"
Cells((i + 1), 14) = "-1"
Cells((i + 1), 15) = TextBox3
Cells((i + 1), 16) = "operating"
Worksheets("Prévisions").Select
q = Range("A65536").End(xlUp).Row
For k = 1 To 5
Next k
Me.ListBox1.RowSource = "Prévisions!A3:T" & (q + 1)
For k = 1 To 5
Controls("textbox" & k).Text = ""
Application.DisplayAlerts = True
Next k
End SubBonjour,
Y a t-il quelqu'un pour me filer un coup de main sur ce point. Je bloque vraiement la dessus.
Merci.
Bonjour,
Si je comprends bien ton code, il faut passer tous tes tests avant que la saisie soit validée.
Après avoir contrôlé la présence de "DRH" dans la TextBox1, tu renseignes bien la TextBox4 mais tu ne mets pas ta liste à jour puisque tu finis ton contrôle par un Exit sub.
Par contre, si tu valides à nouveau, ça devrait renseigner la liste.
Il ne faut pas que tu aies peur de mettre un fichier exemple, on ne craint pas la facilité
A+
EDIT
Pour ton test, tu peux écrire simplement
'Test pour l'utilisation du code OUWAGES
If InStr(TextBox1.Value, "DRH") > 0 Then TextBox4 = "OUWAGES"Merci Frangy pour ta réponse. Mais lorsque je valide une deuxième fois, rien ne se passe.
J'essaye de retravailler le fichier, parce qu'il contient un certains nombre de données très confidentiels.
As-tu essayé en remplaçant
'Test pour l'utilisation du code OUWAGES
If InStr(TextBox1.Value, "DRH") Then
TextBox4 = "OUWAGES"
Exit Sub
End Ifpar
'Test pour l'utilisation du code OUWAGES
If InStr(TextBox1.Value, "DRH") > 0 Then TextBox4 = "OUWAGES"A+
J'ai fait plein de modification. Au mieux ça modifie le code en OUWAGES mais plus rien d'autre ne se passe.
tu es un génie Frangy.
J'ai enlever le Exit sub et ça marche.
Merci pour ton aide.