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 :

Faire correspondre une textbox en fonction d'une listbox


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 34
    Points : 22
    Points
    22
    Par défaut Faire correspondre une textbox en fonction d'une listbox
    Bonjour !

    Après avoir cherché sur le forum une réponse à mon nouveau problème, il me semble qu'il n'existe pas de réponse à mon problème.

    Dans mon userform, j'ai une textbox qui, après saisi, alimente une listbox. Puis j'ai une troisième textbox avec laquelle je n'arrive pas à mes fins.
    En effet, je souhaite faire apparaitre dans cette textbox la valeur correspondant à ma ligne sélectionnée dans ma listbox. Cette valeur se trouve sur la même ligne, mais à la colonne d'avant.

    Du coup, j'ai essayé plusieurs façons de coder pour dire que dans ma textbox, il doit apparaitre la cellule (0,-1) du selectitem de ma listbox mais ca marche pas...





    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Private Sub TextBox23_Change()
     Texbox23.Value = ListBox2.SelectedItem.cell(0, -1).Value
     End Sub
    Quelqu'un aurait une idée ?

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Ça dépend comment est générée la liste de la listbox.
    Certains vont lister les éléments d'une colonne, ligne par ligne, et on peut alors retrouver l'item en utilisant l'index de l'item choisi de la listbox versus la ligne de la feuille.

    Dans d'autres cas, la liste peut être chargée différemment (triée, sans doublon,...) et il faut faire une recherche (Ctrl-F ou Find en VBA) sur la feuille pour trouver la ligne de l'item.
    Une fois la ligne trouvée, il est simple d'aller chercher d'autres items sur celle-ci.

    Disons que ton item est en colonne C
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub ListBox1_Click()
        Dim Rng As Range
        Set Rng = Columns("C").Find(ListBox1.List(ListBox1.ListIndex), LookIn:=xlValues, LookAt:=xlWhole)
        If Not Rng Is Nothing Then
           MsgBox "L'item a été trouvé sur la ligne " & Rng.Row
           Textbox1 = Range("B" & Rng.Row)
        End If
    End Sub
    MPi²

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 34
    Points : 22
    Points
    22
    Par défaut
    Bonjour parmi !

    Merci pour votre réponse, elle marche ! J'ai cependant omis de vous exposer un détail. Ma listbox est alimentée en fonction de 3 tableaux, 2 se situant sur une feuil1 et l'autre sur une feuil2. Coder en écrivant Colonne "c" pour faire correspondre ma textbox à la colonne "b" fonctionne mais que pour un seul de mes trois tableaux.

    Mon tableau1 fonctionne, il se trouve sur la feuil1, les données sont colonnes B (listbox) et celles qui apparaissent sont colonnes A (textbox).
    Mon tableau2 ne fonctionne pas, il se trouve sur la feuil1, mais les données sont colonnes G et celles qui doivent apparaitre sont colonnes F.
    Mon tableau3 ne fonctionne pas, il se trouve sur la feuil2, mais les données sont colonnes B et celles qui doivent apparaitre sont colonnes A.

    N'est il pas possible d'écrire un code avec l'idée suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub ListBox2_Click()
     Dim Rng As Range
        Set Rng = Columns.Find(ListBox2.List(ListBox2.ListIndex), LookIn:=xlValues, LookAt:=xlWhole)
        If Not Rng Is Nothing Then
     
           TextBox23 = Range("Columns-1" & Rng.Row)
        End If
    End Sub
    Bien cordialement,

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Je n'aime pas les Select/Selection, mais bon...
    Ça pourrait se faire ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub ListBox2_Click()
        Dim Rng As Range
     
        Sheets(Array("Feuil1", "Feuil2")).Select
        Cells.Select
        Set Rng = Selection.Find(ListBox2.List(ListBox2.ListIndex), LookIn:=xlValues, LookAt:=xlWhole)
        If Not Rng Is Nothing Then
           MsgBox "L'item a été trouvé sur la ligne " & Rng.Row & " de la feuille " & Rng.Parent.Name
           TextBox1 = Sheets(Rng.Parent.Name).Cells(Rng.Row, Rng.Column - 1)
        End If
    End Sub
    MPi²

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 34
    Points : 22
    Points
    22
    Par défaut
    Bonjour !

    Je ne sais pas pourquoi le principe de votre code ne vous plait pas trop mais en tout cas, il marche parfaitement !

    Je vous remercie pour votre aide !

    Cordialement,

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/08/2016, 16h11
  2. [XL-2010] afficher une valeur dans une textbox en fonction d'une listbox
    Par MatthieuT42 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 18/06/2015, 11h45
  3. Remplissage d'une dropdownlist en fonction d'une textbox
    Par soazig dans le forum ASP.NET Ajax
    Réponses: 1
    Dernier message: 30/10/2013, 09h50
  4. [XL-2003] faire un affichage dans une textbox en fonction d'une date
    Par revemane dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/06/2009, 17h16
  5. [MySQL] Apparition d'une textbox en fonction d'une valeur de liste recupérée
    Par jeremay dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 18/06/2009, 11h59

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