Condition textbox
Bonjour à tous, je travail sur un fichier assez lourd avec énormément de macro.
Le seul point qui me pose problème étant que je souhaite mettre une condition à mon code.
J'ai plusieurs combobox qui doivent être remplie et chaque combobox a une textbox qui lui est associé.
il faudrait que je puisse dans mon code imposer:
si la combobox est pleine, la textbox aussi, sinon message d'erreur et le transfert ne se fait pas.
Quelqu'un pourrait il m'aider à écrire ce code ?
Ci joint un bout de code :
.Range("D" & Ligne) = Me.TextBox8
End If
Set Cel = .Columns("E").Find(What:=Me.ComboBox6, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("D" & Ligne) = Me.TextBox8
End If
If TextBox1.Value = "" Then
MsgBox "Veuillez remplir le champ"
TextBox1.SetFocus
End If
If TextBox2.Value = "" Then
MsgBox "Veuillez remplir le champ"
TextBox2.SetFocus
End If
If TextBox3.Value = "" Then
MsgBox "Veuillez remplir le champ"
TextBox3.SetFocus
End If
If TextBox4.Value = "" Then
MsgBox "Veuillez remplir le champ"
TextBox4.SetFocus
End If
If TextBox5.Value = "" Then
MsgBox "Veuillez remplir le champ"
TextBox5.SetFocus
End If
If TextBox6.Value = "" Then
MsgBox "Veuillez remplir le champ"
TextBox6.SetFocus
End If
With Sheets("Feuil1")
Set Cel = .Columns("E").Find(What:=Me.ComboBox1, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("Q" & Ligne) = Me.TextBox1.Value
End If
Set Cel = .Columns("E").Find(What:=Me.ComboBox2, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("Q" & Ligne) = Me.TextBox2.Value
End If
Set Cel = .Columns("E").Find(What:=Me.ComboBox3, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("Q" & Ligne) = Me.TextBox3.Value
End If
Set Cel = .Columns("E").Find(What:=Me.ComboBox4, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("Q" & Ligne) = Me.TextBox4.Value
End If
Set Cel = .Columns("E").Find(What:=Me.ComboBox5, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("Q" & Ligne) = Me.TextBox5.Value
End If
Set Cel = .Columns("E").Find(What:=Me.ComboBox6, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("Q" & Ligne) = Me.TextBox6.Value
End If
Unload Me
UserForm1.Show vbModeless
End With
End With
End SubBonjour,
après 54 messages, tu ne sais pas mettre ton code entre balises ?
après 54 messages, tu ne sais pas déposer un exemple proche niveau structure ?
P.
je me suis dis la même chose. Si tu peux me montrer, j'y manquerais pas.
5e icone en partant du "" de l'éditeur de texte
Et voilà. C'est vrai que c'est plus jolie.
Bonjour xorsankukai,
tout dabord, merci de ta réponse. A quoi correspondent les <> ? car dès que je les ai mise avec la formile, ma combobox s'est retrouvé vide.
Re,
<> signifie "différent de " : différent de vide (donc remplie)
If ComboBox1 <> "" And TextBox1 = "" Then 'si combobox1 différent de vide et textbox1 vide alors
MsgBox "Saisie incomplète, veuillez renseigner le champ"
Exit Sub
End If
If ComboBox1 = "" And TextBox1 <> "" Then 'si combobox1 vide et textbox1 différent de vide alors
MsgBox "Saisie incomplète, veuillez renseigner le champ"
Exit Sub
End If
If ComboBox1 = "" And TextBox1 = "" Then 'si combobox1 et textbox1 vides alors
MsgBox "Saisie incomplète, veuillez renseigner les champs"
Exit Sub
End IfSa a marché sans vider le combobox, cependant sa bloque le transfert pour la textbox mais pas la combo
il y a une ligne à ajouter j'imagine ?
Tu as écris quoi comme code ?
If ComboBox1 <> "" And TextBox1 = "" Then 'si combobox1 différent de vide et textbox1 vide alors
MsgBox "Saisie incomplète, veuillez renseigner le champ"
Exit Sub
End IfSi la combobox est remplie mais que la textbox est vide, alors on affiche un message (msgbox) et on quitte la procédure (exit sub), sinon, on écrit.
En faite ça marche pour le textbox sa met le message d'erreur pour obliger à renseigner une quantité sauf que ce qui se trouve dans la textbox8 est transféré quand même (le contenu dépend des combobox).
Genre tu as une palette qui va s'appeler 1 (contenu dans la textbox 8) et dans cette palette se trouve 6 pièces (nom des pièces dans les combobox)
et chaque combobox à une textbox pour noter le poids par exemple de chaque pièces.
J'ai besoin que si la pièce est nommé dans combobox et que l'on oublie de mettre un poids dans textbox, l'on puisse pas lui accorder un numéro de palette ou emplacement.
Il faut obligatoirement avoir les deux.
Avec ce code, si par exemple, je décide de fermer mon userform, le numéro de palette va se mettre en face de chaque pièce malgré tout et dans le poids, je n'ai rien. Merci de ton aide.
Voici mon code
Private Sub CommandButton1_Click()
If TextBox8.Value = "" Then
MsgBox "Texte de remplacement de numéro de palette définitif est vide !"
TextBox8.SetFocus
Else
End If
With Sheets("Feuil1")
Set Cel = .Columns("E").Find(What:=Me.ComboBox1, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
If MsgBox("Voulez-vous modifier les informations ?", _
vbQuestion + vbYesNo, "Modification") <> vbYes Then Exit Sub
.Range("D" & Ligne) = Me.TextBox8
End If
Set Cel = .Columns("E").Find(What:=Me.ComboBox2, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("D" & Ligne) = Me.TextBox8
End If
Set Cel = .Columns("E").Find(What:=Me.ComboBox3, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("D" & Ligne) = Me.TextBox8
End If
Set Cel = .Columns("E").Find(What:=Me.ComboBox4, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("D" & Ligne) = Me.TextBox8
End If
Set Cel = .Columns("E").Find(What:=Me.ComboBox5, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("D" & Ligne) = Me.TextBox8
End If
Set Cel = .Columns("E").Find(What:=Me.ComboBox6, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("D" & Ligne) = Me.TextBox8
End If
If ComboBox6 = Me.ComboBox6 And TextBox6 = "" Then
MsgBox "veuillez renseigner la longueur"
End If
If ComboBox1 <> "" And TextBox1 = "" Then 'si combobox1 différent de vide et textbox1 vide alors
MsgBox "Saisie incomplète, veuillez renseigner le champ"
Exit Sub
End If
If ComboBox2 <> "" And TextBox2 = "" Then
MsgBox "Saisie incomplète, veuillez renseigner le champ"
Exit Sub
End If
If ComboBox3 <> "" And TextBox3 = "" Then
MsgBox "Saisie incomplète, veuillez renseigner le champ"
Exit Sub
End If
If ComboBox4 <> "" And TextBox4 = "" Then
MsgBox "Saisie incomplète, veuillez renseigner le champ"
Exit Sub
End If
If ComboBox5 <> "" And TextBox5 = "" Then
MsgBox "Saisie incomplète, veuillez renseigner le champ"
Exit Sub
End If
If ComboBox6 <> "" And TextBox6 = "" Then
MsgBox "Saisie incomplète, veuillez renseigner le champ"
Exit Sub
End If
With Sheets("Feuil1")
Set Cel = .Columns("E").Find(What:=Me.ComboBox1, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("Q" & Ligne) = Me.TextBox1.Value
End If
Set Cel = .Columns("E").Find(What:=Me.ComboBox2, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("Q" & Ligne) = Me.TextBox2.Value
End If
Set Cel = .Columns("E").Find(What:=Me.ComboBox3, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("Q" & Ligne) = Me.TextBox3.Value
End If
Set Cel = .Columns("E").Find(What:=Me.ComboBox4, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("Q" & Ligne) = Me.TextBox4.Value
End If
Set Cel = .Columns("E").Find(What:=Me.ComboBox5, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("Q" & Ligne) = Me.TextBox5.Value
End If
Set Cel = .Columns("E").Find(What:=Me.ComboBox6, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("Q" & Ligne) = Me.TextBox6.Value
End If
Unload Me
UserForm1.Show vbModeless
End With
End With
End SubBonjour,
sauf que ce qui se trouve dans la textbox8 est transféré quand même
Tu as oublié
Exit subIf TextBox8.Value = "" Then
MsgBox "Texte de remplacement de numéro de palette définitif est vide !"
Exit sub
TextBox8.SetFocus
Else
End IfCordialement,
Bonjour xorsankukai,
je viens de tester, rien à changer.
J'ai l'impression que je dois rajouter quelque chose au niveau des codes des combobox mais j'ai peur de tout flinguer.
Transfert sur feuil = combobox+textbox+texbox8.
Il y a déjà un code pour si texbox 8 est vide.
Il y en a un pour si combobox est plein et textbox est vide mais je suppose qu'il doit manquer quelquechose.
Bingo
With Sheets("Feuil1")
Set Cel = .Columns("E").Find(What:=Me.ComboBox1, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
If ComboBox1 <> "" And TextBox1 = "" Then 'si combobox1 différent de vide et textbox1 vide alors
MsgBox "Saisie incomplète, veuillez renseigner le champ"
Exit Sub
End IfJ'ai juste recopié ces lignes qui étaient près de la textbox pour les mettre vers la combobox et cela a l'air de fonctionner.