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 :

Comment alimenter des Textbox à partir d'un Combo ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut Comment alimenter des Textbox à partir d'un Combo ?
    Bonjour,

    Dans le fichier que je joins, j'ai une liste d'adhérents dans la feuille "Enf".
    En cliquant sur le bouton rouge, un UserForm apparaît.
    En cliquant sur la Combo une liste de nom.
    Je voudrais mettre en place le code me permettant de remplir toutes les ListBox de l'User en fonction du nom choisi.

    Par exemple : Je choisi "Fontaine Nathalie", alors tous les enfants qui lui sont rattachés doivent apparaître dans les différentes listes.

    Je sais le faire lorsque les infos sont sur la même ligne, mais pas lorsque celles-ci sont les unes en dessous des autres.

    Pouvez-vous me donner un petit coup de main s'il vous plait ?

    Je vous en remercie par avance
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  2. #2
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    rebonjour nec le forum
    pourquoi des listbox et pas des textbox ou eventuellement des labels???
    SALUTATIONS

  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Laetitia,

    J'utilise toujours des ListBox, peut-être par habitude.
    Mais peut importe, c'est le résultat qui compte et si tu as une solution avec une autre méthode, pourquoi pas
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  4. #4
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    re nec c est plus facile de travailler sur une textbox
    j ai pas le temps aujourd hui si pas de reponse demain j essairais de batir ton user
    la premiere chose pour alim.. ta combo tu peus l ecrire comme cela tres rapide en utilisant
    object("Scripting.Dictionary")

    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
    Option Explicit
    Private Sub UserForm_Initialize()
    Dim T, z As Variant, l As Object, i As Long, j As Long, temp As String
    On Error Resume Next
    Set l = CreateObject("Scripting.Dictionary")
    T = Range("C3:C" & Range("C65536").End(xlUp).Row)
    For i = LBound(T) To UBound(T)
    l.Add T(i, 1), T(i, 1): Next
    For Each z In l
    TNew4.AddItem z: Next
    For i = 0 To TNew4.ListCount - 1
    For j = 0 To TNew4.ListCount - 1
    If TNew4.List(i) < TNew4.List(j) Then
    temp = TNew4.List(i)
    TNew4.List(i) = TNew4.List(j)
    TNew4.List(j) = temp
    End If: Next j: Next i: TNew4 = ""
    End Sub
    salutations
    SALUTATIONS

  5. #5
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Le code concernant le Combo est mis en place dans l'exemple fournit.
    Par contre pour alimenter les TextBox selon le choix fait dans le Combo, là je peine.

    J'ai remplacé les ListBox par des TextBox
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Points : 417
    Points
    417
    Par défaut
    Bonjour,

    il y a surement mieux mais ça fonctionne

    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
    Private Sub TNew4_Change()
    Dim adherent As Variant
    Dim num As Variant
    num = 1
    For Each adherent In Range("C3:C" & Range("C" & Rows.Count).End(xlUp).Row)
    If adherent = TNew4.Value Then
    Controls("T" & num).Value = adherent.Offset(0, 2)
    Controls("T" & num + 1).Value = adherent.Offset(0, 3)
    Controls("T" & num + 2).Value = adherent.Offset(0, 4)
    Controls("T" & num + 3).Value = adherent.Offset(0, 7)
    Controls("T" & num + 4).Value = adherent.Offset(0, 5)
    num = num + 5
    End If
    Next
    End Sub

  7. #7
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour David2304,

    Super ça marche, exactement ce que je voulais.
    Merci beaucoup.

    Je laisse l'exemple dans le cas où il pourrait servir à quelqu'un.

    A+
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  8. #8
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour à tous,

    Je reviens sur ce post car je rencontre un problème.
    Lorsque je choisi un adhérent et que celui-ci à 3 enfants, l'affichage se passe bien, mais lors du changement de Nom dans le Combo et quand celui-ci à un nombre inférieur d'enfant par rapport au précédent, les données se trouvant dans les TextBox ne sont pas mises à jour, seul le 1er enfant change, les autres restent indiqués.

    Dans l'exemple que j'ai mis plus haut, prenez par exemple Fontaine Nathalie, elle a 3 enfants, ensuite choississez Feret Bertrand qui n'a qu'un seul enfant, le sien est bien indiqué, mais 2 des enfants de Fontaine restent indiqués.
    Comment peux-t'on modifier cela avec le code fournit par David ?
    Merci par avance
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  9. #9
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour nec le fil essai comme cela

    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
    Private Sub TNew4_Change()
    Dim adherent As Variant
    Dim num As Variant
    Dim x As Byte
    For x = 1 To 30: Controls("T" & (x)) = "": Next x
    num = 1
    For Each adherent In Range("C3:C" & Range("C" & Rows.Count).End(xlUp).Row)
    If adherent = TNew4.Value Then
    Controls("T" & num).Value = adherent.Offset(0, 2)
    Controls("T" & num + 1).Value = adherent.Offset(0, 3)
    Controls("T" & num + 2).Value = adherent.Offset(0, 4)
    Controls("T" & num + 3).Value = adherent.Offset(0, 7)
    Controls("T" & num + 4).Value = adherent.Offset(0, 5)
    num = num + 5
    End If
    Next
    End Sub
    SALUTATIONS

  10. #10
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour laetitia,

    Merci ça marche. Mais pourquoi cette tristesse dans le smiley ?
    A+
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Il serait plus économique d'utiliser Find -> F1 pour comprendre
    Le principe :
    Recherche en boucle, dans la colonne du nom, du nom sélectionné dans le combobox, puis utilisation du code de David.
    Pour la recherche en boucle, tu as le code dans l'aide en ligne, à Find. Simplement, tu remplaces partour c par adherent.
    Certainement plus rapide que l'examen ligne par ligne
    Bonne journée

  12. #12
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Tu as raison ouske'l'nor.
    A+
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

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

Discussions similaires

  1. Comment grouper des textbox
    Par hellspawn_ludo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/11/2007, 11h53
  2. comment créer des .lib à partir de fichiers DEF?
    Par YOUBOY dans le forum Visual C++
    Réponses: 5
    Dernier message: 15/06/2007, 09h54
  3. Comment créer des relances à partir d'1 table
    Par Rod_75 dans le forum Access
    Réponses: 9
    Dernier message: 01/03/2006, 15h42
  4. Réponses: 9
    Dernier message: 14/12/2005, 18h44
  5. Réponses: 6
    Dernier message: 30/09/2005, 00h53

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