1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

Alimenter Combobox et Textbox via Dictionary

Discussion dans 'Forum Excel' démarrée par cathodique, 6 Décembre 2018.

  1. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1579
    "J'aime" reçus :
    75
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Bonsoir,

    Je récupère dans un dictionnaire les données de la colonne B et celles de la colonne J.
    Je voudrais qu'au choix dans combobox1, j'ai la correspondance en textbox1.
    J'avoue que je ne maitrise pas bien le dictionnaire. Merci de m'aider.
    Code (Visual Basic):
    Option Explicit
    Dim ShBd As Worksheet, rng As Range, BD, d As Object, temp, temp1
    Private Sub UserForm_Initialize()
       Dim i As Integer
       '   Set UserActif = Me
       Set ShBd = ThisWorkbook.Sheets("Comptes")
       Set rng = ShBd.Range("A6:L" & ShBd.[A65000].End(xlUp).Row)

       BD = rng.Value
       Set d = CreateObject("Scripting.Dictionary")
       For i = LBound(BD) To UBound(BD)
          d(BD(i, 2)) = ""    'N°Facture
          If Not d.exists(BD(i, 2)) Then d.Add BD(i, 2), BD(i, 10)
       Next i
       temp = d.keys
       temp1 = d.items
    Me.ComboBox1.List = temp
    End Sub

    Private Sub ComboBox1_Change()
    If Me.ComboBox1.ListIndex = -1 Then Exit Sub
    'c'est ici que je bloque
    End Sub
     
     

    Pièces jointes:

  2. Chargement...

    Discussions similaires - Alimenter Combobox Textbox Forum Date
    XL 2010 alimenter plusieur textbox en fonction d'une combobox Forum Excel 28 Juin 2017
    Alimenter tableau via combobox et textbox Forum Excel 13 Février 2016
    Problème pour alimenter une TextBox qui dépend de comboBox liées Forum Excel 23 Novembre 2014
    Alimenter deux textbox à partir d'un choix combobox Forum Excel 4 Décembre 2012
    Alimenter Textbox avec Combobox Forum Excel 13 Novembre 2012

  3. ChTi160

    ChTi160 XLDnaute Barbatruc

    Inscrit depuis le :
    20 Février 2005
    Messages :
    5232
    "J'aime" reçus :
    147
    Travail/Loisirs :
    Pas grand Chose , faudrait pas que je me fatigue
    Habite à:
    Loin
    Utilise:
    Excel 2010 (PC)
  4. ChTi160

    ChTi160 XLDnaute Barbatruc

    Inscrit depuis le :
    20 Février 2005
    Messages :
    5232
    "J'aime" reçus :
    147
    Travail/Loisirs :
    Pas grand Chose , faudrait pas que je me fatigue
    Habite à:
    Loin
    Utilise:
    Excel 2010 (PC)
    Re
    une autre approche
    jean marie
     

    Pièces jointes:

    cathodique aime votre message.
  5. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1579
    "J'aime" reçus :
    75
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Bonsoir Jean Marie:),

    Content de te "revoir";). Exactement, c'est en rapport avec la discussion du lien que tu as mis dans ton post.
    En effet, dès que j'ai un moment de libre je creuse pour trouver une solution à mes soucis.
    Je penses qu'en récupérant le type d'opération au préalable, c-à-d dès la choix du No de facture.
    On pourrait éviter le plantage du passage d'un type à un autre. Enfin, c'est ce que je pense, il se peut que je me trompe.

    Merci.
    Bonne soirée.
     
  6. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1579
    "J'aime" reçus :
    75
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    C'est très bien aussi. Cependant, J'avoue aussi que je suis nul en collection.
    Je n'arrive à prendre du temps pour mieux apprendre le codage.
    Comme je suis parti sur un dictionnaire, je voudrais bien connaitre la solution avec dernier.
    Merci pour ton indulgence et surtout ton aide.

    Bonne soirée.:)
     
  7. ChTi160

    ChTi160 XLDnaute Barbatruc

    Inscrit depuis le :
    20 Février 2005
    Messages :
    5232
    "J'aime" reçus :
    147
    Travail/Loisirs :
    Pas grand Chose , faudrait pas que je me fatigue
    Habite à:
    Loin
    Utilise:
    Excel 2010 (PC)
    Ok
    Personnellement , je n utilise pas les dictionnaires.
    Amicalement
    Jean marie
     
  8. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1579
    "J'aime" reçus :
    75
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Merci beaucoup. Tu en as déjà fait beaucoup pour moi.
    J'apprécie beaucoup.
     
  9. ChTi160

    ChTi160 XLDnaute Barbatruc

    Inscrit depuis le :
    20 Février 2005
    Messages :
    5232
    "J'aime" reçus :
    147
    Travail/Loisirs :
    Pas grand Chose , faudrait pas que je me fatigue
    Habite à:
    Loin
    Utilise:
    Excel 2010 (PC)
    Bonjour Cath
    Bonjour le Fil ,le Forum
    Bonne journée
    jean marie
     
    Dernière édition: 7 Décembre 2018
  10. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1579
    "J'aime" reçus :
    75
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Bonjour,

    Je viens de trouver une solution ce matin en utilisant le dictionnaire.
    Donc voici le code pour le partage.
    Code (Visual Basic):
    Option Explicit
    Dim ShBd As Worksheet, rng As Range, BD, d As Object
    Private Sub UserForm_Initialize()
       Dim i As Integer
       '   Set UserActif = Me
       Set ShBd = ThisWorkbook.Sheets("Comptes")
       Set rng = ShBd.Range("A6:L" & ShBd.[A65000].End(xlUp).Row)

       BD = rng.Value
       Set d = CreateObject("Scripting.Dictionary")
       For i = LBound(BD) To UBound(BD)
          If Not d.exists(BD(i, 2)) Then d.Add BD(i, 2), BD(i, 10)
       Next i
       Me.ComboBox1.List = d.keys
    End Sub

    Private Sub ComboBox1_click()
       Dim i As Integer
       Me.TextBox1 = ""
       For i = 0 To d.Count - 1
          If d.keys()(i) = CInt(Me.ComboBox1) Then Me.TextBox1 = d.items()(i)
       Next i
    End Sub
    Bonne journée.
     
  11. ChTi160

    ChTi160 XLDnaute Barbatruc

    Inscrit depuis le :
    20 Février 2005
    Messages :
    5232
    "J'aime" reçus :
    147
    Travail/Loisirs :
    Pas grand Chose , faudrait pas que je me fatigue
    Habite à:
    Loin
    Utilise:
    Excel 2010 (PC)
    Ok
    Je te laisse finaliser .
    jean marie
     
  12. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1579
    "J'aime" reçus :
    75
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Bonjour Jean Marie:),
    J'apprécie beaucoup ton aide. Avant de partir, j'ai jeté un coup d’œil sur ton fichier.
    Comment te dire, je suis un peu gêné surtout que tu as dû passer du temps pour accomplir tout ce travail.
    Je l'avais expliqué dans le dernier fichier joint, à l'ouverture il faut que tous les contrôles soient vides.
    C-à-d rien dans la listbox. Je testerai ce soir et reviendrai te mettre au courant mais sur l'autre discussion.
    Stp, supprime ce post avec le fichier joint ou bien transfére-le dans la discussion d'origine.
    Merci beaucoup. Je dois y aller.
    Bonne journée.
     
  13. BOISGONTIER

    BOISGONTIER XLDnaute Barbatruc

    Inscrit depuis le :
    28 Septembre 2007
    Messages :
    7056
    "J'aime" reçus :
    472
    Habite à:
    Montigny
    Page d'accueil :
    Utilise:
    Excel 2003 (PC)
    Bonjour,

    Code (Text):
    Private Sub ComboBox1_click()
       Dim i As Integer
       Me.TextBox1 = ""
       For i = 0 To d.Count - 1
          If d.keys()(i) = CInt(Me.ComboBox1) Then Me.TextBox1 = d.items()(i)
       Next i
    End Sub
    Peut être remplacé par:

    Code (Text):
    Private Sub ComboBox1_click()
       Me.TextBox1 = d(CInt(Me.ComboBox1))
    End Sub
     
    Si on voulait voir dans le combobox 2 colonnes:

    Code (Text):
    Option Explicit
    Dim ShBd As Worksheet, Rng As Range, BD, d As Object, temp, temp1, Coll_Factures
    Private Sub UserForm_Initialize()
       Dim i As Integer, n, d
       Set ShBd = ThisWorkbook.Sheets("Comptes")
       Set Rng = ShBd.Range("A6:L" & ShBd.[A65000].End(xlUp).Row)
       BD = Rng.Value
       Me.ComboBox1.ColumnCount = 2
       Me.ComboBox1.ColumnWidths = "20;50"
       Set d = CreateObject("scripting.dictionary")
       n = 0
       For i = LBound(BD) To UBound(BD)
         If Not d.exists(BD(i, 2)) Then
           d(BD(i, 2)) = ""
           Me.ComboBox1.AddItem BD(i, 2)
           Me.ComboBox1.List(n, 1) = BD(i, 10)
           n = n + 1
         End If
       Next i
    End Sub

    Private Sub ComboBox1_click()
       If Me.ComboBox1.ListIndex = -1 Then Exit Sub
       Me.TextBox1.Value = Me.ComboBox1.Column(1)
    End Sub

    Boisgontier
     
    Dernière édition: 7 Décembre 2018
    erics83 et cathodique aiment cela.
  14. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1579
    "J'aime" reçus :
    75
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Bonsoir Boisgontier,

    Ça ne pouvait être que parfait. Chapeau bas:):).
    Merci beaucoup.

    Bon week-end à toutes et à tous. ;)
     
  15. Si...

    Si... XLDnaute Barbatruc

    Inscrit depuis le :
    7 Octobre 2010
    Messages :
    2827
    "J'aime" reçus :
    446
    Bonsoir

    Tiré de mon chapeau...;)
    Avec un Tableau, on a simplement :
    Code (Visual Basic):
    Dim R As Range, D
    Private Sub UserForm_Initialize()
      Set D = CreateObject("scripting.dictionary")
      For Each R In [BD[N°]]: D(R.Value) = "": Next
      ComboBox1.List = D.keys
    End Sub
    Private Sub ComboBox1_click()
      If ComboBox1.ListIndex > -1 Then TextBox1 = [BD[N°]].Find(ComboBox1)(1, 9)
    End Sub
    En plus, comme depuis un bon moment tu te bats avec un projet, voici un exemple* de méthodes (Filtre, Dico, Module de Classes, création de formulaire sans doublons inutiles …) appliquées à ta gestion des factures (demande sur un autre fil).
    * ce n'est pas la création qui est programmée mais des modifications (d'ailleurs lesquelles ?) !
     

    Pièces jointes:

  16. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1579
    "J'aime" reçus :
    75
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Bonjour Si...:),

    Je tire chapeau à ton chapeau, il est bien rempli:p. Je plaisante. Merci beaucoup pour ton aide.
    J'ai téléchargé tes 2 fichiers que j'étudierai à tête reposée.
    En effet, il y a un moment que je suis sur ce projet pour aider bénévolement et gracieusement une association.
    J'arrive à la fin de ce projet, c'est le dernier formulaire de modification en cas d'erreur de saisie avec une contrainte:
    Vérification du montant d'une facture avant modification des lignes correspondantes dans la base de données.
    La colonne que j'ai rajouté (dépenses/recettes), c'est juste pour me faciliter le traitement des données.

    Encore merci pour tes bonnes intentions, j'apprécie beaucoup.

    Bonne semaine.;)
     
  17. Si...

    Si... XLDnaute Barbatruc

    Inscrit depuis le :
    7 Octobre 2010
    Messages :
    2827
    "J'aime" reçus :
    446
    Re

    Merci pour ton retour. :)

    Je précise quand même, que mes propositions s'adressent à tous les demandeurs qui seraient intéressés.

    Bon courage pour la suite de ton projet...
     

Partager cette page