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 :

Validation des données d'un formulaire différée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juin 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 105
    Par défaut Validation des données d'un formulaire différée
    Bonjour à tous,

    dans le code ci dessous ( qu il faudra que je révise pour être simplifié ) lors de la validation des données par le bouton "Enregistrer", les données saisies dans le formulaire ne sont pas reportées dans le tableau Excel immédiatement, elles sont visiblement "stockées" ( où ? ) et reportées dans le tableau que lorsque l'on ferme le formulaire par le bouton "Quitter"
    je n'arrive pas modifier cette situation , je souhaiterais en fait que dès que l'opérateur click sur le bouton "enregistrer" les données du formulaire apparaissent dans le tableau Excel

    merci pour vos conseils et votre aide
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    Private Sub Cmd_Validation_Click()
    'Valider les données du formulaire
     
    Dim Ctrl As Control
    Dim r As Integer
    Dim Derligne As Integer
    Dim Rep As Integer
     
     'Coloration des Labels en rouge
         Label_Km.ForeColor = RGB(0, 0, 0)
         Label_Litres.ForeColor = RGB(0, 0, 0)
         Label_Montant.ForeColor = RGB(0, 0, 0)
         Label_Agence.ForeColor = RGB(0, 0, 0)
         Label_Model.ForeColor = RGB(0, 0, 0)
         Label_Carb.ForeColor = RGB(0, 0, 0)
         Label_Obj.ForeColor = RGB(0, 0, 0)
         Label_Immat.ForeColor = RGB(0, 0, 0)
         Label_Refact.ForeColor = RGB(0, 0, 0)
         Label_Remark.ForeColor = RGB(0, 0, 0)
     
         'Contrôles de contenu
         If TextBox4.Value = "" Then 'SI pas de "nom" ...
            Label_Km.ForeColor = RGB(255, 0, 0) 'Label "nom" en rouge
            MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
            Exit Sub
         ElseIf TextBox5.Value = "" Then
             Label_Litres.ForeColor = RGB(255, 0, 0)
            MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
            Exit Sub
         ElseIf TextBox6.Value = "" Then
            Label_Montant.ForeColor = RGB(255, 0, 0)
            MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
            Exit Sub
         ElseIf ComboBox3.Value = "" Then
            Label_Agence.ForeColor = RGB(255, 0, 0)
            MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
            Exit Sub
         ElseIf ComboBox4.Value = "" Then
             Label_Model.ForeColor = RGB(255, 0, 0)
            MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
            Exit Sub
        ElseIf ComboBox5.Value = "" Then
            Label_Immat.ForeColor = RGB(255, 0, 0)
            MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
            Exit Sub
        ElseIf ComboBox6.Value = "" Then
            Label_Carb.ForeColor = RGB(255, 0, 0)
            MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
            Exit Sub
        ElseIf ComboBox7.Value = "" Then
            Label_Obj.ForeColor = RGB(255, 0, 0)
            MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
            Exit Sub
        ElseIf (ComboBox7.Value = "TATA" Or ComboBox7.Value = "TOTO") Then
            If TextBox8 = "" Or TextBox9 = "" Then
                If TextBox8 = "" Then
                    Label_Remark.ForeColor = RGB(255, 0, 0)
                End If
                If TextBox9 = "" Then
                    Label_Refact.ForeColor = RGB(255, 0, 0)
                End If
                MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
                Exit Sub
            End If
        End If
     
            With Feuil1
                Range("B2") = ComboBox2.Text
                Derligne = .Range("A65536").End(xlUp).Row + 1
                For Each Ctrl In USF_Saisie.Controls
                    r = Val(Ctrl.Tag)
                    If r > 0 Then Cells(Derligne, r) = TrouveType(Ctrl)
                Next
            End With
     
            'Initialise le formulaire
            Unload Me
            USF_Saisie.Show
        'End If
     
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Par défaut
    Coucou,

    le probleme vien de ta variable Ctrl elle est vide ^^"

    tu initialise la variable mais tu dit pas se qu'elle contient

  3. #3
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juin 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 105
    Par défaut
    Salut Pasdechances

    tu vois c'est encore moi...
    Bizarre j ai le même code pour un autre formulaire et çà ne me fait pas sa

    tu pourrais m'éclairer sur le solution à apporter à cette anomalie stp
    merci d'avance

  4. #4
    Membre chevronné Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Par défaut
    utilise donc sa :
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    Private Sub Cmd_Validation_Click()
    'Valider les données du formulaire
     
    Dim Ctrl As Control
    Dim r As Integer
    Dim Derligne As Integer
    Dim Rep As Integer
     
     'Coloration des Labels en rouge
         Label_Km.ForeColor = RGB(0, 0, 0)
         Label_Litres.ForeColor = RGB(0, 0, 0)
         Label_Montant.ForeColor = RGB(0, 0, 0)
         Label_Agence.ForeColor = RGB(0, 0, 0)
         Label_Model.ForeColor = RGB(0, 0, 0)
         Label_Carb.ForeColor = RGB(0, 0, 0)
         Label_Obj.ForeColor = RGB(0, 0, 0)
         Label_Immat.ForeColor = RGB(0, 0, 0)
         Label_Refact.ForeColor = RGB(0, 0, 0)
         Label_Remark.ForeColor = RGB(0, 0, 0)
     
         'Contrôles de contenu
         If TextBox4.Value = "" Then 'SI pas de "nom" ...
            Label_Km.ForeColor = RGB(255, 0, 0) 'Label "nom" en rouge
            MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
            Exit Sub
         ElseIf TextBox5.Value = "" Then
             Label_Litres.ForeColor = RGB(255, 0, 0)
            MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
            Exit Sub
         ElseIf TextBox6.Value = "" Then
            Label_Montant.ForeColor = RGB(255, 0, 0)
            MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
            Exit Sub
         ElseIf ComboBox3.Value = "" Then
            Label_Agence.ForeColor = RGB(255, 0, 0)
            MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
            Exit Sub
         ElseIf ComboBox4.Value = "" Then
             Label_Model.ForeColor = RGB(255, 0, 0)
            MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
            Exit Sub
        ElseIf ComboBox5.Value = "" Then
            Label_Immat.ForeColor = RGB(255, 0, 0)
            MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
            Exit Sub
        ElseIf ComboBox6.Value = "" Then
            Label_Carb.ForeColor = RGB(255, 0, 0)
            MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
            Exit Sub
        ElseIf ComboBox7.Value = "" Then
            Label_Obj.ForeColor = RGB(255, 0, 0)
            MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
            Exit Sub
        ElseIf (ComboBox7.Value = "TATA" Or ComboBox7.Value = "TOTO") Then
            If TextBox8 = "" Or TextBox9 = "" Then
                If TextBox8 = "" Then
                    Label_Remark.ForeColor = RGB(255, 0, 0)
                End If
                If TextBox9 = "" Then
                    Label_Refact.ForeColor = RGB(255, 0, 0)
                End If
                MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
                Exit Sub
            End If
        End If
     
            With Feuil1
                Range("B2") = ComboBox2.Text
                Derligne = .Range("A65536").End(xlUp).Row + 1
                Cells(Derligne, 1) = USF_Saisie.TextBox1
                Cells(Derligne, 2) = USF_Saisie.ComboBox3
                Cells(Derligne, 3) = USF_Saisie.ComboBox4
                Cells(Derligne, 4) = USF_Saisie.ComboBox5
                Cells(Derligne, 5) = USF_Saisie.TextBox4
                Cells(Derligne, 6) = USF_Saisie.ComboBox6
                Cells(Derligne, 7) = USF_Saisie.TextBox5
                Cells(Derligne, 8) = USF_Saisie.TextBox6
                Cells(Derligne, 9) = USF_Saisie.ComboBox7
                Cells(Derligne, 10) = USF_Saisie.TextBox8
                Cells(Derligne, 11) = USF_Saisie.TextBox9
            End With
     
            'Initialise le formulaire
            Unload Me
            USF_Saisie.Show
        'End If
     
    End Sub
    c'est plus long mais sa résout ton probleme ^^.
    et la ou sa ne marche pas, c'est que dans ton autre fichier, tu devais avoir un remplissage de la variable ctrl.

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 174
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je suis partisan d'une certaine structure et donc de décomposer en petite procédure les différentes étapes d'une application.
    Ainsi je créerais une fonction booléenne pour vérifier si tous les TextBox sont remplis.
    Petit exemple rapide en partant de tes contrôle (contrôle partiel, c'est juste une piste)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Function CheckCtrl() As Boolean
     Dim flag As Boolean
     flag = Len(TextBox4) = 0: If flag Then CheckCtrl = True
     Label_Km.ForeColor = RGB(255 * Abs(flag), 0, 0)
     flag = Len(TextBox5) = 0: If flag Then CheckCtrl = True
     Label_Litres.ForeColor = RGB(255 * Abs(flag), 0, 0)
     flag = Len(TextBox6) = 0: If flag Then CheckCtrl = True
     Label_Montant.ForeColor = RGB(255 * Abs(flag), 0, 0)
    End Function
    Fonction que tu invoques depuis la procédure événementielle Cmd_Validation_Click
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     ' Vérifie encodage
     If CheckCtrl() Then
        MsgBox (" Données manquantes à compléter  !"), vbOK + vbExclamation, "SAISIE INCOMPLETE !"
        Exit Sub
     End If
    La lecture de cette contribution USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire t'aidera peut-être pour le futur
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juin 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 105
    Par défaut
    Bonjour Philippe

    effectivement mon code mérite d être largement simplifié et ton aide est très appréciable car le débutant que je suis n'arriverait pas à écrire cette fonction.
    Pour bien comprendre, je dois compléter cette fonction des autres textbox et combobox du formulaire
    et à la procédure de "validation et report" des données dans mon tableau excel, rajouter le bout de code complémentaire ?

    je vais faire cela tranquillement ce week end
    surtout qu'avec le lien que tu m'as donné j ai de quoi bosser.
    En tous cas félicitations pour le travail que tu as fais c'est super instructif et utile pour des débutants comme moi
    je crois que je vais passer un excellent we

    merci encore

    A PASDECHANCES merci aussi pour ton attention

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    @ Tournament :

    si je comprends, c'est dû au fait que j'initialise et je fais de nouveau afficher le formulaire ?
    Ce que je veux dire, c'est que le bouton écrit bien les valeurs sur la feuille, se ferme et s'affiche de nouveau. Donc il n'y a pas d'erreur.

    @ pasdechances :

    Non enfaite la variable ctrl affiche "nothing" donc quand on va boucler sur les control on a rien.
    la variable représente un contrôle du formulaire.

    Nom : Capture1.PNG
Affichages : 146
Taille : 7,5 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Ctrl In USF_Saisie.Controls
    = boucle sur les contrôles du userform. D'ailleurs, si Ctrl était vide, "Ctrl.Tag" provoquerait une erreur.

  8. #8
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juin 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 105
    Par défaut
    Merci Daniel pour ta contribution et de ton attention
    je vais plutôt travailler sur la simplification du code à l aide des outils que m a donné Philippe
    çà ne pourra que m'apprendre et me faire progresser

    merci encore

  9. #9
    Membre chevronné Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Par défaut
    Daniel.C,

    De mon coter, je devai avoir une erreur d'execution, car justement la variable controle ne s'activai pas ^^".
    C'est la raison pour la quelle j'en avais déduit que le probleme venait de la.

  10. #10
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Ca fonctionne ici. Ce qui se passe, c'est que la feuille se remplit et le userform est réaffiché.

  11. #11
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juin 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 105
    Par défaut
    Bonjour Daniel

    merci pour ta réponse,
    si je comprends, c'est dû au fait que j'initialise et je fais de nouveau afficher le formulaire ?

  12. #12
    Membre chevronné Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Par défaut
    Citation Envoyé par Tournament Voir le message
    Bonjour Daniel

    merci pour ta réponse,
    si je comprends, c'est dû au fait que j'initialise et je fais de nouveau afficher le formulaire ?
    Non enfaite la variable ctrl affiche "nothing" donc quand on va boucler sur les control on a rien.
    parcontre Daniel.c dit que sa marche sans soucis mais je ne sais donc pas pourquoi.

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

Discussions similaires

  1. [2.x] [Form] Validation des données dans un formulaire ?
    Par kolbek dans le forum Symfony
    Réponses: 4
    Dernier message: 11/09/2012, 12h45
  2. [1.x] Validation des données d'un formulaire créé 'à la main'
    Par thecanea dans le forum Symfony
    Réponses: 2
    Dernier message: 12/11/2009, 11h08
  3. Réponses: 5
    Dernier message: 01/10/2006, 13h48
  4. dbgrid AND validation des données
    Par samlerouge dans le forum Bases de données
    Réponses: 10
    Dernier message: 11/06/2004, 23h08
  5. [ JSP ] Réaffichage des données d'un formulaire apres un ret
    Par captainpouet dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 23/04/2004, 11h55

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