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 :

Userform et gestion d'un nombre de donnée important [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Userform et gestion d'un nombre de donnée important
    Bonjour le forum,

    J'ai un userform composé d'un contrôle Onglet remplit de : zone de texte et listbox qui servent à saisir des données qui seront enregistrées dans un autre classeur servant de base de donnée. (jusque là ça va ...)

    Grace aux recherches sur le forum et tuto divers, je vois à peu près comment sauvegarder les données dans le fichier servant de BDD (affectation aux variables, recherche de la 1ère ligne vide utile, copie des données ...) sauf que :

    J'ai pas moins de 130 données à enregistrer... et oui

    Je cherche pas forcément du code mais plutôt une piste / des idées sur comment gérer une grande quantité de donnée à récupérer d'un userform pour les enregistrer dans un autre classeur.
    Parce que je ne me vois pas créer 130 variables pour les affecter une par une aux listBox. (à moins que je n'ai pas le choix )

    ==> J'avais pensé aux variables tableaux ... mais pareil : un tableau avec 130 items ... c'est pas terrible il me semble.
    ==> Ou alors faire plusieurs "petits" tableaux mais après comment aligner les données dans la BDD

    bref, j' ai du mal à voir comment procéder et si une âme charitable à une piste, je suis preneur

    merci d'avance !

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour gmalodent,

    Voici ce que j'ai compris : tu as besoin d'enregistrer 130 données qui seraient insérées à partir d'un UserForm par un utilisateur.
    C'est ça ?

    Je n'ai pas bien compris ton histoire de ListBox. Est-ce que les données sont à sélectionner, les unes après les autres, 130 fois ?
    Est-ce que ces données sont à écrire dans un UserForm ? Sont-elles du même formalisme ? Que du texte ? Des dates ? Des nombres ?
    Doit-il y avoir des explications pour chaque valeur à enregistrer ?

    Bref, je crois que ce n'est pas très clair...

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Bonjour Kimy_Ire

    merci pour ton intérêt malgré un énoncé obscur

    Voici ce que j'ai compris : tu as besoin d'enregistrer 130 données qui seraient insérées à partir d'un UserForm par un utilisateur.
    Oui tout à fait ça !

    Est-ce que les données sont à sélectionner, les unes après les autres, 130 fois ?
    il y a 44 listBox , il faut choisir une donnée à chaque fois. (données à choisir qui sont différentes à chaque listBox ... sinon ça serait pas drôle ... )

    Est-ce que ces données sont à écrire dans un UserForm ? Sont-elles du même formalisme ? Que du texte ? Des dates ? Des nombres ?
    Oui, elles sont à écrire dans un formulaire et il y a de tout : texte, date, nombre ... (le tout : en plus des listBox)

    Doit-il y avoir des explications pour chaque valeur à enregistrer ?
    si par explications tu veux dire : dire à l'utilisateur ce qu'il doit saisir ==> non, non pas d'explications, (et puis quoi encore ! )

    En fait, il n'y aurait que quelques données, ça ne m'aurait pas posé trop de pb (ya des tutos bien fait) mais là : 130 données ... comment gérer ça de façon rapide et efficace

    voila voila, j'espère avoir été plus clair

    Thierry

  4. #4
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour gmalodent,

    Je veux bien voir la tête de ton formulaire parce que j'ai un peu de mal à comprendre.
    Tu ne peux pas "réafficher" 130 fois le même UserForm avec une boucle ?

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  5. #5
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    une piste à bien entendu adapter à ton contexte :

    - utiliser les Tag de tes contrôles qui vont devoir transmettre une valeur
    - chaque Tag possède deux informations : Le type de contrôle (ListeBox, Combobox, TextBox etc...) et le numéro de la colonne d'écriture
    - les deux informations sont séparées par une virgule : exemple "ListBox,4" pour écrire la valeur du ListBox dans le colonne D

    avec ça, tu peux transférer tes 130 valeurs en une seule boucle :

    - boucle sur tous les contrôles
    - si le contrôle possède un Tag : on fait un select Case sur le Split(TagDuContrôle,",")(0) pour tester le type de contrôle
    - chaque Case de ton Select Case permet ainsi de transférer correctement la valeur du contrôle, en fonction de son type
    - on utilise le Split(TagDuContrôle,",")(1) pour obtenir le numéro de colonne qui recevra la valeur


    Voilà pour la théorie ... dans la pratique, il faudra probablement complexifier la chose pour gérer :

    - les différents types de données si besoin (date, texte, nombre etc...)
    - les contrôles pouvant renvoyer plusieurs valeurs à différents endroits (exemple d'un ListBox Multiselect)

    Dans ce cas là, on pourra découper le Tag en plusieurs portions délimitées par "," et naviguer dans les informations au travers de la fonction Split


    Testé et approuvé sur un fichier que j'ai crée et dont un userform possède ... 402 contrôles !

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Bonjour Kimy

    voila une ébauche de l'userForm (j'ai changé les noms pour mettre n'importe quoi et tous les onglets ne sont pas présents mais l'esprit est là...)

    quelques précisions :

    - il n'y a qu'un seul UserForm à l'interieur duquel il y a un contrôle multiplan à l'intérieur duquel il y a plein de champs à remplir / choisir par le biais de listBox, comboBox etc ... (et donc le tout représentant 130 données différentes environs)
    - les items des comboBox sont alimentées (par "Rowsource") par des tableaux qui se trouvent sur un onglet du fichier. (non repris dans l'exemple fourni par soucis d'anonymat )
    - les données à choisir pour les listBox / comboBox sont toutes différentes

    Je pensais créer des variables tableaux qui seraient remplies par des boucles mais cela suppose de nommer les combobox, textBox de la même façon et de leur attribuer un n°. quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub captureDon() 
    Don(10) as string ' 10 pour exemple. mais sinon suivant longueur du tableau
    Dim Col as Integer
    For Col =1 to 10
        Don(Col) = Controls("TextBox" + Cstr(Col)).Text
    Next Col
    End Sub
    Après il faudrait que je copie les données sur la même ligne de la BDD ...

    est ce que ce raisonnement parait correct ?


    cordialement
    Thierry
    Fichiers attachés Fichiers attachés

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Bonjour joe.levrai

    merci bien pour tes lumières
    transférer tous mes contrôles en une seule boucle, j'en salive déjà !!
    je vais de ce pas explorer (et déchiffrer aussi ) ta piste et je reviens !


    A+
    Thierry

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Bonjour

    quelle belle petite propriété que ce TAG. Difficile de trouver de la doc dessus mais c'est bon, je vois comment l'utiliser
    joe.levrai : du coup je pars sur ta solution qui fonctionne effectivement pas mal.

    merci encore pour cette piste !

    A+

  9. #9
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Ravi d'avoir proposé une solution satisfaisante pour ton projet.

    j'ai été très succinct sur le descriptif des choses, n'hésite surtout pas à intervenir à ce niveau si tu as du mal à mettre en application la méthode, ou a utiliser quelques pistes que j'ai écrit (notamment l'utilisation de la fonction Split pour naviguer sur les différentes informations qui sont concaténées dans le TAG)

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

Discussions similaires

  1. Gestion d'une base de données Access en C++
    Par Mastero dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 01/10/2008, 11h23
  2. [SQL] Système gestion dernier message + nombres sujets/réponses
    Par Dinan dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/02/2007, 09h09
  3. gestion de grand nombre
    Par elekis dans le forum C++
    Réponses: 2
    Dernier message: 13/10/2006, 14h53
  4. [JSP][Servlet][Tomcat][JDBC]Gestion d'une base de donnée.
    Par BakaOnigiri dans le forum Servlets/JSP
    Réponses: 31
    Dernier message: 16/05/2006, 20h51
  5. Réponses: 3
    Dernier message: 10/03/2006, 16h41

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