Remplir textbox

Bonjour,
afin de ne laisser aucun textbox vide j utilise :

Private Function TestText(Obj As Object, Txt As String) As Boolean
TestText = True
If Obj.Text = vbNullString Then
Call MsgBox("Vous devez entrer " & Txt, vbExclamation, "Impératif !")
Obj.SetFocus
TestText = False
End If
End Function

et dans le bouton valider :

Private Sub BTN_Valider_Click()
Dim objControl As Control
Dim i As Long

'On teste la saisie de la date...
If Not TestText(TXT_Date, "une date") Then Exit Sub

'On teste la saisie de la pieceN...
If Not TestText(TXT_PieceN°, "un numéro de pièce") Then Exit Sub

et je voudrai avoir le meme message pour ne pas oublier de selectionner 1 bouton radio sur 4 possible

Merci
Configuration: Windows XP
Internet Explorer 6.0

20 réponses

  • Votes
  • Date
  • Date décroissante
  1. Re,

    Dans le UserForm_Iniatialize() ou Activate() mets tous les boutons ratio BT_ratio1.Value = False etc ....
    Sur : Private Sub BTN_Valider_Click() fais un test :
    If (BT_ratio1.Value = False) Or (Bt_ratio2.Value = False) Or _
             (Bt_ratio3.Value = False) Or (Bt_ratio3.Value = False)  Then
       MsgBox "blablabla",VbExclamation,"Message Erreur"
       Exit Sub
    End If


    ;o)

    polux
    1. Re,
      j ai mis

      Private Sub userform_initialize() je dois renomer userform ?
      BTN_Cheque1.Value = False
      BTN_Prelevement2.Value = False
      BTN_Virement3.Value = False
      BTN_Especes4.Value = False
      End Sub

      et dans BTN_valider

      'On teste la saisie de la nature de l operation
      If (BTN_Cheque1.Value = False) Or (BTN_Prelevement2.Value = False) Or _
      (BTN_Virement3.Value = False) Or (BTN_Especes4.Value = False) Then
      MsgBox "blablabla", vbExclamation, "Message Erreur"
      Exit Sub
      End If
      j ai message erreur de compilation a l ouverture du formulaire sur : BTN_Cheque1

      merci
      1. re, j ai toujours le meme message,
        j ai bien remplacé les noms des boutons ?
        dois je enlever le End If sachant que j ai d autres conditions derriere dans le bouton valider ?
        merci
        1. Non il ne faut pas enlever le End If ... il faut que tu remplaces UserForm par le nom de ton formulaire !!!
          1. re ok, j avais deja essayé de nommer mon formulaire mais j ai quand meme le message d erreur de compilationsur : le bouton valider BTN_Cheque1

            Private Sub FRM_Formulaire_de_saisies_initialize()
            BTN_Cheque1.Value = False
            BTN_Prelevement2.Value = False
            BTN_Virement3.Value = False
            BTN_Especes4.Value = False
            End Sub

            bouton valider :

            'On teste la saisie de la nature de l operation
            If (BTN_Cheque1.Value = False) And (BTN_Prelevement2.Value = False) And _
            (BTN_Virement3.Value = False) And (BTN_Especes4.Value = False) Then
            MsgBox "nature de l opération", vbExclamation, "Message Erreur"
            Exit Sub
            End If

            dois je mettre ce test avant les autres ? sachant qu il y en a 3 avant et 5 derriere

            merci
            1. non, peu importe ou se trouve le test ... je ne comprends pas, ça marche parfaitement chez moi ... j'aimerai savoir où se situe cette procédure : Private Sub FRM_Formulaire_de_saisies_initialize() et ou se situe celle-ci : Private Sub BTN_Valider_Click()
              1. Bonsoir,
                j avais mis : Private Sub FRM_Formulaire_de_saisies_initialize() en debut de userform
                et : Private Sub BTN_Valider_Click() en fin
                suite a ta question, j ai pensé que la position pouvait avoir une importance et j ai donc hierarchisé l ensemble en suivant
                l ordre de remplissage logique de mon formulaire, mais j ai toujours le meme message d erreur de compilation sur :

                'On teste la saisie de la nature de l operation
                If (BTN_Cheque1.Value = False) And (BTN_Prelevement2.Value = False) And _
                (BTN_Virement3.Value = False) And (BTN_Especes4.Value = False) Then
                MsgBox "nature de l opération", vbExclamation, "Message Erreur"
                Exit Sub
                End If

                j ai egalement suivi la hierarchie dans le BTN_Valider
                Je n ose pas te mettre l integralite du code afin de ne pas encombrer le forum
                Merci
                1. bonjour,

                  tu n'aurais pas aussi un Private Sub FRM_Formulaire_de_saisies_Activate() sur ton userform ? ce qui m'étonne c'est qu'il y ai un "i" minuscule à initailize .... est-ce une erreur de frappe ?
                  1. je crois que j'ai compris le problème.

                    C'est dans UserForm_Activate() que tu dois mettre le code :
                    BTN_Cheque1.Value = False
                    BTN_Prelevement2.Value = False
                    BTN_Virement3.Value = False
                    BTN_Especes4.Value = False
                    1. Bonjour, j ai effectivement un private su activate sur :

                      Private Sub userform_activate() 'plein écran
                      With Me
                      .StartUpPosition = 3
                      .Width = Application.Width
                      .Height = Application.Height
                      .Left = 0
                      .Top = 0
                      End With
                      Module1.InitComboBox
                      End Sub ce code est le premier de mon userform pour activer le mode plein ecran

                      j avais egalement "oublié" de mettre une majuscule a Initialize ( mais pas de changement), j ai donc remplacé Initialize par Activate :

                      Private Sub FRM_Formulaire_de_saisies_Activate() 'False sur bouton option
                      BTN_Cheque1.Value = False
                      BTN_Prelevement2.Value = False
                      BTN_Virement3.Value = False
                      BTN_Especes4.Value = False
                      End Sub

                      mais ai toujours le meme message " erreur de compilation, variable non definie" sur le BTN_Valider

                      Private Sub BTN_Valider_Click()
                      Dim objControl As Control
                      Dim i As Long

                      'On teste la saisie de la date...
                      If Not TestText(TXT_Date, "une date") Then Exit Sub

                      'On teste la saisie de la pieceN...
                      If Not TestText(TXT_PieceN°, "un numéro de pièce") Then Exit Sub

                      'On teste la saisie de l'editeur...
                      If Not TestText(ComboBox_Editeur, "un éditeur") Then Exit Sub

                      '//Combobox_Editeur
                      '//
                      i = 4 'première ligne
                      While Worksheets("Licences").Range("W" & i).Value <> ""
                      i = i + 1 'la cellule n'est pas vide on passe à la suivante
                      Wend
                      ' On insert la saisie dans la première ligne vide
                      Worksheets("Licences").Range("W" & i + 0).Value = ComboBox_Editeur.Text
                      '//

                      'On teste la saisie de la nature de l operation
                      If (BTN_Cheque1.Value = False) And (BTN_Prelevement2.Value = False) And _
                      (BTN_Virement3.Value = False) And (BTN_Especes4.Value = False) Then
                      MsgBox "nature de l opération", vbExclamation, "Message Erreur"
                      Exit Sub
                      End If
                      etc

                      merci a toi
                      1. Peut importe l'ordre des procédures ou des fonctions dans le module, ça n'a aucune influence pour l'exécution du code. Seul dans les fonctions et procédures l'ordre est important.

                        Il faut faire ça :
                        Private Sub userform_activate() 'plein écran 
                        With Me 
                        .StartUpPosition = 3 
                        .Width = Application.Width 
                        .Height = Application.Height 
                        .Left = 0 
                        .Top = 0
                        .BTN_Cheque1.Value = False 
                        .BTN_Prelevement2.Value = False 
                        .BTN_Virement3.Value = False 
                        .BTN_Especes4.Value = False 
                        End With 
                        Module1.InitComboBox 
                        End Sub

                        et supprimer complètement Private Sub FRM_Formulaire_de_saisies_Activate() qui ne sert strictement à rien

                        Dans une fonction ou une procédure on place toujours les tests en début, avant d'exécuter le reste du code de la fonction ou de la procédure.
                        ;o)

                        polux
                        1. re,
                          j avais toujours le meme probleme, j ai donc supprimé les 1 , 2 , 3 et 4 des boutons et la ça fonctionne deja mieux.

                          tu me dis : Peut importe l'ordre des procédures ou des fonctions dans le module, ça n'a aucune influence pour l'exécution du code. Seul dans les fonctions et procédures l'ordre est important
                          mais la j ai mis les codes dans mon userform ...

                          j ai bien le msgbox pour me dire de remplir la nature de l operation, mais pour remplir la condition correspondante ( cheqque, prelevement, virement ou especes ) en fontion de la selection du bouton, je dois refaire la meme procedure pour obtenir cela ? et quand je valide mon formulaire tout les champs se vident bien sauf ceux de la frame et des textbox correspondant

                          merci
                          1. j ai essaye de mettre InitnatureBTN a la fin du bouton valider suite au module 1 mais ce n est pas ça

                            For Each objControl In Controls 'FRM_Formulaire_de_saisies.Controls
                            If TypeOf objControl Is msforms.TextBox Then
                            objControl.Text = ""
                            End If
                            Next
                            Module1.InitComboBox
                            Module2.InitnatureBTN

                            End Sub
                            Merci
                            1. non

                              Option Explicit

                              Public nature As Integer

                              Public Sub natureBTN()

                              With FRM_Formulaire_de_saisies ' gris = &H80000011& blanc = &H80000005&
                              Select Case nature

                              etc
                              1. Je n'arrive plus à suivre là ... envoie moi ton fichier, ça sera mieux