VBA remplir une combobox à partir de plusieurs cellules

Résolu
Angelo -  
 Angelo -
Bonjour,

J'essaie de remplir une combobox à partir de plusieurs cellules. Cela fonctionne dans mon premier onglet mais pas pour le deuxième.

Voici le code pour lequel ça bug :

Dim Plage As String
Dim NumCtrt As String
Dim Lig As Integer

NumCtrt = ""
Call ZoneCombinée8_Remplir("Fiche", "u442118")
'Worksheets("ZoneCombinée8").Select
'Worksheets("ZoneCombinée8").Range("B2").Select
'Worksheets("ZoneCombinée8").Range(Selection, Selection.End(xlDown)).Select
'Plage = Selection.Address
Plage = Range("B1:B5").Address
ComboBox2.ListFillRange = "ZoneCombinée8!" & Plage

Sheets("ZoneCombinée8").Visible = False

'NumCtrt = ComboBox2.Value

With Sheets("Table")
Lig = .Columns(4).Cells.Find(NumCtrt, lookat:=xlWhole).Row
End With

Pour le code ci-dessous cela fonctionne :

Dim Plage As String
Dim NumCtrt As String
Dim Lig As Integer

NumCtrt = ""

'(Worksheets("ZoneCombinée8").Select
'Worksheets("ZoneCombinée8").Range("A2").Select
'Worksheets("ZoneCombinée8").Range(Selection, Selection.End(xlDown)).Select
'Plage = Selection.Address
Plage = Range("A1:A5").Address
ComboBox1.ListFillRange = "ZoneCombinée8!" & Plage

NumCtrt = ComboBox1.Value

With Sheets("Table")
Lig = .Columns(4).Cells.Find(NumCtrt, lookat:=xlWhole).Row
End With
Sheets("Ajout").Range("numCT") = NumCtrt
Sheets("Ajout").Range("Produit") = Sheets("Table").Range("E" & Lig)
Sheets("Ajout").Range("encours") = Sheets("Table").Range("F" & Lig)
Sheets("Ajout").Range("delegation") = Sheets("Table").Range("G" & Lig)
Sheets("Ajout").Range("type") = Sheets("Table").Range("H" & Lig)
Sheets("Ajout").Range("comment") = Sheets("Table").Range("I" & Lig)
Sheets("ZoneCombinée8").Visible = False

Comme vous pouvez le voir, pour l'instant j'ai défini limité le contenu de la combo au données présente dans les 5premières celulles. J'aimerais également rendre la taille de la combo variable en fonction du nombre de données présentes dans la colonne mais ce que j'utilise ne fonctionne pas non plus j'ai mis le code que j'ai utilisé en commentaire juste au dessus. Si vous avez des idées n'hésitez pas. J'ai déjà eu l'occasion de programmer mais je débute en VBA et je ne suis pas encore à l'aise avec les fonctions propre à VBA.

1 réponse

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Pour le code ci-dessous cela fonctionne : z'etes sur !!!!!

    manque le debut et la fin, mais sur que ca marche pas puisque vous melangez le remplissage de la combobox et le choix de cette combobox

    A+
    0
    1. Angelo
       
      Bizarre mais je vous assure que cela fonctionne. Il affiche les valeurs et lorsque je sélectionne il mets à jours les valeurs de certaines cellule en fonction du choix appliqué. Vous conseilleriez d'utiliser quoi?

      Un grand merci !
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      la partie de code que vous avez montree est ecrite dans quel procedure ??


      parce que ceci est une bizarerie

      ComboBox1.ListFillRange = "ZoneCombinée8!" & Plage

      NumCtrt = ComboBox1.Value




      le mieux serait de mettre votre fichier sans donnees sensible a dispo sur https://www.cjoint.com/
      0
      1. Angelo > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
         
        Dans le code de changement de la combo :

        Private Sub ComboBox1_Change()
        Dim Plage As String
        Dim NumCtrt As String
        Dim Lig As Integer

        NumCtrt = ""

        '(Worksheets("ZoneCombinée8").Select
        'Worksheets("ZoneCombinée8").Range("A2").Select
        'Worksheets("ZoneCombinée8").Range(Selection, Selection.End(xlDown)).Select
        'Plage = Selection.Address
        Plage = Range("A1:A5").Address
        ComboBox1.ListFillRange = "ZoneCombinée8!" & Plage

        NumCtrt = ComboBox1.Value

        With Sheets("Table")
        Lig = .Columns(4).Cells.Find(NumCtrt, lookat:=xlWhole).Row
        End With
        Sheets("Ajout").Range("numCT") = NumCtrt
        Sheets("Ajout").Range("Produit") = Sheets("Table").Range("E" & Lig)
        Sheets("Ajout").Range("encours") = Sheets("Table").Range("F" & Lig)
        Sheets("Ajout").Range("delegation") = Sheets("Table").Range("G" & Lig)
        Sheets("Ajout").Range("type") = Sheets("Table").Range("H" & Lig)
        Sheets("Ajout").Range("comment") = Sheets("Table").Range("I" & Lig)
        Sheets("ZoneCombinée8").Visible = False

        End Sub
        0
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Ben oui, c'est une bizarerie. Il ne sert a rien de faire ceci

      Plage = Range("A1:A5").Address
      ComboBox1.ListFillRange = "ZoneCombinée8!" & Plage


      dans cette procedure

      cela doit etre fait avant dans une procedure d'initialisation et si c'est deja fait, faut enlever ces deux lignes
      0
    4. Angelo
       
      C'est bon j'ai trouvé ce qu'il n'allait pas. Un grand merci pour votre aide !
      0