Alimenter Combobox

Bonjour,

Grâce à ce forum, j'ai peu alimenter mes Combobox. Mais le problème est que lorsque que je clic que l'une d'elles, toutes les données ne s'y mette pas.

Voici le code:

Dim n%, i%, k0%, k1%

With Worksheets("para")

n = .Cells(1, .Columns.Count).End(xlToLeft).Column

For i = 1 To n

If .Cells(1, i) = "centre" Then

k0 = i

ElseIf .Cells(1, i) = "agent" Then

k1 = i

End If

Next i

n = .Cells(.Rows.Count, n).End(xlUp).Row

For i = 2 To n

If k0 > 0 Then

ComboBox2.AddItem .Cells(i, k0)

ComboBox3.AddItem .Cells(i, k0)

End If

If k1 > 0 Then ComboBox1.AddItem .Cells(i, k1)

Next i

End With

Pouvez-vous m'aider?

Cordialement,

Guillaume

Bonsoir Guillaume, bonsoir le forum,

Mais le problème est que lorsque que je clic que l'une d'elles, toutes les données ne s'y mette pas : pas très clair !...

Ton code semble correct même si utiliser la même variable n pour deux choses différentes n'est pas forcément une bonne idée. Reste à savoir où il est placé ? Il est dommage que tu n'est pas mis le code complet...

À tout hasard, essaie comme ça, avec Value (même si je doute fort que ça marche) :

Sub Macro1()
Dim COL%, i%, k0%, k1%, LI%

With Worksheets("para")
    COL = .Cells(1, .Columns.Count).End(xlToLeft).Column
    For i = 1 To COL
        If .Cells(1, i) = "centre" Then
            k0 = i
        ElseIf .Cells(1, i) = "agent" Then
            k1 = i
        End If
    Next i
    LI = .Cells(.Rows.Count, COL).End(xlUp).Row
    For i = 2 To LI
        If k0 > 0 Then
            ComboBox2.AddItem .Cells(i, k0).Value
            ComboBox3.AddItem .Cells(i, k0).Value
        End If
        If k1 > 0 Then ComboBox1.AddItem .Cells(i, k1).Value
    Next i
End With
End Sub

Sans le fichier, difficile de dire mieux...

Bonjour ThauThème,

Merci pour ta réponse, mais cela ne change rien.

Je t'ai mis en pj mon fichier. Lorsque tu es sur l'accueil, clic que "prêt matériel" et ensuite tape n'importe quoi dans numéro de commande (c'est pour débloquer l'userform).

A partir de là, lorsque tu déroule les combobox, tu t’aperçois qu'elles ne sont pas complètes par rapport à la feuil "para".

24gpmi-v2-0.xlsm (83.61 Ko)

bonsoir Guithou51, thauThème et le forum

essai ceci dans l'initialisation de l'userform1

Private Sub UserForm_Initialize()

'Alimenter la combobox, le 14/11/2016 par Guillaume
'si la dernière ligne est supérieure à 256 déclarer i et x en Integer
 Dim n%, i%, k0%, k1%
    With Worksheets("para")
        n = .Cells(1, .Columns.Count).End(xlUp).Row + 1
        For i = 1 To n
            If .Cells(1, i) = "centre" Then
                k0 = i
            ElseIf .Cells(1, i) = "agent" Then
                k1 = i
            End If
        Next i
        n = .Cells(.Rows.Count, n).End(xlUp).Row + 1
        For i = 2 To n
            If k0 > 0 Then
                ComboBox2.AddItem .Cells(i, k0)
                ComboBox3.AddItem .Cells(i, k0)
            End If
            If k1 > 0 Then ComboBox1.AddItem .Cells(i, k1)
        Next i
    End With

'Régler largeur des colonnes de la ListBox le 22/12/2016, par Guillaume
ListBox1.ColumnWidths = "100;30;500"

End Sub

et bon Noël

Bonjour grisan29,

Merci pour ta formule.

Mais dsl ça ne marche pas. Lorsque je change mon intitulé (par ex: agent en agres qui est dans la feuil "para"), la combobox ne me donne aucunes données.

Bonsoir le fil, bonsoir le forum,

Je ne comprends pas où tu veux en venir avec ton code ? Mais l'erreur est là :

n = .Cells(.Rows.Count, n).End(xlUp).Row + 1

Cette variable n doit être égale à k0 ou k1 mais avec ta conditionnelle Si > 0 ça fout la m***de.

Essaie comme ça :

Dim COL%, I%, LI%
    With Worksheets("para")
        COL = .Cells(1, .Columns.Count).End(xlUp).Row + 1
        For I = 1 To COL
            If .Cells(1, I) = "centre" Then
                LI=.Cells(Rows.Count, I).End(xlUp).Row 
                Me.ComboBox2.List = .Range(.Cells(2, I), .Cells(LI, I).Value
                Me.ComboBox3.List = .Range(.Cells(2, I), .Cells(LI, I).Value
            ElseIf .Cells(1, I) = "agent" Then
                LI=.Cells(Rows.Count, I).End(xlUp).Row 
                Me.ComboBox1.List = .Range(.Cells(2, I), .Cells(LI, I).Value
            End If
        Next i
    End With

Bonjour,

Dsl le code ne fonctionne pas, mais merci tout de même.

Oui effectivement c'est bien le "n" qui fout la merde.

Ce que je souhaite, c'est d'alimenter les combobox par recherche de la désignation de la valeur. Pour si je déplace la colonne dans "para", cela ne change rien.

J'espère que tu comprends un peu mon désire...

Bonjour,

Je comprends tout à fait maintenant ce que tu veux faire avec le code...

Comme l'exemple que tu as fourni ne correspondait pas avec le code (une seule ComboBox ?), je navet (si, si, dans ce cas on peut...) pas testé. Il manquait juste des parenthèses pour fermer les Range.

Le code corrigé et testé (avec trois ComboBoxes) :

Private Sub UserForm_Initialize()

Dim COL%, I%, LI%
With Worksheets("para")
    COL = .Cells(1, .Columns.Count).End(xlUp).Row + 1
    For I = 1 To COL
        If .Cells(1, I) = "centre" Then
            LI = .Cells(Rows.Count, I).End(xlUp).Row
            Me.ComboBox2.List = .Range(.Cells(2, I), .Cells(LI, I)).Value
            Me.ComboBox3.List = .Range(.Cells(2, I), .Cells(LI, I)).Value
        ElseIf .Cells(1, I) = "agent" Then
            LI = .Cells(Rows.Count, I).End(xlUp).Row
            Me.ComboBox1.List = .Range(.Cells(2, I), .Cells(LI, I)).Value
        End If
    Next I
End With
End Sub

Sinon, prend l'habitude quand un code ne marche pas, de dire quel est le message d'erreur et d'indiquer la ligne de code qui plante et qui est surlignée de jaune... Parce que "ça marche pas", ça ne nous aide pas beaucoup...

Super ça fonctionne nickel , encore merci.

Oui c'est vrai je n'ai pas vraiment précisé l'erreur. J'y penserai pour la prochaine fois.

A bientôt

Cordialement,

Guillaume

Rechercher des sujets similaires à "alimenter combobox"