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 :

Actions selon choix liste combobox


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 35
    Par défaut Actions selon choix liste combobox
    Bonjour,

    Je souhaite faire une action ( ici notamment écrire sur le textbox ), en fonction de ce que l'utilisateur sélectionne avec le combobox.

    J'ai voulu utiliser le select case, mais je ne pense pas que je maitrise la syntaxe du combobox, voila ce que j'ai fait :
    Mon but ici est de faire pour combobox.item ="mot1" alors textbox1 = x et textbox2 = y, j'ai du mal avec la synthaxe,
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Select Case ComboBox1.ListIndex
    Case 0
        TextBox_1 = 1030
        TextBox_2 = 270
    Case 1
        TextBox_1 = 1030
        TextBox_2 = 410
    Case 2
        TextBox_1 = 1330
        TextBox_2 = 400
    Case 3
        TextBox_1 = 1400
        TextBox_2 = 470
    Case 4
        TextBox_1 = 1875
        TextBox_2 = 410
    Case 5
        TextBox_1 = 2200
        TextBox_2 = 500
    Case 6
        TextBox_3 = 485
    Case 7
        TextBox_3 = 711
    Case 8
        TextBox_3 = 230
    Case 9
        TextBox_3 = 362
    Case 10
        TextBox_3 = 590
    End Select
    Merci

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Tu as bien fait d'utiliser l'instruction Select Case
    Tu pourrais tout aussi bien utiliser la valeur de la zone de liste (combobox) plutôt que son index de liste.

    Ce processus pourrait être intégré à l'évènement Change de ce contrôle.

    Autre remarque.
    Pourquoi ne pas utiliser un Label dont le texte (Caption) serait modifié?
    En effet, le rôle premier d'un contrôle Textbox reste, à mon avis, la saisie.

    2 tutoriels pourraient t'être utiles (Les formulaires et les contrôles).
    Ils sont intégrés à l'espace de Silkyroad.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 35
    Par défaut
    Salut,

    Ce code ne fonctionne pas, je me suis dit donc, il faut ptetre que j'utilise la valeur de la combobox selectionné par l'utilisateur, mais je ne sais pas faire la synthaxe.

    Sinon, j'utilise un textbox et non un label, car l'utilisateur a aussi la possibilité de saisir, dans d'autres cas

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut Gioge,

    Pour ce projet comme pour tous les autres, il te faut chercher (Ce forum, les tutoriels, Internet...)
    Comme je dis toujours, même en cas d'échec, c'est avant tout la recherche qui est vecteur de formation (comme dans toute matière: mathématiques, physique...).

    Au haut de la fenêtre VBE associée au formulaire, apparaisent 2 listes déroulantes.
    A gauche, la fenêtre désignant les objets du formulaire; tu choisis celui de la liste déroulante (combobox).
    A droite, celle des évènements; tu choisis "Change".
    Tu obtiendras ainsi la première et la dernière ligne de la procédure dans laquelle sera intégrée l'instruction Select Case.

    2 conseils:
    1- Toujours renommer les contrôles par un label dont le préfixe indique la nature de celui-ci (exemple: Cbx_Bureau_distrib)
    2- Même si elles sont tacites, toujours préciser les propriétés (Ici Txt_lechamp.Text = "toto")

    A plus

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Hors mis que je ne vois pas l'intérêt de renommer TextBox1 en TextBox_1 idem pour le 2, je trouve que tu t'en sort plutôt bien du select caise.

    Mais sorti de son contexte ça n'a pas grande signification. Que veux tu faire précisément?

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Puisque tu codes apparemment les valeurs à placer dans le textbox en dur dans ton code, je te propose une autre démarche que le select case.

    Spécifie que ton combobox possède deux colonnes et précise que la seconde colonne a une largeur de 0 points. Lors de la sélection d'un item du combobox, tu passes au textbox la valeur de la deuxième colonne de l'item sélectionné. Note toutefois que les indices des lignes et colonnes d'un combo commencent à 0.

    Voici une table Excel t_Choix qui contient les valeurs à charger dans ton combo

    Nom : 2019-05-28_212609.png
Affichages : 1836
Taille : 2,6 Ko



    Voici les propriétés du combobox

    Nom : 2019-05-28_212634.png
Affichages : 2024
Taille : 23,8 Ko

    Voici le code qui alimente le combo puis qui affiche le userform

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub ShowUserform()
      With UserForm1
        .ComboBox1.List = Range("t_Choix").Value
        .Show
      End With
    End Sub

    Le code pour adapter la valeur du textbox sur l'événement Change du combo est alors très simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox1_Change()
      TextBox1.Value = ComboBox1.List(ComboBox1.ListIndex, 1)
    End Sub

    L'avantage de coder de cette manière est que si demain une valeur change, disparaît ou s'ajoute, tu n'as rien à modifier dans ton code. Tu adaptes simplement les valeurs dans ta table Excel en ajoutant, supprimant ou modifiant des lignes.



    J'approuve bien sûr Marcel sur l'idée de bien nommer tes contrôles et ton userform et de toujours définir les propriétés, même celle par défaut, pour lever toute ambiguïté
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 35
    Par défaut
    Salut à vous,

    J'adapte bien sur mon code au forum, car je bosse sur un fichier entreprise, je ne suis pas autorisé a ecrire le code comme tel est dans mon fichier, donc je change tous les nom, en nom generiques

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Oui, bien sûr.

    A toi donc, dans l'autre sens, d'adapter nos solutions à ta situation réelle
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 35
    Par défaut
    Bonjour,

    J'ai réussi à afficher la liste de fichier2 sur mon userform.combobox de mon fichier1, mais mon cas est légèrement plus compliqué que ce que vous proposer.

    En effet, lorsque l'utilisateur sélectionne, disons option1 sur la liste déroulante du combobox, alors le textbox1 doit afficher une valeur1 et texbox2 doit affficher une valeur2.

    La facilité ici est que valeur1, et valeur2 et option1 se situe sur la même ligne du fichier2 ( sur des colonnes differentes ), et sur la même feuille excel.

    ça devrait pas être compliqué, mais pour le moment je ne vois pas,

    Bien à vous

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Tu parles de quoi lorsque tu parles de fichier1 et fichier2... de fichiers Excel différents? Si oui, c'est une mauvaise idée de travailler avec les deux fichiers ouverts. Copie les infos nécessaires d'un fichier dans l'autre et travaille en local.

    Pour le reste, si tu as compris la mécanique que je te propose, ça ne devrait pas être compliqué de récupérer une donnée de plus puisque tu dis qu'elles sont sur la même ligne. Il suffit normalement d'ajouter une colonne au combobox et d'étendre la plage qui le nourrit à la colonne supplémentaire.

    Il serait intéressant que tu nous dises tout dès le début, histoire de ne pas jouer au chat et à la souris...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 35
    Par défaut
    Moi je travaille sur fichier1, le fichier2 n'est pas le mien c'est un fichier dont j'ai accès qu'en lecture seule, et qui se met à jour plusieurs fois dans la semaine.

    Dans mon fichier1, j'ai besoin des données actualisé de ce fichier2.

    Je ne peux pas donc le copier sur mon fichier, par contre je peux essayer de copier à chaque fois que j'utilise mon fichier et que je veux travailler sur ses données, si ça vaut le coup....

    Il suffit normalement d'ajouter une colonne au combobox et d'étendre la plage qui le nourrit à la colonne supplémentaire.
    Mon combobox doit afficher uniquement la liste prise d'une colonne, et affecter des valeurs aux textboxes differentes de celles sélectionné dans le combobox, mais qui sont sur la même ligne ( dans des colonnes differentes)

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Tu peux parfaitement copier le contenu d'un fichier en lecture seule dans ton fichier à toi.

    Pour le reste de tes explications, as-tu testé ce que je t'ai proposé? As-tu compris les propriétés que j'ai illustrées, avec la seconde colonne à 0? En faisant cela, tu fais en sorte que ta liste n'affiche qu'une colonne, mais au moment de la sélection de la ligne dans le combo, tu te donnes la possibilité d'aller lire les valeurs qui se trouvent dans les colonnes masquées du combo, sur la ligne choisie?

    As-tu compris cela? As-tu testé? as-tu essayé de mettre plusieurs colonnes? Sur quoi bloques-tu dans les explications que j'ai fournies?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. action selon choix dans un ComboBox
    Par sarouji dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 11/08/2011, 12h29
  2. Executer une action selon choix de ZLM
    Par thoruiz dans le forum IHM
    Réponses: 5
    Dernier message: 12/03/2010, 19h22
  3. Ajouter un paragraphe selon choix du combobox
    Par anita07 dans le forum VBA Word
    Réponses: 7
    Dernier message: 23/12/2009, 14h46
  4. Gérer une action selon une liste déroulante
    Par Viscapon dans le forum Struts 1
    Réponses: 13
    Dernier message: 26/10/2008, 23h32
  5. [MySQL] fonction include selon choix liste déroulante
    Par ghyosmik dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 03/12/2007, 16h34

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