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 :

Insérer valeur dans Textbox en fonction des valeurs des Combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 127
    Par défaut Insérer valeur dans Textbox en fonction des valeurs des Combobox
    Bonjour,

    J'ai un petit problème.
    Je voudrais insérer dans une textbox une valeur en fonction des valeur de 3 combobox.

    Je ne vois pas comment faire.

    Je vous met en pièce jointe une images avec les combobox et textbox et une autre avec le tableau dans lequel ça vient chercher

    Merci de votre aide

    Julien
    Images attachées Images attachées   

  2. #2
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Bonjour,

    Si ta textbox n'est pas voué à être modifier par l'utilisateur, autant utiliser un Label ? Tu peux le changer via VBA avec "Me.Label1.caption = "toto"".

    Ensuite, comment va fonctionner ton formulaire ?

    Tu vas sélectionner d'abord une valeur dans la première combobox, puis en fonction de cette valeur, les listes dans les autres combobox vont s'actualiser ?

    Tu peux peut être faire quelques choses avec des filtres avancés, mais je ne les maîtrises pas. Je serais parti avec des variables tableaux qui s'écrèment au fur et à mesure que tu choisis des valeurs dans tes combobox.

    PS : je me trompe peut être, mais dans la colonne 4 (Nom de la pièce), chaque pièce semble unique, donc pourquoi avoir 3 combobox ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 127
    Par défaut
    Non la Textbox n'est pas voué à être modifié.

    Et pour les combobox, le filtre selon les valeurs des autres combobox est déjà fait.

    Je cherche juste à trouver comment faire pour avoir la valeur de la textbox (ou label) en fonction des valeurs sélectionner dans les 3 combobox.
    Sachant que la valeurs qui va se mettre se trouve sur la colonne A de l'image que j'ai mis précédemment.

    Merci d'avance

    Julien

  4. #4
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Et finalement, est ce que le nom des pièce (présent colonne 4) est unique ? Ou il peut y avoir des doublons suivant d'autre critère ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 127
    Par défaut
    Le nom colonne 4 peut être en doublon.

    Pour un numéro de dossier différente, il peut y avoir plusieurs fois le même nom de pièce

  6. #6
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Alors il y a plusieurs méthode. La plus "naturel" (qui n'est pas la plus optimal), c'est de faire une triple boucle, sur chacun des critères.

    C'est pas beau, c'est pas bien (c'est pas bosch), mais ça fait ce qu'on veut. ça donne un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For I = 1 to Derlig 'Nécessite de calculer la dernière ligne, j'imagine que tu l'as déjà fait
        If Cells(I, 2) = Combobx1.value then
            For J = 1 to Derlig
                If Cells(J, 3) = Combobox2.value then
                     For K = 1 to Derlig
                         If Cells(K, 4) = Combobox3.value then
                              Me.textbox.value = Cells(K, 4)
                              Exit For
          '...
    Je pense que c'est une des pires boucles à faire niveau optimisation de la mémoire, niveau rapidité, etc etc ...

    Après, pour gagner en performance, Je passerais par une variable tableau. Un tableau à deux dimensions, qui prend toutes les colonnes dont tu as besoin. Il faut savoir que boucler dans un tableau c'est bien mieux que de boucler dans une feuille.

    Avec ledit tableau, tu fait d'abord une recherche sur la première combobox, puis tu supprime toute les lignes qui ne vont pas. Et rebelote jusqu'à la dernière cbbox. Si tes données sont bien faites, il doit te rester une ligne, et bingo !

    Le Must, c'est de passer par un/plusieurs Dico, puisque c'est indexé, donc tu perds pas de temps avec des boucles !

    PS : ce ne sont que des idées, il faut encore les creuser après !

  7. #7
    Membre confirmé
    Homme Profil pro
    Apprenti GEII
    Inscrit en
    Janvier 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Apprenti GEII
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2014
    Messages : 83
    Par défaut
    Tu veux récupèrer la date qui correspond aux trois informations rentrées?

    Pour la dernière Combobox remplie, sur l'événement AfterUpdate

    Tu parcours ta feuille à l'aide d'une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    For i = 2 to Dernière ligne
        If Sheets("Tafeuille").Cells(i,NumColonne1ATester) = Combobox1.value And _
           Sheets("Tafeuille").Cells(i,NumColonne2ATester) = Combobox2.value And _ 
           Sheets("Tafeuille").Cells(i,NumColonne3ATester) = Combobox3.value then
                Label1.Value = Sheets("Tafeuille").Cells(i,1)  'Stockage valeur correspondante
                Exit For
        End if
    next i
    Si tu veux que ton code soit plus rapide tu crées une variable tableau que tu parcours à l'aide d'une boucle, de la même manière

    Nico Chg pourquoi une triple bloucle? autant faire un triple test non?

Discussions similaires

  1. fonction pour sélectionner des valeurs dans une matrice
    Par EaudeRoche dans le forum MATLAB
    Réponses: 4
    Dernier message: 09/03/2012, 11h45
  2. Réponses: 2
    Dernier message: 05/03/2008, 22h01
  3. Debutant : prendre des valeurs dans un textbox
    Par dachir dans le forum Applets
    Réponses: 3
    Dernier message: 05/03/2008, 14h01
  4. récupérer des valeur dans une textbox..
    Par mohe27 dans le forum ASP.NET
    Réponses: 11
    Dernier message: 15/12/2007, 19h37
  5. fonction récupérant des valeurs dans une fonction popup...
    Par petitsims dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/01/2005, 14h51

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