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

VBA Discussion :

Boucle sur Control : Ordre des controls dans la Liste


Sujet :

VBA

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 24
    Points : 15
    Points
    15
    Par défaut Boucle sur Control : Ordre des controls dans la Liste
    Bonjour,

    J'ai un userform avec plein de Textbox, un formulaire classique avec 14 Texbox dont la saisie est obligatoire, d'autres optionel.
    L'indexTab de chaque TextBox à été réglé de façon à parcourir le formulaire aisément

    Donc je boucle avec un For each control sur la liste UserForm.controls et stop dès qu'un champ est vide pour mettre un HighLight sur la Textbox vide.

    Le soucis c'est que je ne sais pas quel paramètre est pris en compte pour le classement de ces Textbox dans cette liste de controls, en tout cas ce n'est pas l'indexTab.

    Exemple si mon formulaire est vide et que je valide il met en HighLight le second champ vide puis, le 5 ème....le premier 'Nom' tabIndex 2 lui sera le dernier de la liste.

    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
     
    Public Sub Validate_Field()
     
    Dim Ctrl As Control
     
            For Each Ctrl In UF.Controls ' UF étant le formulaire en question
     
                 If TypeOf Ctrl Is MSForms.TextBox And Left(Ctrl.Name, 4) <> "opt_" Then
     
                                If Ctrl.Text = "" Then
                                MsgBox "Nom : " & Ctrl.Name & " Index :" & Ctrl.TabIndex
     
                                With Ctrl
                                .BackColor = vbHighlight
                                '.SetFocus
                                End With
                                Exit Sub
                         End If
                End If
           Next Ctrl
    End Sub
    Je me demandais s'il n'y avait pas moyen de mettre un 'sort', ou un 'order' dans la boucle ou la liste.
    En attendant j'ai créé un tableau avec mes TextBox dedans et je boucle sur le tableau.....

    Merci

    Bon dimanche

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par juanpa Voir le message
    Bonjour,

    Le soucis c'est que je ne sais pas quel paramètre est pris en compte pour le classement de ces Textbox dans cette liste de controls, en tout cas ce n'est pas l'indexTab.
    Extrait de l'Aide, mais oui de l'aide, mais oui de l'aide de VBA. Mais oui, l'aide cela existe dans VBA

    Dans la rubrique :

    Controls, collection
    Controls, collection
    Controls, collection


    Remarques

    Chaque contrôle appartenant à la collection Controls possède en tant qu'objet un index unique dont la valeur peut être un nombre entier ou une chaîne. La valeur d'index du premier contrôle d'une collection est 0 ; la valeur du deuxième contrôle est 1, etc. Cette valeur indique l'ordre dans lequel les contrôles ont été ajoutés à la collection.

    Si l'index est une chaîne, il représente le nom du contrôle. La propriété Name

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 24
    Points : 15
    Points
    15
    Par défaut
    merci.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 24
    Points : 15
    Points
    15
    Par défaut
    Juste pour donner une VRAIE réponse, donner une vrai réponse, une vrai réponse pour ceux que ça intéresse, ceux que ça intéresse

    On ne peux pas faire ceux qui est demandé dans le 1er post pour la simple est bonne raison que les controls ne sont pas classés par Tabindex dans la liste des controls, mais par un index de création du controle.
    C'est pour cela que la liste ne vous sortira jamais les controls dans l'ordre Tabindex, à moins de les avoirs créer dans l'ordre au départ.

    Donc obliger de faire un tableau avec les controls concernés et boucler dessus.

    Bon codes

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par juanpa Voir le message
    Juste pour donner une VRAIE réponse, donner une vrai réponse, une vrai réponse pour ceux que ça intéresse, ceux que ça intéresse

    On ne peux pas faire ceux qui est demandé dans le 1er post pour la simple est bonne raison que les controls ne sont pas classés par Tabindex dans la liste des controls, mais par un index de création du controle.
    C'est pour cela que la liste ne vous sortira jamais les controls dans l'ordre Tabindex, à moins de les avoirs créer dans l'ordre au départ.

    Donc obliger de faire un tableau avec les controls concernés et boucler dessus.

    Bon codes
    Comme le montre l'extrait que je t'ai cité, j'au répondu à une seule chose; celle-ci:

    Le soucis c'est que je ne sais pas quel paramètre est pris en compte pour le classement de ces Textbox dans cette liste de controls, en tout cas ce n'est pas l'indexTab
    .

    Ma réponse était à cela et à rien d'autre.

    Et puis quand tu prétends que tu es obligé de prendre un tableau, c'est faux. Tu as juste à mettre 0 (zéro) au Tag des contrôles à éviter et 1 (un) au Tag des textboxes. Tu testes la valeur du Tag et tu es en voiture sans tableau. Au pire, si tu veux passer tes Texboxes dans un ordre pré-défini,tu mets 1 au tag du premier Textbox, 2 au second etc. Ensuite tu boucles tes Tag(s) de 1 à x

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 24
    Points : 15
    Points
    15
    Par défaut
    Merci beaucoup

    Dans mes recherches j'étais également tombé sur le 'tag', mais n'avais pas clairement compris comment m'en servir, c'est beaucoup plus clair maintenant, je vous en remercie


    bonne soirée

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 11/10/2012, 00h50
  2. Gérer l'ordre des controles de validation sur une même page
    Par slideveloppeur2006 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 11/04/2008, 15h26
  3. [Boucle] Ordre des Controls dans un ForEach
    Par Djekill dans le forum Windows Forms
    Réponses: 8
    Dernier message: 07/12/2007, 11h38
  4. [ATL] Ordre des controles
    Par LAPLACE dans le forum MFC
    Réponses: 2
    Dernier message: 11/04/2006, 01h39
  5. Envoyer des controles d'un formulaire dans un tableau
    Par CB56 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 18/11/2005, 11h43

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