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

IHM Discussion :

Boucle For each sur plusieurs zones


Sujet :

IHM

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut Boucle For each sur plusieurs zones
    Bonjour à tous,

    Je cherche des contrôles sur différentes zones de mon formulaire (plus précisément l'entête et le pied).
    Pour ça j'utilise une boucle For each.
    Je sais le faire sur chaque zone séparément. Dans le cas de l'entête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim ctrl As Control
    Dim oForm As Form
    For Each ctrl In oForm.Section(acHeader).Controls
    ...
    Next
    Par contre, je ne sais pas comment faire une seule boucle associant les 2 zones.

    Merci d'avance à ceux qui m'aideront à trouver la solution

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Par contre, je ne sais pas comment faire une seule boucle associant les 2 zones.
    Je ne crois pas que cela soit possible.

    Mais en quoi cela te gêne-t-il d'enchaîner les deux boucles

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      Dim ctrl As Control
     
      For Each ctrl In Me.Section(acHeader).Controls
    ...
      Next 
     
      For Each ctrl In Me.Section(acFooter).Controls
    ...
      Next
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Citation Envoyé par ClaudeLELOUP Voir le message
    (.../...)
    Je ne crois pas que cela soit possible.
    (../...)
    C'est certainement possible en faisant une seule collection contenant les éléments des deux collections que tu énumères, mais est-ce pertinent? Je trouve ta solution bien plus simple. Si en plus à l'interieur du for each tu invoques une procédure(ou une fonction) qui est la même dans les deux, tu as factorisé ton code fonctionnel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      For Each ctrl In Me.Section(acHeader).Controls
        Call MonTraitement(ctrl)
      Next 
     
      For Each ctrl In Me.Section(acFooter).Controls
        Call MonTraitement(ctrl)
      Next
     
    Sub MonTraitement(ctrl As Control)
      ...
    End Sub
    Alors qu'un immonde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim maCollection as New Collection
    Dim ctrl As Control
    For Each ctrl In Me.Section(acHeader).Controls
      maCollection additem:= ctrl
    Next
    For Each ctrl In Me.Section(acFooter).Controls
      maCollection.Add Item:= ctrl
    Next
     
     
    For Each ctrl In maCollection
      ...
    Next
    certes répond plus précisément à la question posée, mais c'est vraiment se faire mal pour pas grand chose. Je préfère vraiment ta solution, dans ce cas précis.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Chouette, ta signature !
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut
    Merci à vous 2 pour vos réponses.
    En effet, le 2ème code de el_slapper n'est pas très sympathique.
    J'avais espéré quelque chose du style For Each ctrl In (oForm.Section(acHeader).Controls Or oForm.Section(acFooter).Controls)
    Bon, ben je pars sur 2 boucles dans ce cas
    Bonne soirée à vous

Discussions similaires

  1. Boucle for each sur des combobox
    Par katle77 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/07/2014, 15h17
  2. boucle for each sur des fichiers
    Par Nako_lito dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/08/2010, 14h21
  3. [AC-2003] boucle For Each sur les donnees d'une table
    Par TheRRb dans le forum VBA Access
    Réponses: 6
    Dernier message: 20/07/2009, 12h15
  4. boucle for each sur un groupe
    Par LeXo dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 06/04/2007, 21h38
  5. [VBA-E]PB sur une boucle for each next
    Par rond24 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/07/2006, 15h47

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