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

Contribuez Discussion :

Comment remplir un tableau avec une tripoté de champs dans un formulaire et tout çà simplement


Sujet :

Contribuez

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 97
    Points : 135
    Points
    135
    Par défaut Comment remplir un tableau avec une tripoté de champs dans un formulaire et tout çà simplement
    Bien le bonjour les Developpezeurs,

    J'ai été confronté à un problème, dernièrement ; je devais remplir un tableau excel avec des petites croix, là où les checkboxes de mon formulaire étaient cochées. Le souci, c'est que j'avais 6 colonnes d'une cinquantaine de checkboxes à traiter.

    L'idée la plus simple consistait à écrire une ligne de code par checkboxes, mais je me voyais mal écrire 300 fois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If [nomcheckbox] = True Then Range([AdresseCellule]) = "x"

    Je me suis donc mis en tête de gérer le problème avec un for each... next, en testant le nom préalablement défini, ce qui me permettait de trouvé la position du checkbox et de mettre un "x" au bon endroit.

    Bien que le code était fort exaltant intellectuellement (j'étais très fier de moi !), il n'en comportait pas moins de 500 lignes, soit plus que la première méthode.

    Soudain, un flash !!! Je me suis rapellé, que les objets d'un formulaire contiennent une variable Tag. Il suffit alors d'entrer dans chaque "Tag" l'adresse de la cellule correspondante dans le tableau. Par exemple : AG27.

    Le code subit alors une cure d'amaigrissement de choc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Ctl As Control
     
    For Each Ctl In UF.Controls
        If Ctl.Value = True Then
            Feuil1.Range(Ctl.Tag) = "x"
        End If
    Next
    Bon biensûr, çà demande un petit temps de préparation, car il faut entrer toutes les adresses dans les champs Tag.

    Voilà.
    Cordialement.

    Touffe

  2. #2
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    c'est un des domaines de prédilection des Modules de Classe :

    Lorsque vous devez ajouter un grand nombre de contrôles qui seront utilisés de la même manière (par exemple un groupe de TextBox), il devient vite fastidieux de réécrire plusieurs fois la même procédure. Dans ce cas, vous pouvez utiliser des modules de classe. Les classes définissent le fonctionnement des objets. Un objet peut être défini par une propriété, une méthode ou un évènement. (Vous n'écrivez qu'une seule procédure qui sera appliquable à tous les contrôles que vous aurez défini dans une collection).
    http://silkyroad.developpez.com/VBA/ControlesUserForm/

    http://fauconnier.developpez.com/art...neral/classes/

    pas de tag à alimenter et surtout une portabilité et une maintenance correcte

    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/02/2014, 14h38
  2. Réponses: 4
    Dernier message: 04/05/2010, 15h55
  3. [MySQL] Remplir un tableau avec une requête
    Par comme de bien entendu dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 12/06/2007, 11h27
  4. [MySQL] remplir un tableau avec les noms des champs d'une table
    Par solidaritok dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/04/2007, 13h47
  5. [C#] Comment remplir un tableau avec un arraylist
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 9
    Dernier message: 22/06/2006, 15h14

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