+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Inscrit en
    juillet 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 13
    Points : 3
    Points
    3

    Par défaut Remplir ComboBox et Textbox automatiquement

    Bonjour à tous,

    Je fais une table de base de données clientèle. J'ai un formulaire qui m'aide à remplir celle-ci.
    Par contre quand je tape le nom du client je voudrais savoir si celui-ci existe déjà donc je fais une recherche dans la colonne A des clients existant et j'efface les doubles. Dès que je choisie un nom de client, je voudrais qu'il me propose seulement le prénom qu'il existe pour ce nom. Malheureusement il me propose tous les prénoms qu'il trouve sous la colonne B.

    Fichier excel ci-joint pour exemple.

    Une petite aide?

    Merci par avance
    Davy
    Fichiers attachés Fichiers attachés

  2. #2
    Expert Confirmé Sénior Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    juin 2006
    Messages
    4 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : juin 2006
    Messages : 4 732
    Points : 9 264
    Points
    9 264

    Par défaut

    Bonjour,

    Je pense que ton problème vient du fait que tu ne vide pas ta combobox avant de la recharger
    Ci dessous une modification de ton code.
    Peut etre pas mega optimisé, mais a cette heure ...

    En gras les lignes ajoutées
    Code :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    Dim Init As Boolean
    
    Private Sub ComboBox1_Change()
        Dim h As Integer
        findname = ComboBox1.Value
        If Init = False Then ComboBox2.Clear
        For h = 2 To Range("A65536").End(xlUp).Row
            
            If Range("A" & h) = findname Then
                    ComboBox2 = Range("B" & h)
                    If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem Range("B" & h)
                    
                    TextBox1 = Range("C" & h)
            End If
        Next h
    End Sub
    
    Private Sub CommandButton1_Click()
        Unload UserForm1
    End Sub
    
    Private Sub UserForm_Initialize()
            'Remplissage de la ComboBox1
            Dim j As Integer
            
            Init = True
            'Récupère les données de la colonne D...
            For j = 2 To Range("A65536").End(xlUp).Row
                ComboBox1 = Range("A" & j)
                '...et filtre les doublons
                If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Range("A" & j)
            Next j
            ComboBox1.Value = ""
            ComboBox2.Value = ""
            TextBox1.Value = ""
            
            Init = False
    End Sub
    EDIT : On ne vois pas le gras, je met en rouge
    Jérôme

    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
    Si la réponse répond à votre besoin, votre vote nous encouragera.
    Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.

  3. #3
    Invité de passage
    Inscrit en
    juillet 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 13
    Points : 3
    Points
    3

    Par défaut

    Merci JFontaine,

    je viens aussi d'expérimenter et j'avais pensé à cela
    et ajouter aussi cela:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub ComboBox1_Change()
        Dim h As Integer
        Findname = ComboBox1.Value
        
            Me.ComboBox2.Clear
        For h = 2 To Range("A65536").End(xlUp).Row
            If Range("A" & h) = Findname Then
                    ComboBox2 = Range("B" & h)
                    If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem Range("B" & h)
                    
                    TextBox1 = Range("C" & h)
            End If
        Next h
    End Sub
    Aussi ajouter en rouge. Juste ajouter un Me.ComboBox2.clear
    Merci encore pour ton aide.
    Davy

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •