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 :

Controle données par boucle dans formulaire


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Chargé d'études statistiques
    Inscrit en
    Octobre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2014
    Messages : 63
    Points : 51
    Points
    51
    Par défaut Controle données par boucle dans formulaire
    Bonjour à tous,

    Je me permets de venir vers vous car je suis bloqué dans un contrôle massif de mes données dans un formulaire.
    Pour faire simple, j'ai construit une sorte de tableau dans mon formulaire avec de multiples zones de texte et je souhaite contrôler ces données.

    J'ai volontairement appelé mes zones de texte : A1,A2....B1,B2,...,C1,C2 pour avec des boucles contrôler ses zones de texte et éviter d'écrire 12202 fois la même procédure. Ci-dessous mon 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub bc_validation2_Click()
     
    Dim ZONETEXTE As String
     
    Application.ScreenUpdating = False ' Gain important de temps d'execution
    Worksheets("Parametres").Visible = False 'Afficher la feuille "parametre"
     
        'Partie 1 : Contrôler la validité des données
     
        For LETTRE = 65 To 66
            For NBRE = 1 To 16
     
    ZONETEXTE = Chr(LETTRE) & NBRE
     
            'Nom
       If Chr(LETTRE) & NBRE & ".Value" = "" Then
            Chr (LETTRE) & NBRE & ".Value" = 0
        If Not IsNumeric(Chr(LETTRE) & NBRE) Then
              MsgBox " Veuillez saisir uniquement des chiffres dans les zones de texte  "
            Chr (LETTRE) & NBRE.SetFocus
        End If
     
            Next NBRE
        Next LETTRE
     
    End Sub
    Il doit y avoir un problème sur la manière dont "j'appelle" mes zones de texte car cela ne fonctionne pas...
    Je suis preneur de vos bonnes idées et vos suggestions car je suis à court d'idée...

    D'avance je vous remercie.

    Bonne journée à vous,

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 263
    Points
    34 263
    Par défaut
    Salut,

    passe par la collection Controls de ton formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    With Me.Controls(Chr(LETTRE) & NBRE)
    If .Value = "" Then
            .Value = 0
        If Not IsNumeric(.Value) Then
              MsgBox " Veuillez saisir uniquement des chiffres dans les zones de texte  "
            .SetFocus
        End If
    End If
    End With
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre du Club
    Homme Profil pro
    Chargé d'études statistiques
    Inscrit en
    Octobre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2014
    Messages : 63
    Points : 51
    Points
    51
    Par défaut
    Bonjour jpcheck,

    Tout d'abord, un grand merci pour ta réponse rapide.

    Je viens d'essayer et ça ne fonctionne pas. J'ai un message d'erreur qui me dit l'argument est non valide.

    D’où viendrait mon problème?

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Sur quelle ligne survient l'erreur ?
    MPi²

  5. #5
    Membre du Club
    Homme Profil pro
    Chargé d'études statistiques
    Inscrit en
    Octobre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2014
    Messages : 63
    Points : 51
    Points
    51
    Par défaut
    Bonjour à tous,

    En cherchant pendant un certain temps sur les forums, j'ai trouvé une solution (qui marche ).

    Voici le code avec la modif effectuée, ça pourra éventuellement servir à des personnes qui seraient dans la même situation que moi.

    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
     
    Private Sub bc_validation2_Click()
     
    Dim ZONETEXTE As String
     
    Application.ScreenUpdating = False ' Gain important de temps d'execution
    Worksheets("Parametres").Visible = False 'Afficher la feuille "parametre"
     
        'Partie 1 : Controler la validité des données
     
        For LETTRE = 65 To 66
            For NBRE = 1 To 16
     
    ZONETEXTE = Chr(LETTRE) & NBRE
     
            'Nom
        If Me.Controls(Chr(LETTRE) & NBRE).Text = "" Then
            Me.Controls(Chr(LETTRE) & NBRE).Text = 0
     
        ElseIf Not IsNumeric(Me.Controls(Chr(LETTRE) & NBRE)) Then
             MsgBox " Veuillez saisir uniquement des chiffres dans les zones de texte  "
           Me.Controls(Chr(LETTRE) & NBRE).SetFocus
        End If
     
            Next NBRE
        Next LETTRE
     
    End Sub

  6. #6
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Une autre piste. Attention au point et à la virgule dans les TextBox :
    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
     
    Private Sub bc_validation2_Click()
     
        Dim Tbl(1 To 32) As String
        Dim I As Integer
        Dim J As Integer
        Dim K As Integer
     
        'utilise un tableau pour stocker les noms
        For I = 65 To 66
     
            For J = 1 To 16
     
                K = K + 1
                Tbl(K) = Chr(I) & J
     
        Next J, I
     
        'couleur du fond par défaut
        For I = 1 To UBound(Tbl): Me.Controls(Tbl(I)).BackColor = &H80000005: Next I
     
        For I = 1 To UBound(Tbl)
     
            With Me.Controls(Tbl(I))
     
                If Not IsNumeric(.Text) Then
     
                    'matérialise par une couleur rouge
                    .BackColor = &HFF&
                    MsgBox "Veuillez saisir uniquement des chiffres dans les zones de texte !"
                    .SetFocus
     
                    Exit Sub
     
                End If
     
            End With
     
        Next I
     
        MsgBox "Tout est OK !"
     
    End Sub

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

Discussions similaires

  1. remplacer espace par tiret dans formulaire
    Par referenceur-tv dans le forum Langage
    Réponses: 17
    Dernier message: 03/06/2008, 14h52
  2. Date par défaut dans formulaire
    Par papagei2 dans le forum IHM
    Réponses: 11
    Dernier message: 07/11/2007, 06h21
  3. Réponses: 1
    Dernier message: 16/08/2007, 17h48
  4. Envoyer des données par post sans formulaire
    Par webrider dans le forum Langage
    Réponses: 12
    Dernier message: 31/03/2007, 19h11
  5. Valeur par défaut dans formulaire
    Par Levon dans le forum IHM
    Réponses: 3
    Dernier message: 24/11/2006, 15h32

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