IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Champs obligatoire VBA [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Points : 43
    Points
    43
    Par défaut Champs obligatoire VBA
    Bonjour à tous,

    Je voudrai savoir comment rendre obligatoire des champs d'un userform.
    C'est à dire, que lorque certains champs obligatoires ne seront pas rempli, il faut qu'une message box s'affiche et m'indique tous les champs qui ne sont pas remplis et qui doivent l'être!

    Est ce que quelqu'un aurai une petite idée?
    J'ai essayé avec ce code mais, rien ne se passe...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Valider_Click()
     
    If Champs <> "" Then
     Champs = Application.WorksheetFunction.Substitute(Champs, "*", " ")
     
     Msg = MsgBox(" Des champs obligatoires n'ont pas été renseignés :" & Chr(13) & Champs & Chr(13) & Chr(13) & "Veuiller les completer", vbOKOnly + vbCritical, "Champs manquant ou incorrects")
     Else
     Msg = MsgBox(" Anomalie enregistrée ", vbOKOnly + vbInformation, " Anomalie enregistrée ")
     Unload Saisie
     End If
     
    End Sub
    Merci pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution parmi d'autres avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub Valider_Click()
     
    Dim Completude As String
     
       Completude = "Les contrôles suivants doivent être renseignés pour continuer : "
     
       If TextBox1 = "" Then Completude = Completude & vbLf & "  -" & TextBox1.Name
       If TextBox2 = "" Then Completude = Completude & vbLf & "  -" & TextBox2.Name
     
       If Completude <> "Les contrôles suivants doivent être renseignés pour continuer : " Then
                MsgBox (Completude)
       Else
                Unload Saisie
       End If
     
    End Sub
    Il faut appeler les contrôles par leur nom dans le Userform et afficher leur nom par TextBoxY.Name, ComboboxZ.Name, etc...


    Cordialement.

  3. #3
    Membre éprouvé
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Points : 1 141
    Points
    1 141
    Par défaut
    Bonjour,

    Le plus simple reste de tester les champs obligatoires 1 par 1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub Valider_Click()
        If Champs1.Text = "" Then
            MsgBox "Le champs 1 est nécessaire à l'application et n'a pas été rempli.", vbOKOnly + vbInformation, "Champs manquants ou incorrects"
            Exit Sub
        End If
        If Champs2.Text = "" Then
            MsgBox "Le champs 2 est nécessaire à l'application et n'a pas été rempli.", vbOKOnly + vbInformation, "Champs manquants ou incorrects"
            Exit Sub
        End If
        '...
        If ChampsN.Text = "" Then
            MsgBox "Le champs N est nécessaire à l'application et n'a pas été rempli.", vbOKOnly + vbInformation, "Champs manquants ou incorrects"
            Exit Sub
        End If
        ' <Réaliser ici les actions en cas de données d'entrée correctes>
        Unload Saisie
    End Sub
    Si les champs sont nombreux, une autre possibilité consiste à utiliser le paramètre Tag des contrôles de votre UserForm.
    En définissant ce paramètre à une valeur donnée (par exemple "Obligatoire") pour tous les champs obligatoires, vous pourrez vérifier tous vos champs plus facilement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub Valider_Click()
        Dim Ctrl As Control, ChampsManquants As String
        For Each Ctrl In Me.Controls
            If Ctrl.Tag = "Obligatoire" Then
                If Ctrl.Text = "" Then
                    If ChampsManquants <> "" Then ChampsManquants = ChampsManquants & ", "
                    ChampsManquants = ChampsManquants & Ctrl.Name                
                End If
            End If
        Next Ctrl
        If ChampsManquants <> "" Then
            MsgBox "Les champs suivants sont nécessaires à l'application et n'ont pas été remplis:" & vbCrLf & ChampsManquants, vbOKOnly + vbInformation, "Champs manquants ou incorrects"
            Exit Sub
        End If
        ' <Réaliser ici les actions en cas de données d'entrée correctes>
        Unload Saisie
    End Sub
    Cdt

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Tous les contrôles dispos d’une propriété TAG.
    Il sufis de l’utiliser pour afficher ton message d’erreur.
    Si un contrôle à un TAG= "" c’est qu’il n’est pas obligatoire si non on test le texte.
    Attention au liste et check (value).
    Vérifier le type de contrôle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Private Sub Valider_Click()
     
    If ChampObligatoir = True Then Exit Sub
    End Sub
     
    Function ChampObligatoir() As Boolean
    Dim i As Long
     
    For i = 0 To Me.Controls.Count - 1
    Debug.Print TypeName(Me.Controls(i))
        If Trim("" & Me.Controls(i).Tag) <> "" Then
            Select Case TypeName(Me.Controls(i))
                Case "TextBox"
                    If Trim(Me.Controls(i).Text) = "" Then
                    MsgBox Me.Controls(i).Tag
                    Me.Controls(i).SetFocus
                    ChampObligatoir = True
                End If
                Case "ComboBox"
                    If Trim(Me.Controls(i).Text) = "" Then
                    MsgBox Me.Controls(i).Tag
                    Me.Controls(i).SetFocus
                    ChampObligatoir = True
                End If
                 Case "ListBox"
                    If Trim(Me.Controls(i).Text) = "" Then
                    MsgBox Me.Controls(i).Tag
                    Me.Controls(i).SetFocus
                    ChampObligatoir = True
                End If
                Case "CheckBox"
                    If Trim(Me.Controls(i).Value) = False Then
                    MsgBox Me.Controls(i).Tag
                    Me.Controls(i).SetFocus
                    ChampObligatoir = True
                End If
                 Case "OptionButton"
                    If Trim(Me.Controls(i).Value) = False Then
                    MsgBox Me.Controls(i).Tag
                    Me.Controls(i).SetFocus
                    ChampObligatoir = True
                End If
            End Select
        End If
        If ChampObligatoir = True Then Exit Function
    Next
    End Function
    Images attachées Images attachées  
    Dernière modification par Invité ; 19/06/2013 à 15h04.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Points : 43
    Points
    43
    Par défaut
    Merci à vous pour votre aide.

    Cela fonctionne!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/01/2012, 12h11
  2. Réponses: 5
    Dernier message: 31/03/2007, 22h36
  3. Champs obligatoires dans un formulaire
    Par glloq8 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/09/2005, 16h24
  4. Test si champs obligatoires remplis
    Par michaelbob dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/09/2005, 14h20
  5. Champs obligatoires
    Par JustMe dans le forum Bases de données
    Réponses: 15
    Dernier message: 18/11/2004, 20h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo