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 Sub

Bonjour,

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 preity, patrick1957,

Un petit exemple :

35exemple.xlsm (23.40 Ko)

Cordialement,

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 If

Sa 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 If

Si 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 Sub

Bonjour,

sauf que ce qui se trouve dans la textbox8 est transféré quand même

Tu as oublié

Exit sub
If TextBox8.Value = "" Then
MsgBox "Texte de remplacement de numéro de palette définitif est vide !"
Exit sub
TextBox8.SetFocus
Else
End If

Cordialement,

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 If

J'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.

Bonjour

voila une astuce pour les textbox obligatoir

A toi de voir

A+

Maurice

15exemple.xlsm (25.25 Ko)

Cool, merci

Rechercher des sujets similaires à "condition textbox"