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

  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?

  8. #8
    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
    J'ai testé et ça ne marche pas.

    Je l'ai mis dans la procédure Textbox1_Change mais ça fait rien.

    Je te met mon fichier en pièce jointe pour que tu vois
    Fichiers attachés Fichiers attachés

  9. #9
    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
    Oui ... Oui, ou avais-je la tête ? Mea culpa, ça va pas bien aujourd'hui dis donc !

  10. #10
    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
    C'est bon ça marche.

    Merci à vous

  11. #11
    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
    Moi aussi quand je peux faire simple... Je fais compliqué
    Bonne journée à vous deux

  12. #12
    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
    Il y a un problème quand même

    J'ai mis le code dans la fonction Combobox3_AfterUpdate mais je suis obligé de cliquer sur la textbox pour que ça me l'affiche
    Et ensuite, quand je veux recopier la valeur de la textbox dans une cellule d'une autre feuille, ça me change la date (J'ai 02/03/2015 et ça me met 03/02/2015)
    Comment faire ?

    Merci

  13. #13
    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
    L'événement AfterUpdate se déclenche losque tu quittes la Combobox tu peux la changer 3 fois, si tu ne libères pas le focus rien ne se déclenche. essaie l'événement Change du coup !

    Ensuite c'est un problème de format de ta date, il y a une ambiguité en VBA car il est en anglais, dans lequel les dates sont au format mm/dd/yyyy
    alors que toi tu as des dates dd/mm/yyyy...
    Il faut le spécifier avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TaCellule = Format(Label1.Value,"dd/mm/yyyy")

  14. #14
    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
    L'événement Combobox_Change ou Textbox_Change?

  15. #15
    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
    Euh si TextBox.Change....... Tu risques de te retrouver avec une superbe boucle infinie, car dans le code tu viens changer la valeur de ta textbox...

    Donc oui ComboBox_Change, car tu veux démarrer la procédure dès que tes 3 données sont disponibles, c'est à dire dès que ta 3ème combobox est remplie.

  16. #16
    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
    Bonjour,

    J'ai testé les codes et ça ne marche pas.
    Je ne sais pas pourquoi.
    Du coup je l'ai supprimé.

    Je vous mets le fichier en pièce jointe si vous avez une idée.
    Merci
    Fichiers attachés Fichiers attachés

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