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 :

Vérification champs pleins dans les Box d'un Frame dans une Userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Par défaut Vérification champs pleins dans les Box d'un Frame dans une Userform
    Bonjour à tous, ça fait un bail...


    J'ai un UserForm nommé Production, dans lequel un frame avec tout plein de textBox et de comboBox...
    L'idée est de n'autoriser l'enregistrement des données sur une feuille excel que sous certaines conditions..dont "tout les champs sont pleins.
    Pour cela j'ai créé une macro pour vérifier que tous les champs d'un formulaire sont pleins, mais biensûr elle ne marche pas...normalement je déclare mes variables à l'extérieur de ma macro! mais voici l'essentiel:

    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
     
    Private Sub verif_formulaire()
    Dim obj As Control
    Dim plein As String
    plein = "Oui"
     
    '   Vérifier que tous les champs du formulaire soient bien remplis
    For Each obj In Production.Controls
        If Production.obj.Visible = True Then
            If TypeName(obj) = "TextBox" Or TypeName(obj) = "ComboBox" Then
                If Production.obj.Value = "" Then
                    plein = "Non"
                    Exit For
                End If
            End If
        End If
    Next
     
    End Sub
    Sur enregistrer_click j'ai ajouté une ligne call verif_formulaire...
    et j'obtiens le bug method or data member not found en me surlignat obj comme mis en evidence sur le code.

    Quelqu'un aurait il une idée sur ce qui cloche??

  2. #2
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    J'ai l'impression que Production.obj.Visible dans la boucle fait double emploi. Tu boucles sur tous les controls de ta form, donc obj fait forcément partie de Productios, inutile de le repréciser.
    De même pour Production.obj.value.

    Ce code devrait fonctionner :

    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
    Private Sub verif_formulaire()
    Dim obj As Control
    Dim plein As String
    plein = "Oui"
     
    '   Vérifier que tous les champs du formulaire soient bien remplis
    For Each obj In Production.Controls
        If obj.Visible = True Then
            If TypeName(obj) = "TextBox" Or TypeName(obj) = "ComboBox" Then
                If obj.Value = "" Then
                    plein = "Non"
                    Exit For
                End If
            End If
        End If
    Next
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Par défaut
    Effectivement je venais de m'en rendre compte c'était bien cela le problème.
    Par contre, par précaution j'ai "inversé" mes boucles, histoire qu'au pire des cas ben ça ne me rajoute rien du tout à mes fichiers Database...
    voici le code final:
    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
    Private Sub verif_formulaire()
    Plein = "Non"
     
    '   Vérifier que tous les champs du formulaire soient bien remplis
    For Each obj In Production.Controls
        If obj.Visible = True Then
            If TypeName(obj) = "TextBox" Or TypeName(obj) = "ComboBox" Then
                If obj.Value <> "" Then
                    Plein = "Oui"
                    Else
                    Plein = "Non"
                    Exit For
                End If
            End If
        End If
    Next
     
    End Sub
    Merci pour le coup de pouce!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/07/2012, 09h58
  2. Réponses: 4
    Dernier message: 18/09/2011, 14h50
  3. Placement dans les box et gtktreeview
    Par pcboy dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 14/03/2011, 23h24
  4. Réponses: 15
    Dernier message: 15/04/2008, 14h25
  5. Alignements dans les box
    Par ToTo13 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 03/04/2007, 23h10

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