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 :

Remplir une combobox et plusieur text box en fonction d'un Combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2018
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Décembre 2018
    Messages : 98
    Par défaut Remplir une combobox et plusieur text box en fonction d'un Combobox
    Bonjour,

    Je vais essayer d'expliquer mon problème.

    J'ai 2 classeurs, le premier qui me sert de base de donnée. Le second que je doit remplir où est mon UserForm4 et ma feuille que je doit compléter.

    Mon but :

    1) Dans le classeur de base, j'ai un onglet @Liste où en colonne A j'ai des chapitre de 00 à n en face j'ai des "types" d'informations lié à mes chapitres. Les numéros de chapitre doivent aller dans le Combobox1 sans doublons. Ca c'est fait.

    2) Ensuite, c'est là ou je bloque. Il faut lors de la sélection d'un chapitre dans ma Combobox1, que dans ma combobox2 les éléments contenus dans la feuille @Information colonne I qui se rapporte à mes "types" apparaisse. Je pense que c'est un tableau à 2 dimension qu'il faut mais je ne sais pas comment l'exploiter après

    Par exemple : Dans la feuille @Liste:

    00 Toto
    00 Tata
    01 Toto
    01 Titi

    Dans ma colonne I j'ai comme nom XXX_VV_Toto_001, XXX_VV_Tata_001,XXX_VV_Tata_002, XXX_VV_Tata_003,XXX_VV_Titi_001, etc..

    les XXX_VV_ sont identique dans toute la colonnes

    Je voudrait que c'est info soit dans la combobox2.

    3) Une fois choisi dans la combobox2, que les informations de la colonne A se trouve dans le TextBox16

    4) il faut que je trouve comment savoir si une case à une croix avec les bordures, pour dire que si y a, il me faut masquer ou rendre inactif un Textbox ou une Combobox je sais que c'est .Enabled, mais lire la bordure de la case c'est pas faire.

    Merci du coup de main.

    A chaque avancement je mettrais le code que j'ai réalisé
    Pour remplir ma ComboBox1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                    v_Sheet = "@Liste"
                    For i = 1 To Sheets(v_Sheet).Range("A65536").End(xlUp).Row
                        ComboBox1 = Sheets(v_Sheet).Range("A" & i)
                         If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Sheets(v_Sheet).Range("A" & i)
                         ComboBox1.Value = ""
                    Next i

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2018
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Décembre 2018
    Messages : 98
    Par défaut
    Bonjour,

    Comme promis voici un bout code qui me permet de remplir ma combobox7 et pas 2 comme énoncé précédemment, j'avance petit à petit.

    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
     
    Private Sub ComboBox1_Change()
        Dim i As Integer
        Dim j As Integer
     
        ComboBox7.Clear
        If k = "1" Then
            If ComboBox1.Value <> "" Then
                For i = 1 To UBound(lst_Liste)
                    If lst_Liste(i, 1) = ComboBox1.Value Then
                        For j = 1 To UBound(lst_Typical)
                            If lst_tab(j, 9) Like "*" & lst_Liste(i, 2) & "*" Then
                                ComboBox7.AddItem lst_tab(j, 9)
                            End If
                        Next j
                    End If
                Next i
            End If
        End If
     
    End Sub
    le K à été mis car comme je charge ma comboBox1 donc elle change, comme la première sub n'avais pas fini ça planté.

    Pour plus d'explication de se qui vas suivre
    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
    Function LettreColonne(NumCol As Long) As String
    'fonction qui donne la lettre en fonction du numero de colonne
    Dim reste, quotient As Long
    quotient = Int(NumCol / 26)
    reste = NumCol Mod 26
    If quotient = 0 And reste = 0 Then
        Exit Function
    End If
    If quotient = 0 Then
        LettreColonne = Chr(64 + reste)
    Else
        If reste = 0 Then
            quotient = quotient - 1
            If quotient = 0 Then
                LettreColonne = Chr(64 + 26)
            Else
                LettreColonne = Chr(64 + quotient) & Chr(64 + 26)
            End If
        Else
            LettreColonne = Chr(64 + quotient) & Chr(64 + reste)
        End If
    End If
    End Function
    Voici un autre morceau pour charger ma liste et mon combobox2 en fonction de la première
    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
     
     
    Public lst_tab As Variant
    Public lst_Liste As Variant
                     v_Sheet = "type"
                    DernLigne = Sheets(v_Sheet).Range("A" & Rows.Count).End(xlUp).Row
                    DernColonne = Sheets(v_Sheet).Cells(7, Cells.Columns.Count).End(xlToLeft).Column
                    Col = LettreColonne(CLng(DernColonne))
                    lst_tab = Sheets(v_Sheet).Range("A7:" & Col & DernLigne)
                    Application.DisplayAlerts = False
                    ActiveWorkbook.Close
                    Application.DisplayAlerts = True
     
    v_Sheet = "@Liste"
                    DernLigne = Sheets(v_Sheet).Range("A65536").End(xlUp).Row
                    lst_Liste = Sheets(v_Sheet).Range("A1:B" & DernLigne)
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
     
    Private Sub ComboBox7_Change()
     
        Dim i As Integer
     
            TextBox4.Value = ""
            TextBox16.Value = ""
            TextBox17.Value = ""
            TextBox17.Enabled = True
            TextBox5.Value = ""
            TextBox5.Enabled = True
            TextBox6.Value = ""
            TextBox6.Enabled = True
            TextBox7.Value = ""
            TextBox7.Enabled = True
            TextBox8.Value = ""
            TextBox8.Enabled = True
            TextBox9.Value = ""
            TextBox9.Enabled = True
            TextBox10.Value = ""
            TextBox10.Enabled = True
            TextBox11.Value = ""
            TextBox11.Enabled = True
            TextBox12.Value = ""
            TextBox12.Enabled = True
            TextBox13.Value = ""
            TextBox13.Enabled = True
            TextBox14.Value = ""
            TextBox14.Enabled = True
            TextBox15.Value = ""
            TextBox15.Enabled = True
     
     
        For i = 1 To UBound(lst_tab)
            If ComboBox7.Value = lst_tab(i, 9) Then
                TextBox16.Value = lst_tab(i, 2)
     
                If lst_tab(i, 15) = "" Then
                    TextBox17.Enabled = False
                Else
                    TextBox17.Value = lst_tab(i, 15)
                End If
     
                If lst_tab(i, 16) = "" Then
                    TextBox5.Enabled = False
                Else
                    TextBox5.Value = lst_tab(i, 16)
                End If
     
                If lst_tab(i, 17) = "" Then
                    TextBox5.Enabled = False
                Else
                    TextBox5.Value = lst_tab(i, 17)
                End If
     
                If lst_tab(i, 18) = "" Then
                    TextBox6.Enabled = False
                Else
                    TextBox6.Value = lst_tab(i, 18)
                End If
     
                If lst_tab(i, 19) = "" Then
                    TextBox7.Enabled = False
                Else
                    TextBox7.Value = lst_tab(i, 19)
                End If
     
                If lst_tab(i, 20) = "" Then
                    TextBox8.Enabled = False
                Else
                    TextBox8.Value = lst_tab(i, 20)
                End If
     
                If lst_tab(i, 21) = "" Then
                    TextBox9.Enabled = False
                Else
                    TextBox9.Value = lst_tab(i, 21)
                End If
     
                If lst_tab(i, 22) = "" Then
                    TextBox10.Enabled = False
                Else
                    TextBox10.Value = lst_tab(i, 22)
                End If
     
                If lst_tab(i, 23) = "" Then
                    TextBox11.Enabled = False
                Else
                    TextBox11.Value = lst_tab(i, 23)
                End If
     
                If lst_tab(i, 24) = "" Then
                    TextBox12.Enabled = False
                Else
                    TextBox12.Value = lst_tab(i, 24)
                End If
     
                If lst_tab(i, 25) = "" Then
                    TextBox13.Enabled = False
                Else
                    TextBox13.Value = lst_tab(i, 25)
                End If
     
                If lst_tab(i, 26) = "" Then
                    TextBox14.Enabled = False
                Else
                    TextBox14.Value = lst_tab(i, 26)
                End If
     
                If lst_tab(i, 27) = "" Then
                    TextBox15.Enabled = False
                Else
                    TextBox15.Value = lst_tab(i, 27)
                End If
            End If
        Next i    
     
    End Sub
    Si vous voyais des améliorations je suis preneur

    Maintenant la seconde partie de mon problème:

    Quand je clique sur CommandButton4, il faut mettre toutes les informations sur 1 ligne.

    Si on remplit dans l'ordre des chapitres(Combobox1) et les numéros de page(Textbox4) ça devrait bien se passer si les numéros de page s'incrémente automatique(Je ne sais pas faire).

    Mais je voudrait que si par exemple on revienne sur un chapitre déjà fait, avec un CheckBox1 activé que la ligne se mette à la bonne position, et renuméroté les pages qui suivent. Ou mettre en TextBox4 le premier numéros qui suit celui qui est déjà mis si le checkBox1 n'est pas activé.

    Pareil quand je clique CommandButton5 je voudrais que la ligne choisi soit effacé et que les numéros de pages qui suivent se mette à jour.

    Merci du coup de main

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

Discussions similaires

  1. Remplir une combobox avec un fichier texte
    Par pascb423 dans le forum VB.NET
    Réponses: 5
    Dernier message: 19/10/2016, 15h57
  2. [XL-2010] PB remplir une ComboBox avec les valeurs de plusieurs cellules sur la même lignes
    Par eviuss dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/05/2014, 07h01
  3. Affichage sur une text box en fonction combobox
    Par lucieaup dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/09/2013, 15h46
  4. [VB.NET] Remplir une ComboBox avec une requete sql
    Par graphicsxp dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/03/2005, 15h29
  5. Réponses: 2
    Dernier message: 26/07/2004, 13h34

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