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 :

Userform Auto Alim Combox 2 et 3 + textbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Par défaut Userform Auto Alim Combox 2 et 3 + textbox
    Bonjour,

    j'ai une feuille nommé article où sont repertorié differente information, a savoir :
    reference - Famille - sous famille - designation - Prix

    J'ai créé un userform pour remplir un fichier facture,
    celui ci doit reprendre les information suivante :
    Combobox 1 ==> famille
    Combobox 2 ==> sous famille
    Combobox 3 ==> designation
    Textbox 1 ==> reference
    Textbox 2 ==> prix

    comme il y aurai beaucoup d'articles je veux remplir cet userform par la 1ere combobox qui auto alimentera la 2eme ( par rapport aux articles ) qui alimentera la 3eme , qui alimentera la textbox 1 et 2

    ci joint le fichier d'echantillon :
    http://cjoint.com/?0LpkuCLqWJ5

    Merci à vous

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Par défaut alimentation textbox en cascade
    Merci pour le lien,

    j'ai pu récup une partie du code et l'adapter afin d'effectuer 3 comboBox en cascade :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    ption Explicit
     
    Dim Ws As Worksheet
    Dim NbLignes As Integer
     
    'Les données sont dans les colonnes A à D, d'un onglet nommé "Base".
    'La procédure effectue un remplissage conditionnel des Combobox en fonction de
    'ce qui est sélectionnée dans le contrôle précédent:
    'La sélection du ComboBox1 (données colonne A) définit le contenu du ComboBox2 (données colonne B) ,
    'La sélection du ComboBox2 définit le contenu du ComboBox3 (données colonne C) …etc...
    '
     
    Private Sub UserForm_Initialize()
        'Définit la feuille contenant les données
        Set Ws = Worksheets("article")
        'Définit le nombre de lignes dans la colonne B
        NbLignes = Ws.Range("B65536").End(xlUp).Row
     
        'Remplissage du ComboBox1
        Alim_Combo 1
     
    End Sub
     
     
    Private Sub ComboBox1_Change()
        'Remplissage Combo2
        Alim_Combo 2, ComboBox1.Value
    End Sub
     
     
    Private Sub ComboBox2_Change()
        'Remplissage Combo3
        Alim_Combo 3, ComboBox2.Value
    End Sub
     
     
     
     
    'Procédure pour alimenter les ComboBox
    Private Sub Alim_Combo(CbxIndex As Integer, Optional Cible As Variant)
        Dim j As Integer
        Dim Obj As Control
     
        'Définit le ComboBox à remplir
        Set Obj = Me.Controls("ComboBox" & CbxIndex)
        'Supprime les anciennes données
        Obj.Clear
     
        'alimente le Combobox initial (Combobox1)
        If CbxIndex = 1 Then
            'Boucle sur les lignes de la colonne B (à partir de la 2eme ligne)
            For j = 2 To NbLignes
                Obj = Ws.Range("B" & j)
                'Remplit le ComboBox sans doublons
                If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("B" & j)
            Next j
        Else
            'Alimentation conditionnelle des autres Combobox en fonction de
            'ce qui est sélectionnée dans le contrôle précédent:
            '(La sélection du ComboBox1 définit le contenu du ComboBox2,
            'La sélection du ComboBox2 définit le contenu du ComboBox3 …etc...)
            For j = 2 To NbLignes
                If Ws.Range("B" & j).Offset(0, CbxIndex - 2) = Cible Then
                    Obj = Ws.Range("B" & j).Offset(0, CbxIndex - 1)
                    If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("B" & j).Offset(0, CbxIndex - 1)
                End If
            Next j
       End If
     
       'Enlève la sélection dans le ComboBox
       Obj.ListIndex = -1
    End Sub
    Le probleme c'est que je voudrais a la fin du choix dans la comboBox 3 cela me marque l'information de la colonne A dans la textbox 1 et l'information de la colonne H dans une textbox 2
    Je voudrais aussi pouvoir éffectuer cette commande dans plusieurs ligne de combox voir fichier :

    http://cjoint.com/?0LppcRUNuqq

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Si tu avais compris la logique, tu t'en sortirais

    Ajoute ce 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
    Private Sub ComboBox3_Change()
    Dim i As Long
     
    Me.TextBox1 = ""
    Me.TextBox2 = ""
    If Me.ComboBox1.ListIndex > -1 And Me.ComboBox2.ListIndex > -1 And Me.ComboBox2.ListIndex > -1 Then
        With Ws
            For i = 2 To NbLignes
                If .Range("B" & i) = Me.ComboBox1 And .Range("C" & i) = Me.ComboBox2 And .Range("D" & i) = Me.ComboBox3 Then
                    Me.TextBox1 = .Range("A" & i)
                    Me.TextBox2 = .Range("H" & i)
                    Exit For
                End If
            Next i
        End With
    End If
    End Sub

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Par défaut
    bonsoir,

    j'essaye de comprendre justement et c'est en apprenant que l'on comprends,

    j'ai compris la principe du change combox qui va indiquer en effet les valeur a rentrer dans les 2 textbox

    J'ai essayé de reproduire la cascade sur une 2eme ligne
    combox 4 - 5 - 6
    mais pas moyens que cela fonctionne j'ai tout le temps une erreur

    J'ai essayé par 2 type differents
    rajouter alim_combo 4 en init formulaire + les 2 combox change 4 - 5

    J'ai essayé de faire un copier collé en nomant alimm_combo et en modifiant mais pareil erreur aussi

    merci de m'eclaircir sur ce point afin de reproduire la cascade sur plusieur ligne

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour,

    mais pas moyens que cela fonctionne j'ai tout le temps une erreur
    La plupart du temps, le texte de l'erreur permet de comprendre ce qu'il faut modifier.
    Ne t'étonne pas de ne pas recevoir de réponse si tu ne fais même pas l'effort de nous donner ces éléments.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. [XL-2007] Fermeture intempestive de l'userform dès que je rajoute, du code, textbox, etc.
    Par stephadm dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 16/07/2017, 14h25
  2. Réponses: 5
    Dernier message: 25/08/2008, 14h36
  3. Modification auto d'un label selon valeur textbox
    Par vérokit dans le forum VB.NET
    Réponses: 5
    Dernier message: 14/03/2008, 14h07
  4. [VBA-E] UserForm avec textbox "Dynamique"
    Par Alex_Kidd dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/05/2006, 00h29
  5. [VBA-E] userform TextBox
    Par mulanzia2003 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/03/2006, 09h18

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